"E: Unterprozess / usr / bin / dpkg hat einen Fehlercode (1) zurückgegeben." Was bedeutet das?


31

Ich habe diese Meldung mehrmals gesehen, wenn ein Problem beim Installieren, Aktualisieren oder Entfernen einer Software aufgetreten ist. Ich frage mich jedoch, was dies bedeutet und was noch wichtiger ist, ob es möglich ist , das Problem zu beheben .

(Reading database ... 81657 files and directories currently installed.)
 Removing mongodb-10gen ...
 arg: remove
 invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
 dpkg: error processing mongodb-10gen (--remove):
  subprocess installed pre-removal script returned error exit status 100
 invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
 dpkg: error while cleaning up:
  subprocess installed post-installation script returned error exit status 100
 Errors were encountered while processing:
  mongodb-10gen
 E: Sub-process /usr/bin/dpkg returned an error code (1)

(das obige ist nur ein Beispiel, nicht mein eigentliches Problem)


2
Wenn Sie es versucht haben apt-get install (something)und diese Fehlermeldung wie ich erhalten haben, war die Lösung für mich apt-get upgrade (something).
PJ Brunet

Antworten:


30

Diese Nachricht ist generisch. Es bedeutet nur, dass die dpkgvon apt/ aufgerufene Instanz apt-getaus irgendeinem Grund fehlgeschlagen ist. Es erklärt nicht warum, wie oder gibt Hinweise, wie man es löst. Als Diagnosemeldung ist es nicht sinnvoll.

Sie müssen die Zeilen vor der Meldung lesen (manchmal eine ganze Reihe von Zeilen), um den tatsächlichen Fehler zu finden, der Sie daran hindert, die Installation abzuschließen.

Ja, aber wie löse ich das?

Es gibt keinen einzigen Weg, dies zu lösen. Es gibt so viele Gründe, warum dies passieren kann, dass es sinnlos ist, sie alle in einem einzigen Beitrag aufzulisten. Jeder einzelne Umstand ist für dieses Paket / diese Umgebung fast einzigartig.

Aber es gibt Erlösung. Die Tatsache, dass Sie diese Nachricht sehen, bedeutet, dass sich wahrscheinlich relevantere Informationen in den Zeilen vor der Nachricht befinden. Zur Veranschaulichung verwende ich ein Beispiel:

(Reading database ... 81657 files and directories currently installed.)
 Removing mongodb-10gen ...
 arg: remove
 invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
 dpkg: error processing mongodb-10gen (--remove):
  subprocess installed pre-removal script returned error exit status 100
 invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
 dpkg: error while cleaning up:
  subprocess installed post-installation script returned error exit status 100
 Errors were encountered while processing:
  mongodb-10gen
 E: Sub-process /usr/bin/dpkg returned an error code (1)

Um nun das Problem zu finden, müssen Sie rückwärts lesen:

  • E: Sub-process /usr/bin/dpkg returned an error code (1)sagt mir nichts nützliches. Also mach weiter.
  • Errors were encountered while processing: mongodb-10gensagt mir nur was paket probleme hat. Ist nützlich aber nicht genug.
  • subprocess installed post-installation script returned error exit status 100: dies sagt mir, dass das fehlgeschlagene Skript das war postinst, das nach der Installation ausgeführt wurde. Dies ist in einigen Situationen nützlich, in diesem jedoch nicht.
  • dpkg: error while cleaning up: hier nix brauchbares.
  • invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.BINGO! Dies sagt uns, dass invoke-rc.deine Binärdatei, die das Init-Skript in den meisten Debian-ähnlichen Systemen steuert, fehlgeschlagen ist. Es ist fehlgeschlagen, weil das /etc/init.d/mongodbSkript nicht gefunden werden konnte . Das ist schlecht. Wir müssen es erstellen oder von einem anderen Ort kopieren, damit es wieder funktioniert. Das erneute Installieren des Pakets ist normalerweise auch eine Option für file not foundFehler.

    In diesem Fall ist das Melden eines Fehlers nicht erforderlich, da es wahrscheinlich ist, dass wir das Skript entfernt haben. Wenn Sie jedoch völlig sicher sind, dass Sie die Datei nicht berührt haben (a debsums -slasollte dies bestätigen), melden Sie einen Fehler.

Also, was genau brauchst du, um Hilfe zu bekommen? Idealerweise ist die komplette Ausgabe des Problems. Es ist auch hilfreich, die Ausgabe von sudo dpkg -Cund sudo apt-get checkund die Ausgabe von apt-cache policy package1 package2...where "package1 package2 ..." enthält alle Pakete mit Problemen.


Als Diagnosemeldung ist es hilfreich, wenn Sie den gesamten Fehler gelesen haben (bei der Verarbeitung sind Fehler aufgetreten: mongodb-10gen). Aus diesem Grund wird er als E und nicht als Fehler aufgeführt
mchid 22.03.15

1
@mchid aber was hat den Fehler verursacht? Es gibt Ihnen nicht den blinden Anhaltspunkt.
Braiam

@mchid ja, wie kann ich das herausfinden, wenn ich gerade lese Errors were encountered while processing: mongodb-10gen? Um das Problem zu lösen, ist diese Linie wertlos .
Braiam

Mein schlechtes Ich dachte, du suchst nur nach einer Möglichkeit, das Problem zu beheben ("ist es möglich, es zu lösen") Ich denke, ich habe das aus dem Zusammenhang gerissen.
22.

BTW, laufen sudo touch /etc/init.d/mongodbund dann laufen sudo apt-get purge mongodb-10gen, um das Problem zu beheben. Ich habe dies getestet und solange die Datei existiert (/etc/init.d/mongodb), fährt dpkg fort, auch wenn die Datei leer ist, was touch macht (erstellt eine leere Datei).
29.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.