Ich habe ein Debian-Paket mit einem Postinst-Skript, das symbolische Links erstellt. Wenn ich versuche, das .deb
Paket zu installieren --root
(da ich den Speicherort ändern möchte, an dem das Paket installiert werden soll), erhalte ich diesen Fehler:
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
versucht, das Postinst-Skript in zu finden /var/lib/dpkg/info
. Was ich nicht verstehe, ist, dass laut dpkg
Manpage die Verwendung der Option auch in --root
ändert. Warum versucht es dann, das Postinst-Skript in zu finden ?admindir
newdir/var/lib/dpkg
/var/lib/dpkg/info/
Ich habe versucht, ein anderes Paket zu erstellen, das dieses Maintainer-Skript nicht enthält, und es mit derselben -i --root=newdir
Option installiert. Dabei trat kein Fehler auf.
Bitte lassen Sie mich wissen, wie ich das hinbekomme.
Antwort1
dpkg
habe das Postinst-Skript gefunden /your/root/var/lib/dpkg/info
— es hat versucht, es auszuführen. Es sieht so aus, als ob das Problem einfehlender Lader: dpkg
findet das Postinst-Skript, erhält dann aber beim Versuch, es auszuführen, die Fehlermeldung „Keine solche Datei oder kein solches Verzeichnis“, weil das Interpreterprogramm für das Skript nicht vorhanden ist (z. B. ist es ein Python-Skript und python-minimal
nicht installiert). Bei einem alternativen Instdir muss der Interpreter unter dem Instdir vorhanden sein (dpkg führt vor dem Ausführen von Paketskripten einen Chroot in das Instdir durch).
Wenn der Interpreter nicht von einem mit gekennzeichneten Paket bereitgestellt wird Essential
, stellen Sie sicher, dass Ihr Paket von dem Paket abhängt, das den Interpreter bereitstellt.