![如何制作可重定位的 .deb 包,其中包含维护者脚本?](https://linux22.com/image/95126/%E5%A6%82%E4%BD%95%E5%88%B6%E4%BD%9C%E5%8F%AF%E9%87%8D%E5%AE%9A%E4%BD%8D%E7%9A%84%20.deb%20%E5%8C%85%EF%BC%8C%E5%85%B6%E4%B8%AD%E5%8C%85%E5%90%AB%E7%BB%B4%E6%8A%A4%E8%80%85%E8%84%9A%E6%9C%AC%EF%BC%9F.png)
我有一个 Debian 软件包,其中包含用于创建符号链接的 postinst 脚本。当我尝试安装该.deb
软件包时--root
(因为我想更改该软件包的安装位置),出现以下错误:
dpkg (subprocess): unable to execute installed post-installation script: No such file or directory
subprocess installed post-installation script returned error exit status 2
dpkg
正在尝试在 中找到 postinst 脚本/var/lib/dpkg/info
。我无法理解的是,根据dpkg
手册页,使用--root
选项也会更改admindir
为newdir/var/lib/dpkg
。那么为什么它试图在 中查找 postinst 脚本/var/lib/dpkg/info/
?
我尝试创建另一个不包含此维护者脚本的包,并使用相同的-i --root=newdir
选项安装它,并且不会引发任何错误。
请让我知道如何才能完成这项工作。
答案1
dpkg
确实找到了 postinst 脚本/your/root/var/lib/dpkg/info
- 它试图运行它。看起来问题是缺少装载机:dpkg
找到 postinst 脚本,但在尝试执行它时收到“没有这样的文件或目录”错误,因为该脚本的解释程序不存在(例如,它是一个 Python 脚本并且python-minimal
未安装)。使用替代 instdir,解释器必须位于 instdir 下(在运行包脚本之前,dpkg chroots 到 instdir)。
如果标记的包未提供解释器Essential
,请确保您的包依赖于提供解释器的包。