Не могу обновить 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

Надеюсь это поможет!

Другие вопросы по тегам