Wie erstelle ich ein verschiebbares .deb-Paket mit darin enthaltenen Maintainer-Skripten?

Wie erstelle ich ein verschiebbares .deb-Paket mit darin enthaltenen Maintainer-Skripten?

Ich habe ein Debian-Paket mit einem Postinst-Skript, das symbolische Links erstellt. Wenn ich versuche, das .debPaket 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

dpkgversucht, das Postinst-Skript in zu finden /var/lib/dpkg/info. Was ich nicht verstehe, ist, dass laut dpkgManpage die Verwendung der Option auch in --rootändert. Warum versucht es dann, das Postinst-Skript in zu finden ?admindirnewdir/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=newdirOption installiert. Dabei trat kein Fehler auf.

Bitte lassen Sie mich wissen, wie ich das hinbekomme.

Antwort1

dpkghabe 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: dpkgfindet 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-minimalnicht 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.

verwandte Informationen