web-dev-qa-db-fra.com

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

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)

31
Braiam

Ce message est générique. Cela signifie simplement que l'instance dpkg appelée par apt/apt-get A é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-10gen Me 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 indique 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 script /etc/init.d/mongodb. 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 erreurs file not found.

    Dans ce cas, signaler 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 (un debsums -sla Devrait le confirmer), puis signalez un bug.

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 -C Et Sudo apt-get check, Et la sortie de apt-cache policy package1 package2... Où "package1 package2 ..." inclut tous les packages présentant des problèmes.

30
Braiam