我想在debian的控制文件中添加一个显示当前正在安装的debian文件的md5sum的功能:preinst,有没有办法获取debian文件的完整路径?
答案 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
或其他东西,那你就不走运了。
更好的答案可能是,你为什么要那样做?可能有更好的方法来解决你的问题。