Widziałem tę wiadomość kilka razy, gdy ktoś ma problem z instalacją, aktualizacją lub usunięciem jakiegoś oprogramowania, ale zastanawiam się, co to znaczy i, co ważniejsze, jest możliwe do rozwiązania?
(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)
(powyższe to tylko przykład, a nie mój rzeczywisty problem)
apt-get install (something)
i dostałeś ten komunikat o błędzie tak jak ja, rozwiązaniem było dla mnieapt-get upgrade (something)
.Odpowiedzi:
Ta wiadomość jest ogólna. Oznacza to po prostu, że
dpkg
instancja wywołana przezapt
/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:
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ł tympostinst
, 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, żeinvoke-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ą dlafile 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
isudo apt-get check
oraz danych wyjściowych, wapt-cache policy package1 package2...
których „pakiet1 pakiet2 ...” obejmuje wszystkie pakiety z problemami.źródło
Errors were encountered while processing: mongodb-10gen
? W tej chwili, aby rozwiązać problem, ta linia jest bezwartościowa .sudo touch /etc/init.d/mongodb
a następnie uruchom,sudo apt-get purge mongodb-10gen
aby rozwiązać problem. Testowałem to i tak długo, jak plik istnieje (/etc/init.d/mongodb) dpkg będzie kontynuował, nawet jeśli plik jest pusty, co robi dotyk (tworzy pusty plik).