Невыполненные зависимости. Libc6 Пакетная система повреждена

Вопрос или проблема

Каждый раз, когда я пытаюсь обновить или установить новый пакет, я получаю следующее

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, поэтому:

  1. Найдите доступные версии для libc6:

    apt show -a libc6
    
  2. Из списка, который вы видите после выполнения вышеуказанной команды,
    установите нужную версию. Например, если вы хотите версию 2.31-0ubuntu9.7, выполните:

    sudo apt install libc6="2.31-0ubuntu9.7"  
    
  3. Теперь выполните:

    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, но они не принесли успеха. Это может произойти, если требуемая версия пакета недоступна в текущих репозиториях или если репозитории не синхронизированы.

Применение

Вот рекомендации и шаги, которые помогут вам решить эту проблему, минимизируя возможные негативные последствия:

  1. Проверка доступных версий пакета libc6:
    Для начала вы можете выяснить, какие версии libc6 доступны в ваших репозиториях, используя команду:

    apt show -a libc6
  2. Достижение нужной версии:
    Если нужная версия доступна, вы можете попробовать установить её вручную:

    sudo apt install libc6=2.31-0ubuntu9.2 libc-bin=2.31-0ubuntu9.2
  3. Использование aptitude:
    Если установка через apt приводит к массовому удалению пакетов, рассмотрите использование aptitude, который зачастую предлагает более гибкие варианты разрешения зависимостей:

    sudo aptitude install libc6=2.31-0ubuntu9.2

    После запуска команды aptitude предложит несколько решений проблемы. Откажитесь от первых двух предложений, если они вам не подходят, и примите третье, если оно соответствует вашим целям.

  4. Проверка источников пакетов:
    Убедитесь в том, что ваш файл /etc/apt/sources.list настроен правильно и соответствует версии установленной системы. Если в файле указаны неверные репозитории, поправьте его и выполните:

    sudo apt update

    Это поможет синхронизировать репозитории и сделать соответствующую версию пакета доступной.

  5. Удаление конфликтерующих пакетов:
    Например, как упомянуто в вашем опыте, программа Firefox-ESR может создавать конфликт. Если возможно, временно удалите её:

    sudo apt remove firefox-esr -y

Заключение:

Эти шаги помогут вам устранить проблемы с зависимостями и избежать необходимости переустановки операционной системы. Отметим, что при работе с системами Linux всегда стоит быть внимательным к изменениям, особенно когда речь идет о таких критически важных компонентах, как libc6. Не забывайте регулярно обновлять систему и выполнять резервные копии данных перед внесением значительных изменений.

Оцените материал
Добавить комментарий

Капча загружается...