如何在控制脚本中获取当前安装的debian文件的完整路径?

时间:2013-03-29 07:32:07

标签: debian deb

我想在debian的控制文件中添加一个显示当前正在安装的debian文件的md5sum的功能:preinst,有没有办法获取debian文件的完整路径?

1 个答案:

答案 0 :(得分:2)

这很难。

Dpkg不会以任何方式,通过环境变量或其他方式将当前安装文件的名称导出到维护者脚本,并且在维护者脚本运行时,它甚至没有原始.deb的句柄。文件已经存在,所以即使/proc/$pid检查也行不通。你可以通过查看apt的缓存目录(配置项Dir::Cache,通常是/var/cache/apt/)来创建一个“有时”工作的东西,其名称类似于

${DPKG_MAINTSCRIPT_PACKAGE}_packageversion_${DPKG_MAINTSCRIPT_ARCH}.deb

..在构建时硬编码当前软件包版本,省略任何epoch字段,导致dpkg也不会在preinst中为您提供。如果您使用APT进行安装,这将在大部分时间内工作;如果你使用dpkg -i或其他东西,那你就不走运了。

更好的答案可能是,你为什么要那样做?可能有更好的方法来解决你的问题。