Das .preinst-Skript des Pakets schlägt aus irgendeinem Grund fehl.
Um herauszufinden, warum, überprüfen Sie das Skript in /var/lib/dpkg/info/PACKAGENAME.preinst
Wenn Sie genau sehen möchten, in welcher Zeile das Skript fehlschlägt, bearbeiten Sie das .preinst-Skript und fügen Sie es set -x
unmittelbar nach der #!
Zeile hinzu. Dadurch wird die Ausführungsverfolgung im Skript aktiviert.
HINWEIS: Dies setzt voraus, dass das .preinst-Skript ein Shell-Skript ist (entweder posix sh oder bash). Fast alle .preinst- (und .postinst-, .prerm- und .postrm-) Skripte sind Shell-Skripte, müssen es aber nicht sein, sie können auch ausführbar sein. zB auf meinem Haupt-Desktop-Computer mit 9104 installierten Paketen sind 14 Perl-Skripte, 1 ist eine kompilierte ausführbare Datei (Bashs Preinst - es kann nicht davon ausgegangen werden, dass bereits eine funktionierende Shell installiert ist), und alle anderen sind Shell-Skripte ... 9041 sind POSIX-Shell-Skripte, 63 sind Bash-Skripte. Wenn es sich bei .preinst um Perl oder Python oder etwas anderes handelt, müssen Sie herausfinden, wie Sie den Debugging- oder Ausführungs-Trace-Modus oder ähnliches in dieser Sprache aktivieren.
Dann renne dpkg --configure --pending
.
Dies führt dazu, dass dpkg versucht, das halbinstallierte Paket zu konfigurieren. Installieren Sie es NICHT mit dpkg -i
, da dies Ihr bearbeitetes .preinst-Skript mit der Version im .deb-Paket überschreibt.
Dies kann Ihnen genügend Informationen geben, um das Problem zu beheben. Es kann etwas Einfaches sein, wie ein unerwarteter oder nicht erfasster Exit-Code aus einem Programm (die meisten .preinst-Skripte usw. haben set -e
, um sie beim ersten Fehler zu beenden) oder die Annahme, dass bereits ein Verzeichnis vorhanden ist (und dies kann auf eine nicht deklarierte Abhängigkeit zurückzuführen sein in der Debian / Control-Datei des Pakets - dh es sollte von foo abhängen, tut es aber nicht. installiere einfach foo trotzdem)
Sobald es behoben ist, führen Sie es dpkg --configure --pending
erneut aus und das Paket sollte ordnungsgemäß installiert sein.
Wenn das .preinst-Skript fehlerhaft ist, besteht eine vernünftige Wahrscheinlichkeit, dass auch die .postinst- (und / oder .prerm- und .postrm-) Skripte vorhanden sind. Möglicherweise müssen Sie sie auch reparieren.
Vergessen Sie nicht, einen Fehlerbericht an denjenigen zu senden, der das Paket erstellt hat, damit er es beheben kann.