Не могу обновить nginx из-за debconf
Я на 14.04.5 LTS. Я получаю эту ошибку при запуске обычного обновления apt-get:
Setting up nginx-common (1.10.1-3+trusty1) ...
dpkg: error processing package nginx-common (--configure):
subprocess installed post-installation script returned error exit status 1
Я пропустил все последующие ошибки, вызванные этим: "Пакет nginx-common еще не настроен" и т. Д.
Я следовал за процессом в этом ответе, чтобы отладить .postinst
и это никогда не выходит за пределы 3-й строки: . /usr/share/debconf/confmodule
- вот что возвращает 1
,
Я пробовал это решение, но оно не помогло, debconf определенно доступен. И эти (ошибка сохраняется). Насколько я могу судить, у меня нет директив прослушивания ipv6 в любых включенных файлах conf.
Я понятия не имею, как отладить debconf, чтобы понять, почему он не работает. Кто-нибудь знает, что я должен попробовать дальше?
Изменить: Новые обновления, они устанавливаются, но я получаю эту ошибку в конце:
Setting up nginx-full (1.10.1-3+trusty2) ...
initctl: invalid command: upgrade
Try `initctl --help' for more information.
invoke-rc.d: initscript nginx, action "upgrade" failed.
Не уверен, стоит ли мне отмечать как решенное.
3 ответа
Эта конкретная проблема исправлена, пожалуйста, обновите ваши пакеты!
Хранилища Ubuntu ( LP Bug # 1637058)
В предлагаемом репозитории Ubuntu Zesty (это выпуск в разработке, надеюсь, вы не используете это...), 1.10.1-0ubuntu5
решает эту проблему.
В Ubuntu Trusty, Xenial и Yakkety группа безопасности выпустила обновленные версии пакетов для решения этой проблемы и считает регрессию в пакете. Эта информация подробно описана в сообщении об ошибке и очень кратко в соответствующем Уведомлении о безопасности Ubuntu (USN-3114-2), но эта проблема исправлена в следующих версиях пакета:
- Ubuntu Trusty:
1.4.6-1ubuntu3.7
(Безопасность и обновления репозиториев) - Ubuntu Xenial:
1.10.0-0ubuntu0.16.04.4
(Безопасность и обновления репозиториев) - Ubuntu Yakkety:
1.10.1-0ubuntu1.2
(Безопасность и обновления репозиториев)
Версия в репозиториях Ubuntu Precise не затронута, поскольку они никогда не изменялись таким образом, чтобы вводить CVE, который вызывал недавние обновления. (Это относится только к репозиториям Ubuntu, а не к PPA.)
PPA ( LP Bug # 1637200)
Я загрузил пересмотренные пакеты в промежуточный PPA, который решает эту проблему, и внедрил исправление. Они построены без проблем и были скопированы в первичные магистральные и стабильные PPA на Launchpad по состоянию на 12:56 27 октября 2016 г. (UTC-04:00).
Это включает исправления для Precise, Trusty, Xenial и Yakkety. У PPA пока нет поддержки Zesty.
Обязательное раскрытие:
Я являюсь основным человеком в Ubuntu Server Team, отвечающим за
nginx
пакеты. Я также поддерживаю PPA, которые находятся в команде по адресу https://launchpad.net/~nginx.У меня также есть непосредственные знания по этой проблеме, и процесс внесения исправлений становится доступным, потому что я помог обнаружить проблему, которая влияет на последние сделанные обновления безопасности, а также на Debian.
Официальные фиксированные пакеты были выпущены, используйте те
TL;DR Прокрутите вниз
Просто столкнулся с этим вопросом сам.
Для дальнейшей отладки я установил следующую переменную окружения:
export DEBCONF_DEBUG=developer
Таким образом, мы можем увидеть, что делает debconf.
Теперь мы бежим
dpkg --configure --pending
И мы можем видеть следующее:
Setting up nginx-common (1.10.1-3+xenial1) ...
debconf (developer): frontend started
debconf (developer): frontend running, package name is nginx-common
debconf (developer): starting /var/lib/dpkg/info/nginx-common.config configure 1.10.1-3+xenial0
dpkg: error processing package nginx-common (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of libnginx-mod-http-image-filter:
libnginx-mod-http-image-filter depends on nginx-common (= 1.10.1-3+xenial1); however:
Package nginx-common is not configured yet.
Теперь мы можем редактировать /var/lib/dpkg/info/nginx-common.config
сценарий и изменить
#!/bin/sh
с
#!/bin/sh -x
чтобы включить отладку, а также.
Бег dpkg --configure --pending
снова покажет:
Setting up nginx-common (1.10.1-3+xenial1) ...
debconf (developer): frontend started
debconf (developer): frontend running, package name is nginx-common
debconf (developer): starting /var/lib/dpkg/info/nginx-common.config configure 1.10.1-3+xenial0
+ set -e
+ . /usr/share/debconf/confmodule
+ [ ! 1 ]
+ [ -z ]
+ exec
+ [ ]
+ exec
+ DEBCONF_REDIR=1
+ export DEBCONF_REDIR
+ logdir=/var/log/nginx
+ log_symlinks_check 1.10.1-3+xenial0
+ [ -z 1.10.1-3+xenial0 ]
+ dpkg --compare-versions 1.10.1-3+xenial0 lt-nl 1.10.1-0ubuntu1.1
+ return
dpkg: error processing package nginx-common (--configure):
И теперь мы можем увидеть нашу проблемную строку в скрипте
dpkg --compare-versions 1.10.1-3+xenial0 lt-nl 1.10.1-0ubuntu1.1
возвращает код выхода 1, как и должно быть - он выполняет сравнение версий и возвращает 0 или 1 в зависимости от результата.
Я не буду комментировать, как правильно это исправить, поскольку это фактическая ошибка, отслеживаемая в #1637058 (для Ubuntu) и #1637200 (для PPA) в LP.
Обходное решение:
редактировать /var/lib/dpkg/info/nginx-common.config
и добавить return
на первой строке log_symlinks_check
функция.
например:
log_symlinks_check() {
return <---- here
# Skip new installations
[ -z "$1" ] && return
Это позволит продолжить процесс обновления.
РЕДАКТИРОВАТЬ Как указал @Thomas Ward, при этом будет пропущен этап настройки (исправление небезопасных символических ссылок - если они есть - в /var/log/nginx)
Имея ту же проблему:
14.04.5 LTS (GNU/Linux 3.13.0-32-generic x86_64)
16.04.1 LTS (GNU/Linux 4.4.0-45-generic x86_64)
Настройка nginx-common (1.10.1-3+trusty1) ... dpkg: пакет обработки ошибок nginx-common (--configure): подпроцесс установленный сценарий после установки возвратил ошибку, состояние выхода 1 dpkg: проблемы с зависимостями препятствуют настройке libnginx -mod-http-auth-pam: libnginx-mod-http-auth-pam зависит от nginx-common (= 1.10.1-3+trusty1); однако: пакет nginx-common еще не настроен.
dpkg: пакет обработки ошибок libnginx-mod-http-auth-pam (--configure): проблемы с зависимостями - оставление ненастроенным dpkg: проблемы с зависимостями препятствуют настройке libnginx-mod-http-echo: libnginx-mod-http-echo зависит от nginx -common (= 1.10.1-3 + trusty1); однако: пакет nginx-common еще не настроен.
dpkg: пакет обработки ошибок libnginx-mod-http-echo (--configure): проблемы с зависимостями - оставлено ненастроенным Обнаружены ошибки при обработке: nginx-common libnginx-mod-http-auth-pam libnginx-mod-http-echo
решаемая
Я смог решить проблему, предварительно сделав резервную копию /etc/nginx
папка.
sudo tar -zcf ~/nginx.tgz /etc/nginx
Затем я удалил все, что связано с nginx из системы. Я должен был сделать это шаг за шагом, так как возникли проблемы с зависимостями.
sudo apt-get purge nginx-full
sudo apt-get purge nginx-common
sudo apt-get purge nginx*
После этого установите nginx обратно в систему sudo apt-get install nginx-full
,
И, наконец, восстановить /etc/nginx
папка с sudo tar -zxf ~/nginx.tgz
и перезапустите nginx, используя sudo service nginx restart
Надеюсь это поможет!