У меня есть пакет 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
странице руководства использование option также --root
изменяет admindir
на . Тогда почему он пытается найти скрипт postinst в ?newdir/var/lib/dpkg
/var/lib/dpkg/info/
Я попробовал создать другой пакет, который не содержит этот скрипт поддержки, и установил его, используя ту же -i --root=newdir
опцию, и это не выдало никакой ошибки.
Пожалуйста, дайте мне знать, как это сделать.
решение1
dpkg
нашел скрипт postinst в /your/root/var/lib/dpkg/info
— попытался запустить его. Похоже, проблема вотсутствует загрузчик: dpkg
находит скрипт postinst, но затем получает ошибку «Нет такого файла или каталога» при попытке его выполнить, поскольку программа-интерпретатор для скрипта отсутствует (например, это скрипт Python, который python-minimal
не установлен). При использовании альтернативного instdir интерпретатор должен присутствовать в instdir (dpkg выполняет chroot в instdir перед запуском скриптов пакетов).
Если интерпретатор не предоставляется пакетом с тегом Essential
, убедитесь, что ваш пакет зависит от пакета, который предоставляет интерпретатор.