Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在控制脚本中获取当前正在安装的debian文件的完整路径?_Debian_Deb - Fatal编程技术网

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

如何在控制脚本中获取当前正在安装的debian文件的完整路径?,debian,deb,Debian,Deb,我想添加一个功能,在debian的控制文件中显示当前安装debian文件的md5sum:preinst,有没有办法获得debian文件的完整路径?这将很困难 Dpkg不会以任何方式(通过环境变量或其他方式)将当前安装文件的名称导出到maintainer脚本,并且在运行maintainer脚本时,它甚至不再具有原始.deb文件的句柄,因此即使是/proc/$pid检查也无法工作。您可以通过在apt的缓存目录(配置项Dir::cache,通常是/var/cache/apt/)中查找名为 ${DPKG

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

这将很困难

Dpkg不会以任何方式(通过环境变量或其他方式)将当前安装文件的名称导出到maintainer脚本,并且在运行maintainer脚本时,它甚至不再具有原始.deb文件的句柄,因此即使是
/proc/$pid
检查也无法工作。您可以通过在apt的缓存目录(配置项
Dir::cache
,通常是
/var/cache/apt/
)中查找名为

${DPKG_MAINTSCRIPT_PACKAGE}_packageversion_${DPKG_MAINTSCRIPT_ARCH}.deb
..您在构建时硬编码当前包版本,省略任何历元字段,因为dpkg也不会在preinst中提供。如果您正在使用APT进行安装,这将在大部分时间内起作用;如果您使用dpkg-i或其他东西,您就不走运了


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

我们已将我们的应用程序分发给alpha测试用户,但他未能安装我们的应用程序并将失败的屏幕截图发送给我们,我们怀疑他们是否下载了损坏的deb文件。如果我们在preinst脚本中打印debian文件的MD5总和,这将对我们有很大帮助。为什么不让这个用户直接获得他试图安装的
.deb
的MD5总和?一个更好的解决方案也是通过APT分发签名的deb;这样,您和用户就可以确保软件包的内容不变(并且您也可以获得安全方面的好处)。我们正在iPhone平台上开发一款越狱应用程序。alpha用户对debian系统知之甚少,要教他们在iPhone上以更简单的方式说出deb文件的MD5总和并不容易。我敢肯定Cydia已经分发了签名软件包。如果是这样的话,您和用户可以确保在安装时得到相同的东西。