Назад | Перейти на главную страницу

Не могу обновить certbot из-за версии libc6

Я пытаюсь обновить Certbot с 0.10.2 до некоторой версии с поддержкой ACME 2 в Debian 9.1 с Python 2.7.9.


apt-cache policy certbot
certbot:
  Installed: 0.10.2-1
  Candidate: 0.28.0-1~deb9u2
  Version table:
     0.28.0-1~deb9u2 500
        500 http://deb.debian.org/debian oldstable/main amd64 Packages
        500 http://deb.debian.org/debian oldstable-updates/main amd64 Packages
     0.28.0-1~bpo9+1 100
        100 http://ftp.debian.org/debian stretch-backports/main amd64 Packages
 *** 0.10.2-1 100
        100 /var/lib/dpkg/status

Из Вот, вот что я пытаюсь:


echo "deb http://ftp.debian.org/debian stretch-backports main">>/etc/apt/sources.list
apt-get update
apt-get install python-certbot-nginx -t stretch-backports

/etc/apt/sources.list

deb http://deb.debian.org/debian/ oldstable main contrib non-free
deb-src http://deb.debian.org/debian/ oldstable main contrib non-free

deb http://deb.debian.org/debian/ oldstable-updates main contrib non-free
deb-src http://deb.debian.org/debian/ oldstable-updates main contrib non-free

deb http://deb.debian.org/debian-security oldstable/updates main
deb-src http://deb.debian.org/debian-security oldstable/updates main

deb http://ftp.debian.org/debian stretch-backports main
deb-src http://ftp.debian.org/debian stretch-backports main

||/ Name                                Version                Architecture           Description
+++-===================================-======================-======================-============================================================================
ii  libc6:amd64                         2.24-11+deb9u1         amd64                  GNU C Library: Shared libraries

ОШИБКА:

apt-get install python-certbot-nginx -t stretch-backports
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 libc-dev-bin : Depends: libc6 (> 2.28) but 2.24-11+deb9u1 is to be installed
                Recommends: manpages-dev but it is not going to be installed
 libc6-dev : Depends: libc6 (= 2.28-10) but 2.24-11+deb9u1 is to be installed
 locales : Depends: libc-bin (> 2.28) but 2.24-11+deb9u1 is to be installed
 python-certbot-nginx : Depends: python3-certbot-nginx but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

libc6:
Installed: 2.24-11+deb9u1
  Candidate: 2.24-11+deb9u4
  Version table:
     2.24-11+deb9u4 500
        500 http://deb.debian.org/debian oldstable/main amd64 Packages
 *** 2.24-11+deb9u1 500
        500 http://deb.debian.org/debian-security oldstable/updates/main amd64 Packages
        100 /var/lib/dpkg/status
libc6-dev:
  Installed: 2.28-10
  Candidate: 2.28-10
  Version table:
 *** 2.28-10 100
        100 /var/lib/dpkg/status
     2.24-11+deb9u4 500
        500 http://deb.debian.org/debian oldstable/main amd64 Packages
     2.24-11+deb9u1 500
        500 http://deb.debian.org/debian-security oldstable/updates/main amd64 Packages
locales:
  Installed: 2.28-10
  Candidate: 2.28-10
  Version table:
 *** 2.28-10 100
        100 /var/lib/dpkg/status
     2.24-11+deb9u4 500
        500 http://deb.debian.org/debian oldstable/main amd64 Packages
     2.24-11+deb9u1 500
        500 http://deb.debian.org/debian-security oldstable/updates/main amd64 Packages
libc-dev-bin:
  Installed: 2.28-10
  Candidate: 2.28-10
  Version table:
 *** 2.28-10 100
        100 /var/lib/dpkg/status
     2.24-11+deb9u4 500
        500 http://deb.debian.org/debian oldstable/main amd64 Packages
     2.24-11+deb9u1 500
        500 http://deb.debian.org/debian-security oldstable/updates/main amd64 Packages

Любая идея? Это рабочий сервер.

РЕДАКТИРОВАТЬ:

Очевидно, я установил некоторые пакеты из Debian 10 в Debian 9. Поскольку я ничего не могу сделать с apt, я пытаюсь решить зависимости с помощью aptitude.

(venv)root@deb64:/home/x/# aptitude -V -s install libc6-dev=2.24-11+deb9u4
The following packages will be DOWNGRADED:
  libc6-dev{b} [2.28-10 -> 2.24-11+deb9u4]
The following packages will be REMOVED:
  libc-dev-bin{u} [2.28-10]
The following packages will be upgraded:
  libc6 [2.24-11+deb9u1 -> 2.24-11+deb9u4]  linux-libc-dev [4.9.30-2+deb9u5 -> 4.9.210-1]
The following partially installed packages will be configured:
  libc-l10n  locales{b}  man-db
2 packages upgraded, 0 newly installed, 1 downgraded, 1 to remove and 235 not upgraded.
Need to get 6,539 kB of archives. After unpacking 3,561 kB will be freed.
The following packages have unmet dependencies:
 libc6-dev : Depends: libc-dev-bin (= 2.24-11+deb9u4) but it is not going to be installed
 locales : Depends: libc-bin (> 2.28) but 2.24-11+deb9u1 is installed and it is kept back
The following actions will resolve these dependencies:

     Remove the following packages:
1)     locales [2.28-10 (now)]
2)     task-english [3.39 (now, oldstable)]

     Install the following packages:
3)     locales-all [2.24-11+deb9u4 (oldstable)]

     Upgrade the following packages:
4)     postgresql-9.4 [9.4.13-0+deb8u1 (now) -> 9.4.26-2.pgdg90+1 (stretch-pgdg)]
5)     postgresql-9.6 [9.6.4-0+deb9u1 (now) -> 9.6.18-1.pgdg90+1 (stretch-pgdg)]
6)     postgresql-contrib-9.4 [9.4.13-0+deb8u1 (now) -> 9.4.26-2.pgdg90+1 (stretch-pgdg)]
7)     postgresql-contrib-9.6 [9.6.4-0+deb9u1 (now) -> 9.6.18-1.pgdg90+1 (stretch-pgdg)]

     Downgrade the following packages:
8)     libc-dev-bin [2.28-10 (now) -> 2.24-11+deb9u4 (oldstable)]

Accept this solution? [Y/n/q/?] q

Будет ли безопасно для системы, если я приму это решение?


ii  libc6:amd64                       2.24-11+deb9u1                 amd64        GNU C Library: Shared libraries
iU  libc6-dev:amd64                   2.28-10                        amd64        GNU C Library: Development Libraries and Header Files

Наконец-то получил решение:

apt install libc6/stretch libc6-dev/stretch libc-dev-bin/stretch libc-bin/stretch locales/stretch linux-libc-dev/stretch

У другого пользователя такая же проблема, и, к счастью, кто-то нашел решение Вот.

я буду не рекомендуется смешивать и сопоставлять пакеты, предназначенные для разных основных версий дистрибутива потому что иногда втягиваются зависимости, которые разрушают все. Если это вообще возможно, я бы "перестроил" сервер в другом месте, где источники пакетов не смешались, потому что libc - важная вещь, которую нужно изменить ...

Как предлагали другие, можете ли вы запускать свои службы внутри чего-то вроде докера, чтобы каждый мог иметь желаемую среду, не загрязняя среду хоста? Таким образом, если что-то пойдет не так, вы можете снести контейнер и построить новый ...

TL; DR; Я беспокоюсь за ваш сервер, потому что похоже, что вы «пересекли потоки».

Первый вид вашей конфигурации выглядит так:

  • вы используете Debian 9, который stretch
  • oldstable в настоящее время указывает на stretch

Все перечисленные конфигурации показывают значения, которые должны работать вместе. Так как /var/lib/dpkg/status списки для некоторых версий пакетов, которые новее перечисленных, следует предполагать, что в какой-то момент были:

  • другие репозитории, перечисленные как показано в конфигах
  • пакеты были установлены вручную

Так как libc6 требуется осторожность / внимание на каждом шаге. Если этот пакет сломан / удален, система перейдет в «неработоспособное» состояние.

Лично я бы посоветовал придерживаться одного инструмента, чтобы исправить ситуацию, и использовал бы apt и dpkg только.

  • Что значит apt-get install -f предлагаю выполнить?
  • Удаление python-certbot-nginx пакет с использованием dpkg скорее всего вернет apt функциональность.
  • однажды apt снова работает, потребуется как минимум понизить рейтинг libc6-dev и libc6-dev-bin, и в идеале все остальные пакеты, которые были извлечены из "другого" репозитория.

После того, как эта ситуация будет устранена, выходом может быть создание вручную бэкпорта python-certbot-nginx package, выполнив следующие действия:

  • Добавить deb-src запись для Debian 10 и update.
  • apt-get build-dep python-certbot-nginx который устанавливает все необходимые зависимости сборки для certbot
  • apt-get source python-certbot-nginx -b извлекает исходный пакет из Debian 10 и пытается собрать его с ранее установленными зависимостями из Debian 9
  • Установите получившийся.deb файл с использованием dpkg