Не удалось обновить nginx из-за debconf

Я использую Google Drive с Insync. Я считаю, что Insync является самым достойным клиентом облачных сервисов для Ubuntu, так как вы можете оставить свои файлы там, где они есть, потому что Insync может следовать символическим ссылкам.

1
задан 13 April 2017 в 15:24

2 ответа

Официальные исправленные пакеты были выпущены, используйте те

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 и изменить

[d11 ] #!/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. [ ! d18]

TL; DR :

Измените /var/lib/dpkg/info/nginx-common.config

и добавьте return в первую строку log_symlinks_check марихуана

например:

 log_symlinks_check() {
     return                <---- here
     # Skip new installations
     [ -z "$1" ] && return

Это позволит продолжить процесс обновления.

EDIT Как отметил @Thomas Ward, это пропустит шаг установки (исправление небезопасных символических ссылок - если есть - in / var / log / nginx)

7
ответ дан 23 May 2018 в 04:47
  • 1
    Это также мешает конфигурации делать то, что нужно. Сегодня я буду суетиться, чтобы исправить ситуацию. – Thomas Ward♦ 27 October 2016 в 15:22
  • 2
    Это верно, но я думаю, что очень немногие имеют журналы, связанные символом в / var / log / nginx, - и если они это сделают, они, вероятно, знают, как исправить эту проблему, не отправляя ее в Google. Добавили ее в ответ на всякий случай , Спасибо за комментарий! – Emil Burzo 27 October 2016 в 15:37
  • 3
    Учитывая, что это проблема core последней CVE, которая была исправлена, пропуск bad – Thomas Ward♦ 27 October 2016 в 15:53
  • 4
    FYI, обратите внимание, что для этого есть две отдельные ошибки отслеживания: один для Ubuntu ( bugs.launchpad.net/ubuntu/+source/nginx/+bug/1637058 ), а другой для PPA ( bugs.launchpad.net/nginx/+bug/1637200 ) – Thomas Ward♦ 27 October 2016 в 16:42
  • 5
    Также обратите внимание, что я думаю, что у нас есть исправление, которое будет полезно, как для выпущенных обновлений Ubuntu, так и для PPA. Сначала работа над тестированием. – Thomas Ward♦ 27 October 2016 в 17:41

У этой же проблемы:

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): проблемы с зависимостями - оставление unconfigured 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

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

6
ответ дан 23 May 2018 в 04:47
  • 1
    Я пытался избежать purge только потому, что не хотел потерять все конфеты, но это похоже на хорошую работу. – Walf 27 October 2016 в 06:58
  • 2
    @Walf Да, это был не мой первый выбор, но я сделал эту работу в конце. Взгляните на @Emil Bunzos, ответьте далее на менее drastic обходной путь =]. – Sergei Filippov 27 October 2016 в 13:04
  • 3
    Другой возможный gothcha - если вы используете модули динамической загрузки, их нужно будет переконфигурировать с помощью переустановленного экземпляра nginx. например load_module "modules / ngx_http_geoip_module.so"; – Sergei Filippov 27 October 2016 в 13:49
  • 4
    Все обходные решения теперь должны считаться недействительными - официально зарегистрированные пакеты были загружены в PPA и репозитории. – Thomas Ward♦ 27 October 2016 в 21:34
  • 5
    Большое спасибо, это отлично поработало для меня. Я запускаю различные тесты моего Nginx Bot Blocker на TravisCI, и я тестирую его с 1.10 до 1.3.x, но у меня возникли проблемы с получением 1.13.x для запуска / перезагрузки из-за этой проблемы. – MitchellK 4 October 2017 в 16:53

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

Похожие вопросы: