Это сообщение является общим. Это просто означает, что dpkg
экземпляр, вызванный apt
/ apt-get
не выполнен по какой-то причине. Это не объясняет, почему, как или дает подсказки, как решить это. Как диагностическое сообщение, это не полезно.
Вам нужно прочитать строки перед сообщением (иногда их довольно много), чтобы найти настоящую ошибку, которая мешает вам завершить установку.
Да, но как мне это решить?
Нет единого способа ее решить. Есть так много причин, почему это может произойти, что бесполезно пытаться перечислить их все в одном посте. Каждое обстоятельство почти уникально для этого пакета / среды.
Но есть выкуп. Тот факт, что вы видите это сообщение, означает, что, вероятно, в строках перед сообщением содержится более релевантная информация. В иллюстративных целях я буду использовать пример:
(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)
Теперь, чтобы найти проблему, вам нужно прочитать в обратном направлении:
E: Sub-process /usr/bin/dpkg returned an error code (1)
не говорит мне ничего полезного. Так что двигайтесь дальше.
Errors were encountered while processing: mongodb-10gen
просто говорит мне, что пакет имеет проблемы. Полезно, но недостаточно.
subprocess installed post-installation script returned error exit status 100
Это говорит мне о том, что скрипт, который потерпел неудачу, был тот postinst
, который был выполнен после установки. Это пригодится в некоторых ситуациях, но не в этой.
dpkg: error while cleaning up:
ничего полезного здесь.
invoke-rc.d: unknown initscript, /etc/init.d/mongodb not found.
БИНГО! Это говорит нам о том invoke-rc.d
, что двоичный файл, который управляет сценарием инициализации в большинстве подобных Debian систем, потерпел неудачу. Не удалось, потому что не смог найти /etc/init.d/mongodb
сценарий. Это плохо. Нам нужно создать его или скопировать из другого места, чтобы оно снова заработало. Переустановка пакета также обычно является опцией для file not found
ошибок.
В этом случае сообщать об ошибке не обязательно, поскольку вероятно, что мы были теми, кто удалил скрипт, но если вы абсолютно уверены, что не трогали файл (a debsums -sla
должен подтвердить это), то сообщите об ошибке.
Итак, что именно вам нужно, чтобы получить помощь? В идеале полный вывод проблемы. Также полезно включить выходные данные sudo dpkg -C
и sudo apt-get check
, и выходные данные, apt-cache policy package1 package2...
где "package1 package2 ..." включает в себя все пакеты с проблемами.
apt-get install (something)
и получили это сообщение об ошибке, как я, решение для меня былоapt-get upgrade (something)
.