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)
apt-get install (something)
et que vous avez reçu ce message d'erreur comme je l'ai fait, la solution pour moi étaitapt-get upgrade (something)
.Réponses:
Ce message est générique. Cela signifie simplement que l'
dpkg
instance appelée parapt
/ aapt-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:
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 lepostinst
, 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 queinvoke-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/mongodb
script. 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 lesfile not found
erreurs.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 -sla
confirmer), 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 -C
etsudo 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.la source
Errors were encountered while processing: mongodb-10gen
? En l'état, pour résoudre le problème, cette ligne ne vaut rien .sudo touch /etc/init.d/mongodb
puis exécutezsudo apt-get purge mongodb-10gen
pour 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).