"E: Le sous-processus / usr / bin / dpkg a renvoyé un code d'erreur (1)" Qu'est-ce que cela signifie?

31

J'ai vu ce message plusieurs fois chaque fois que quelqu'un a un problème d'installation, de mise à niveau ou de suppression d'un logiciel, mais je me demande, qu'est-ce que cela signifie et, plus important encore, est-il possible de le résoudre?

(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)

(ce qui précède n'est qu'un exemple, pas mon problème réel)

Braiam
la source
2
Si vous avez essayé apt-get install (something)et que vous avez reçu ce message d'erreur comme je l'ai fait, la solution pour moi était apt-get upgrade (something).
PJ Brunet

Réponses:

30

Ce message est générique. Cela signifie simplement que l' dpkginstance appelée par apt/ a apt-getéchoué pour une raison quelconque. Il n'explique pas pourquoi, comment ou donne des conseils sur la façon de le résoudre. En tant que message de diagnostic, il n'est pas utile.

Vous devez lire les lignes avant le message (parfois un certain nombre d'entre elles) pour trouver la véritable erreur qui vous empêche de terminer l'installation.

Ouais, mais comment le résoudre?

Il n'y a pas de solution unique pour le résoudre. Il y a tellement de raisons pour lesquelles cela peut se produire qu'il est vain d'essayer de les répertorier toutes dans un seul message. Chaque circonstance est presque unique à ce package / environnement.

Mais il y a la rédemption. Le fait que vous voyez ce message signifie qu'il y a probablement des informations plus pertinentes dans les lignes avant le message. À des fins d'illustration, j'utiliserai un exemple:

(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)

Maintenant, pour trouver le problème, vous devez lire à l'envers:

  • E: Sub-process /usr/bin/dpkg returned an error code (1)ne me dit rien d'utile. Alors continuons.
  • Errors were encountered while processing: mongodb-10genme dit simplement quel paquet a des problèmes. Est utile mais pas suffisant.
  • subprocess installed post-installation script returned error exit status 100: cela me dit que le script qui a échoué était le postinst, celui exécuté en post-installation. Cela sera utile dans certaines situations, mais pas dans celui-ci.
  • dpkg: error while cleaning up: rien d'utile ici.
  • invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.BINGO! Cela nous dit que invoke-rc.d, un binaire qui contrôle le script init dans la plupart des systèmes de type Debian, a échoué. Il a échoué car il n'a pas pu trouver le /etc/init.d/mongodbscript. C'est mauvais. Nous devons le créer ou le copier ailleurs pour qu'il recommence à fonctionner. La réinstallation du package est également normalement une option pour les file not founderreurs.

    Dans ce cas, le signalement d'un bogue n'est pas nécessaire car il est probable que ce soit nous qui ayons supprimé le script, mais si vous êtes absolument sûr de ne pas avoir touché le fichier (vous devez le debsums -slaconfirmer), signalez un bogue.

Alors, de quoi avez-vous besoin exactement pour obtenir de l'aide? Idéalement, la sortie complète du problème. Il est également utile d'inclure la sortie de sudo dpkg -Cet sudo apt-get check, et la sortie de l' apt-cache policy package1 package2...endroit où "package1 package2 ..." inclut tous les packages présentant des problèmes.

Braiam
la source
en tant que message de diagnostic, il est utile de lire l'intégralité de l'erreur (des erreurs ont été rencontrées lors du traitement: mongodb-10gen), c'est pourquoi il est répertorié comme E et non Erreur
mchid
1
@mchid mais qu'est-ce qui a causé l'erreur? Cela ne vous donne aucun indice aveugle.
Braiam
@mchid oui, comment puis-je comprendre que si je viens de lire Errors were encountered while processing: mongodb-10gen? En l'état, pour résoudre le problème, cette ligne ne vaut rien .
Braiam
Mon mauvais, je pensais que vous cherchiez simplement comment résoudre le problème ("est-il possible de le résoudre") Je suppose que je l'ai pris hors contexte.
mchid
BTW, exécutez sudo touch /etc/init.d/mongodbpuis exécutez sudo apt-get purge mongodb-10genpour résoudre le problème. J'ai testé cela et tant que le fichier existe (/etc/init.d/mongodb), dpkg continuera même si le fichier est vide, ce que fait le toucher (crée un fichier vide).
mchid