我有一个 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
,请确保您的包依赖于提供解释器的包。