Вопрос или проблема
Каждый раз, когда я пытаюсь обновить или установить новый пакет, я получаю следующее
ibc6-dbg: Depends: libc6 (= 2.31-0ubuntu9.2) but 2.31-0ubuntu9.1 is installed \
libc6-dev: Depends: libc6 (= 2.31-0ubuntu9.2) but 2.31-0ubuntu9.1 is installed \
Depends: libc-dev-bin (= 2.31-0ubuntu9.2) but 2.31-0ubuntu9.2 is installed
libc6-i386: Depends: libc6 (= 2.31-0ubuntu9.2) but 2.31-0ubuntu9.1 is installed
Я пробовал apt --fix-broken install
Я пробовал sudo apt-get -f install
, чтобы принудительно установить.
В обоих случаях я получал те же сообщения об ошибках.
Я все еще новичок в Linux и хотел бы научиться решать эти проблемы без полного удаления ОС и её переустановки.
У меня была аналогичная проблема на только что установленной Ubuntu 20.04.2 desktop 64bit, разница в том, что была установлена libc6 …9.3, но мои пакеты (g++ build-essential и т.д.) не могли быть установлены, потому что libc6-dev не мог быть установлен из-за требования libc6 …9.2, которая была старее установленной версии.
libc6-dev : Depends: libc6 (= 2.31-0ubuntu9.2) but 2.31-0ubuntu9.3 is to be installed
Поэтому я просто понизил уровень libc6 (и libc-bin тоже, потому что они мне кажутся связанными) до версии 2.31-0ubuntu9.2 следующим образом:
sudo apt install libc6=2.31-0ubuntu9.2 libc-bin=2.31-0ubuntu9.2
Теперь мои пакеты могли быть установлены 🙂 кажется, это работает, посмотрим, не возникнут ли серьезные проблемы – но, думаю, нет, потому что это небольшое изменение в libc (с другой стороны, libc очень важна.)
НО НЕ ЗНАЮ, ЧТО БУДЕТ В БУДУЩЕМ:
- Будет ли в будущих обновлениях этот пакет оставаться зафиксированным на старой версии?
- Кто-нибудь знает, как разморозить эту версию?
- Если даже удастся как-то разморозить её от этой версии, будет ли у Ubuntu эта проблема в будущем?
- Кто-нибудь знает, это баг в репозитории упаковки Ubuntu? Повторюсь: это было на совершенно свежей установке Ubuntu 20.04 desktop.
Некоторые другие ресурсы для вдохновения:
Хочу добавить в ответ Tomeg, что понижение с aptitude помогло мне сохранить мои пакеты, зависящие от libc6. Когда снижал версии с помощью:
sudo apt install libc6=2.31-0ubuntu9.
apt также удалял бы все мои пакеты, зависящие от libc6.
The following packages will be DOWNGRADED:
libc6
0 upgraded, 0 newly installed, 1 downgraded, 206 to remove and 0 not upgraded.
Как я описал здесь, это помогло, так как aptitude предложил мне разные варианты:
sudo aptitude install libc6=2.31-0ubuntu9.2
Мне пришлось отклонить первые два варианта (2x n), а затем третий вариант был просто понизить (y) без удаления других пакетов.
Эти инструкции помогли мне. Вы знаете, что вам нужно исправить зависимость пакета для libc6
, поэтому:
-
Найдите доступные версии для
libc6
:apt show -a libc6
-
Из списка, который вы видите после выполнения вышеуказанной команды,
установите нужную версию. Например, если вы хотите версию2.31-0ubuntu9.7
, выполните:sudo apt install libc6="2.31-0ubuntu9.7"
-
Теперь выполните:
sudo apt install build-essential
Кроме переустановки конкретной версии libc
, возможно, вам нужно проверить файл источников apt
в /etc/apt/sources.list
и убедиться, что источник apt
соответствует версии вашей Ubuntu OS. Если версии не совпадают, вам нужно заменить кодовое имя в sources.list
на правильное кодовое имя Ubuntu, обновить источник apt
, затем переустановить libc
или gcc
.
Итак, у меня возникла эта проблема с apt update && apt fill-up grade/dust-up grade, и даже просто upgrade. Я установил Kali Linux с .iso файла, который я записал на DVD -r диск, и мне пришлось скачать и добавить gpg ключ, чтобы запустить apt update. К вашему сведению, .iso был скачан в 11/2023, так что он должен был иметь действительный файл ключа подписи, который можно было доверять, как вы думаете? НО ЗАТЕМ!!! libc6 не мог обновиться из-за неудовлетворенных зависимостей и удерживаемых сломанных пакетов. Оказалось, что Firefix-esr была программой, ответственной за блокировку моего обновления и модернизации!! Мне пришлось выполнить “sudo apt remove Firefix-esr -y”, чтобы удалить её, и затем обновление и модернизация прошли без каких-либо проблем!! Почему это происходит при чистой установке, без каких-либо изменений в установщике??!!! Очень раздражает делать это после полной чистой установки с “заводского” образа!! 💯
.
Ответ или решение
Решение проблемы с неудовлетворенными зависимостями для пакета libc6 в Linux
Теория
Неудовлетворенные зависимости – это одна из распространенных проблем, с которыми сталкиваются пользователи Linux при управлении пакетами через менеджеры пакетов, такие как apt
. Пакет libc6
(GNU C Library) является критически важным компонентом системы, от которого зависят многие другие пакеты. Когда версия этого пакета не соответствует требованиям других пакетов, это может привести к всевозможным проблемам и даже к невозможности установить или обновить программы.
Проблема возникает из-за того, что разные пакеты требуют установленные версии библиотек. В этой ситуации вы сталкиваетесь с несоответствием версий: установлена одна, но другая требуется для других пакетов.
Пример
В приведенной вами ситуации видно, что у вас установлена версия libc6
2.31-0ubuntu9.1
, тогда как некоторые пакеты требуют 2.31-0ubuntu9.2
. Это приводит к разрыву в зависимости, и пакеты не могут быть правильно установлены или обновлены.
Вы предприняли попытки исправить ситуацию с помощью команд apt --fix-broken install
и sudo apt-get -f install
, но они не принесли успеха. Это может произойти, если требуемая версия пакета недоступна в текущих репозиториях или если репозитории не синхронизированы.
Применение
Вот рекомендации и шаги, которые помогут вам решить эту проблему, минимизируя возможные негативные последствия:
-
Проверка доступных версий пакета
libc6
:
Для начала вы можете выяснить, какие версииlibc6
доступны в ваших репозиториях, используя команду:apt show -a libc6
-
Достижение нужной версии:
Если нужная версия доступна, вы можете попробовать установить её вручную:sudo apt install libc6=2.31-0ubuntu9.2 libc-bin=2.31-0ubuntu9.2
-
Использование
aptitude
:
Если установка черезapt
приводит к массовому удалению пакетов, рассмотрите использованиеaptitude
, который зачастую предлагает более гибкие варианты разрешения зависимостей:sudo aptitude install libc6=2.31-0ubuntu9.2
После запуска команды
aptitude
предложит несколько решений проблемы. Откажитесь от первых двух предложений, если они вам не подходят, и примите третье, если оно соответствует вашим целям. -
Проверка источников пакетов:
Убедитесь в том, что ваш файл/etc/apt/sources.list
настроен правильно и соответствует версии установленной системы. Если в файле указаны неверные репозитории, поправьте его и выполните:sudo apt update
Это поможет синхронизировать репозитории и сделать соответствующую версию пакета доступной.
-
Удаление конфликтерующих пакетов:
Например, как упомянуто в вашем опыте, программа Firefox-ESR может создавать конфликт. Если возможно, временно удалите её:sudo apt remove firefox-esr -y
Заключение:
Эти шаги помогут вам устранить проблемы с зависимостями и избежать необходимости переустановки операционной системы. Отметим, что при работе с системами Linux всегда стоит быть внимательным к изменениям, особенно когда речь идет о таких критически важных компонентах, как libc6
. Не забывайте регулярно обновлять систему и выполнять резервные копии данных перед внесением значительных изменений.