Вопрос или проблема
Похоже, я снова поломал свою систему Debian.
Если я пытаюсь установить что-то с помощью apt
, я получаю следующее предупреждение:
Чтение информации о состоянии... Готово
Вы можете попробовать запустить 'apt --fix-broken install', чтобы это исправить.
Следующие пакеты имеют неудовлетворенные зависимости:
libc-bin : Зависит: libc6 (< 2.25), но 2.27-3 должен быть установлен
locales : Зависит: libc-bin (> 2.27), но 2.24-11+deb9u3 должен быть установлен
E: Неудовлетворенные зависимости. Попробуйте 'apt --fix-broken install' без пакетов (или укажите решение).
Следовать этому совету бесполезно, так как это приводит только к
Следующие пакеты были установлены автоматически и больше не требуются:
bc cups-browsed cups-core-drivers cups-daemon cups-filters cups-filters-core-drivers
cups-ppdc cups-server-common dc foomatic-db-compressed-ppds foomatic-db-engine hp-ppd
hplip-data libart-2.0-2 libavahi-glib1 libcupscgi1 libcupsmime1 libcupsppdc1
libfontembed1 libgutenprint2 libhpmud0 liblouisutdml-bin liblouisutdml-data
liblouisutdml7 libqpdf17 libsane-hpaio libsnmp-base libsnmp30 mscompress
openprinting-ppds printer-driver-all printer-driver-brlaser printer-driver-c2050
printer-driver-c2esp printer-driver-cjet printer-driver-dymo printer-driver-escpr
printer-driver-foo2zjs printer-driver-foo2zjs-common printer-driver-fujixerox
printer-driver-hpijs printer-driver-m2300w printer-driver-min12xxw
printer-driver-pnm2ppa printer-driver-ptouch printer-driver-pxljr
printer-driver-sag-gdi python3-pexpect python3-pil python3-ptyprocess
python3-renderpm python3-reportlab python3-reportlab-accel qpdf ssl-cert
Используйте 'sudo apt autoremove', чтобы удалить их.
Следующие пакеты будут УДАЛЕНЫ:
cups hplip libc-bin locales printer-driver-gutenprint printer-driver-hpcups
printer-driver-postscript-hp printer-driver-splix task-english task-print-server
ПРЕДУПРЕЖДЕНИЕ: Следующие важные пакеты будут удалены.
Это НЕЛЬЗЯ делать, если вы точно не знаете, что делаете!
libc-bin
0 обновлено, 0 ново установлено, 10 на удаление и 7 не обновлено.
1 не полностью установлен или удален.
После этой операции освобождается 22.0 МБ дискового пространства.
Вы собираетесь сделать что-то потенциально опасное.
Чтобы продолжить, введите фразу 'Да, делай, как я сказал!'
?]
Быстрый поиск в Google сообщил мне, что удаление libc-bin
– это ужасная идея, что дурак вроде меня никогда не должен делать. Теперь вопрос: как я могу исправить свою проблему?
Дополнительная информация:
$ cat /etc/apt/sources.list
# deb cdrom:[Debian GNU/Linux 9.4.0 _Stretch_ - Официальный amd64 NETINST 20180310-11:21]/ stretch main
# deb cdrom:[Debian GNU/Linux 9.4.0 _Stretch_ - Официальный amd64 NETINST 20180310-11:21]/ stretch main
deb http://ftp.de.debian.org/debian/ stretch main non-free contrib
deb-src http://ftp.de.debian.org/debian/ stretch main non-free contrib
deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free
# stretch-updates, ранее известные как 'volatile'
deb http://ftp.de.debian.org/debian/ stretch-updates main contrib non-free
deb-src http://ftp.de.debian.org/debian/ stretch-updates main contrib non-free
Запрашиваемые комментарии:
$ sudo apt install libc-bin/stable
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
libc-bin уже является самой новой версией (2.24-11+deb9u3).
Выбрана версия '2.24-11+deb9u3' (Debian:9.4/stable [amd64]) для 'libc-bin'
Выбрана версия '2.24-11+deb9u3' (Debian:9.4/stable [amd64]) для 'libc6' из-за 'libc-bin'
Вы можете попробовать запустить 'apt --fix-broken install', чтобы это исправить.
Следующие пакеты имеют неудовлетворенные зависимости:
libc-bin : Зависит: libc6 (< 2.25), но 2.27-3 должен быть установлен
locales : Зависит: libc-bin (> 2.27), но 2.24-11+deb9u3 должен быть установлен
E: Неудовлетворенные зависимости. Попробуйте 'apt --fix-broken install' без пакетов (или укажите решение).
$ cat /etc/apt/sources.list.d/*
# deb-src http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu cosmic main
# deb-src http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu cosmic main
$ apt-cache policy
Файлы пакетов:
100 /var/lib/dpkg/status
релиз a=now
500 http://ftp.de.debian.org/debian stretch-updates/main amd64 Packages
релиз o=Debian,a=stable-updates,n=stretch-updates,l=Debian,c=main,b=amd64
источник ftp.de.debian.org
500 http://security.debian.org/debian-security stretch/updates/non-free amd64 Packages
релиз v=9,o=Debian,a=stable,n=stretch,l=Debian-Security,c=non-free,b=amd64
источник security.debian.org
500 http://security.debian.org/debian-security stretch/updates/contrib amd64 Packages
релиз v=9,o=Debian,a=stable,n=stretch,l=Debian-Security,c=contrib,b=amd64
источник security.debian.org
500 http://security.debian.org/debian-security stretch/updates/main amd64 Packages
релиз v=9,o=Debian,a=stable,n=stretch,l=Debian-Security,c=main,b=amd64
источник security.debian.org
500 http://ftp.de.debian.org/debian stretch/contrib amd64 Packages
релиз v=9.4,o=Debian,a=stable,n=stretch,l=Debian,c=contrib,b=amd64
источник ftp.de.debian.org
500 http://ftp.de.debian.org/debian stretch/non-free amd64 Packages
релиз v=9.4,o=Debian,a=stable,n=stretch,l=Debian,c=non-free,b=amd64
источник ftp.de.debian.org
500 http://ftp.de.debian.org/debian stretch/main amd64 Packages
релиз v=9.4,o=Debian,a=stable,n=stretch,l=Debian,c=main,b=amd64
источник ftp.de.debian.org
Закрепленные пакеты:
$dpkg --list libc6
Желание=Неизвестно/Установка/Удаление/Очистка/Удержание
| Статус=Не/Уст/Конф-файлы/Распаковано/половина-конф/Половина-уст/триг-подождать/Триг-подвес
|/ Ошибка?=(нет)/Нужна повторная установка (Статус,Ошибка: прописные буквы=плохо)
||/ Имя Версия Архитектура Описание
+++-================-=============-=============-=====================================
ii libc6:amd64 2.27-3 amd64 Библиотека GNU C: Общие библиотеки
find /lib -name libc-\*
/lib/x86_64-linux-gnu/libc-2.27.so
Проблема, похоже, в том, что вы каким-то образом установили (или, по крайней мере, убедили dpkg, что он доступен) более новую версию пакета locales
. Доступная версия в Stretch зависела только от libc-bin (>> 2.24)
, в то время как ваш вывод показывает, что ваш apt
видит версию, зависимую от libc-bin (> 2.27)
(вы можете сказать, что это непоследовательно, что dpkg
использует >>
в зависимостях, а apt
выводит >
в таких случаях, но это так, они означают одно и то же).
Пакет locales
не является обязательным, поэтому я бы попробовал удалить его, а затем установить снова, если у вас много скомпилированных локалей, это может занять некоторое время.
Ответ или решение
Исправление проблемы с библиотекой libc-bin в Debian
Если вы столкнулись с проблемой, связанной с библиотекой libc-bin
в системе Debian, это обычно указывает на несоответствие версий зависимостей пакетов. В вашем случае, вы видите следующее сообщение об ошибке:
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
Давайте рассмотрим детальные шаги для устранения этой проблемы.
1. Проверка версий пакетов
Сначала, необходимо проверить текущие версии установленных пакетов libc-bin
и libc6
. Это можно сделать с помощью следующей команды:
dpkg --list | grep libc
А вы уже выполнили это и получили следующую информацию:
ii libc6:amd64 2.27-3 amd64 GNU C Library: Shared libraries
Это означает, что у вас установлена версия libc6
2.27, которая конфликтует с версией libc-bin
, требуемой для корректной работы системы на основе Debian Stretch.
2. Анализ источников пакетов
Обратите внимание на ваш файл /etc/apt/sources.list
. Убедитесь, что он настроен на использование официальных репозиториев и не содержит сторонних или конфликтующих репозиториев. У вас уже установлен стандартный набор репозиториев:
deb http://ftp.de.debian.org/debian/ stretch main non-free contrib
deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb http://ftp.de.debian.org/debian/ stretch-updates main contrib non-free
3. Очистка системы от некорректных пакетов
Для решения проблемы сначала попробуем удалить пакет locales
, в котором, как вы уже заметили, появляется зависимость от libc-bin
. Это можно сделать с помощью команды:
sudo apt remove locales
После этого попробуйте еще раз выполнить команду для исправления поврежденных зависимостей:
sudo apt --fix-broken install
4. Переустановка необходимых пакетов
После успешного выполнения предыдущих шагов, вы можете переустановить пакет locales
:
sudo apt install locales
Если apt
по-прежнему вызывает предупреждения о конфликтах, вы можете попробовать установить конкретную версию:
sudo apt install locales=2.24-11+deb9u3
5. Проверка целостности системы
После выполнения всех вышеуказанных шагов рекомендуется проверить состояние системы. Для этого выполните команду:
sudo dpkg --configure -a
Это позволит убедиться, что все пакеты корректно настроены и установлены.
6. Обновление системы
После успешного исправления проблемы рекомендуется обновить вашу систему до последней стабильной версии пакетов с помощью команды:
sudo apt update
sudo apt upgrade
Заключение
Следуя данным инструкциям, вы сможете эффективно исправить проблему с библиотекой libc-bin
в Debian. Убедитесь, что системы всегда имеют актуальные репозитории и позволяют избежать подобных конфликтов в будущем. Если у вас возникнут дополнительные вопросы или проблемы, не стесняйтесь обращаться за помощью на специализированные форумы или в поддержку Debian.
Полезные ссылки
Если у вас возникли дополнительные вопросы или требуется дальнейшая помощь, не стесняйтесь задавать их.