Ta wiadomość jest ogólna. Oznacza to po prostu, że dpkg
instancja wywołana przez apt
/ apt-get
nie powiodła się z jakiegoś powodu. Nie wyjaśnia, dlaczego, jak, ani nie daje wskazówek, jak go rozwiązać. Jako komunikat diagnostyczny nie jest użyteczny.
Musisz przeczytać wiersze przed komunikatem (czasami całkiem sporo), aby znaleźć prawdziwy błąd, który uniemożliwia ukończenie instalacji.
Tak, ale jak to rozwiązać?
Nie ma jednego sposobu na jego rozwiązanie. Jest tak wiele powodów, dla których może się tak zdarzyć, że bezcelowe jest umieszczenie ich wszystkich w jednym poście. Każda okoliczność jest prawie unikalna dla tego pakietu / środowiska.
Ale jest odkupienie. Fakt, że widzisz ten komunikat oznacza, że prawdopodobnie w wierszach przed wiadomością znajdują się bardziej odpowiednie informacje. Dla celów ilustracyjnych wykorzystam przykład:
(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)
Teraz, aby znaleźć problem, musisz przeczytać wstecz:
E: Sub-process /usr/bin/dpkg returned an error code (1)
nic mi nie mówi. Więc ruszam dalej.
Errors were encountered while processing: mongodb-10gen
po prostu mówi mi, który pakiet ma problemy. Jest użyteczne, ale niewystarczające.
subprocess installed post-installation script returned error exit status 100
: mówi mi to, że skrypt, który się nie powiódł, był tym postinst
, który został wykonany po instalacji. Przyda się to w niektórych sytuacjach, ale nie w tej.
dpkg: error while cleaning up:
nic przydatnego tutaj.
invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
BINGO! To mówi nam, że invoke-rc.d
plik binarny kontrolujący skrypt init w większości systemów podobnych do Debiana, zawiódł. Nie udało się, ponieważ nie można znaleźć /etc/init.d/mongodb
skryptu. To jest złe. Musimy go utworzyć lub skopiować z innego miejsca, aby znów zaczął działać. Ponowna instalacja pakietu jest również zwykle opcją dla file not found
błędów.
W takim przypadku zgłoszenie błędu nie jest konieczne, ponieważ jest prawdopodobne, że to my usunęliśmy skrypt, ale jeśli jesteś całkowicie pewien, że nie dotknąłeś pliku ( debsums -sla
powinien to potwierdzić), zgłoś błąd.
Więc czego dokładnie potrzebujesz, aby uzyskać pomoc? Idealnie, pełny wynik problemu. Pomocne jest również dołączenie danych wyjściowych sudo dpkg -C
i sudo apt-get check
oraz danych wyjściowych, w apt-cache policy package1 package2...
których „pakiet1 pakiet2 ...” obejmuje wszystkie pakiety z problemami.
apt-get install (something)
i dostałeś ten komunikat o błędzie tak jak ja, rozwiązaniem było dla mnieapt-get upgrade (something)
.