У меня есть сервер Ubuntu 18.10, и недавно я пытался обновить git
. Я все время получаю ошибки, что некоторые пакеты установлены неправильно.
Errors were encountered while processing:
libpaper1:amd64
libpaper-utils
unattended-upgrades
libgs9:amd64
ghostscript
Затем я побежал dpkg --configure -a
и вижу те же ошибки. Я хочу быть осторожным и не перегружать мою систему, но как я могу исправить эти ошибки?
~ $ sudo apt list --upgradable
Listing... Done
~ $ sudo apt-get check
Reading package lists... Done
Building dependency tree
Reading state information... Done
~ $ sudo apt-get check
Reading package lists... Done
Building dependency tree
Reading state information... Done
~ $ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
5 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Setting up libpaper1:amd64 (1.1.24+nmu5ubuntu1) ...
dpkg: error processing package libpaper1:amd64 (--configure):
installed libpaper1:amd64 package post-installation script subprocess returned error exit status 10
dpkg: dependency problems prevent configuration of libpaper-utils:
libpaper-utils depends on libpaper1; however:
Package libpaper1:amd64 is not configured yet.
dpkg: error processing package libpaper-utils (--configure):
dependency problems - leaving unconfigured
Setting up unattended-upgrades (1.5ubuntu3.18.10.4) ...
dpkg: error processing package unattended-upgrades (--configure):
installed unattended-upgrades package post-installation script subprocess returned error exit status 10
dpkg: dependency problems prevent configuration of libgs9:amd64:
libgs9:amd64 depends on libpaper1; however:
Package libpaper1:amd64 is not configured yet.
dpkg: error processing package libgs9:amd64 (--configure):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of ghostscript:
ghostscript depends on libgs9 (= 9.26~dfsg+0-0ubuntu0.18.10.9); however:
Package libgs9:amd64 is not configured yet.
dpkg: error processing package ghostscript (--configure):
dependency problems - leaving unconfigured
Processing triggers for libc-bin (2.28-0ubuntu1) ...
Errors were encountered while processing:
libpaper1:amd64
libpaper-utils
unattended-upgrades
libgs9:amd64
ghostscript
E: Sub-process /usr/bin/dpkg returned an error code (1)
РЕДАКТИРОВАТЬ
В ответ на вопрос @Stefan Skoglund:
~ $ sudo apt-cache policy libpaper1
libpaper1:
Installed: 1.1.24+nmu5ubuntu1
Candidate: 1.1.24+nmu5ubuntu1
Version table:
*** 1.1.24+nmu5ubuntu1 500
500 http://mirror.hetzner.de/ubuntu/packages cosmic/main amd64 Packages
500 http://de.archive.ubuntu.com/ubuntu cosmic/main amd64 Packages
100 /var/lib/dpkg/status
~ $ sudo dpkg-reconfigure -plow libpaper1
/usr/sbin/dpkg-reconfigure: libpaper1 is broken or not fully installed
РЕДАКТИРОВАТЬ 2
Бросив осторожность на ветер, я закрыл глаза, скрестил пальцы и попробовал следующее:
sudo apt-get --purge remove libpaper1:amd64 libpaper-utils unattended-upgrades libgs9:amd64 ghostscript
sudo apt-get clean
sudo apt-get update && sudo apt-get upgrade
sudo apt autoremove
Это волшебным образом сработало.
Баунти по-прежнему доступен для тех, кто может объяснить, что здесь произошло, и каковы будут лучшие практики / советы по устранению неполадок.
Вы пробовали apt-get install -f?
У меня уже были такие проблемы, когда приходилось работать на серверах с разными источниками пакетов.
Решения были разные. В общем, вам следует избегать смешивания разных источников пакетов.
Если были установлены пакеты с параметром apt -t <...>, то все проблемные пакеты помогли установить с помощью этого параметра.
Однако иногда мне приходилось сначала удалять пакеты.
Но у меня также был случай, когда мне приходилось работать с параметрами -Force. Вы пробовали apt-get install -f?
Здесь произошло то, что сценарий после установки пакета libpaper1 был сломан и завершился с ошибкой в процессе установки. Этого не должно происходить, потому что это нарушает состояние пакета, как и вы, поэтому рекомендуется сообщить об ошибке сопровождающему пакета. Увидеть Вики-страница ReportingBugs для подробностей.
Возможны следующие варианты:
Удалите пакет и дождитесь исправления. Вот что, вероятно, произошло в вашем случае: к тому времени, когда вы решили очистить пакет libpaper1, он был исправлен, и новая установка прошла успешно.
Следует отметить, что независимо от того, доступен ли обновленный пакет, он не будет загружен, пока состояние пакета нарушено. Поэтому вам нужно удалить пакет и переустановить его.
Восстановите сценарий после установки. Это альтернатива, если вам действительно, абсолютно нужен этот пакет, и вы не хотите ждать исправления. Вам действительно нужно знать, что вы делаете (знание программирования оболочки обязательно), но исправить скрипт обычно несложно.
Каждый пакет может иметь предустановочный и пост-установочный скрипт, они находятся в /var/lib/dpkg/info
каталог и названы package[:arch].preinst
и package[:arch].postinst
. Они выполняются до и после установки соответственно [*].
В вашем случае сценарий после установки завершился неудачно, что означает, что пакет был установлен (поэтому файлы были извлечены), единственное, что осталось, - это выполнить сценарий после установки. Итак, что вам нужно сделать, это запустить скрипт (libpaper1:amd64.postinst
) с корневого терминала и запишите строку, в которой произошла ошибка. Восстановление скрипта отсюда обычно тривиально, но убедитесь, что понимаете, что скрипт пытался сделать, так как вполне возможно, что неудачная команда была критической для пакета. Попытайтесь восстановить сценарий (например, добавив || true
до конца строки работает, но может быть не лучшая идея).
Если сценарий выполняется без ошибок,
dpkg --configure -a
команда настроит все ожидающие пакеты и запустит сценарий постустановки в процессе, восстанавливая состояние пакета.
[*] Сам процесс, конечно, немного сложнее; если вы хотите знать, что именно происходит во время установки / удаления, см. описание install
, configure
, и remove
действия на странице руководства dpkg (1).