Linux

Fix: Unable to Correct Problems ‘You have Held Broken Packages’

Содержание:

Вы можете обнаружить, что при попытке установить пакет в Linux появляется страшная строка с текстом E: Unable to correct problems, you have held broken packages. После этого установка отказывается продвигаться дальше этого места. Вы можете обнаружить это в любом дистрибутиве Linux, который использует apt-get для управления пакетами, включая Debian, а также различные дочерние дистрибутивы Linux Mint и Ubuntu.

Причиной этого являются неработающие зависимости, которые являются побочным эффектом установки пакетов, зависящих от других пакетов, которые не установлены. Когда apt-get собирается что-то установить, он замечает, что у него нет доступа к чему-то, что ему нужно, и поэтому не может’ продолжать. Несколько основных приемов работы с командной строкой, а также графический инструмент позволяют быстро исправить ситуацию.

Способ 1: Использование dpkg –configure для исправления сбойных пакетов

Во время работы в терминале попробуйте выполнить команду sudo dpkg –configure -a запустить автоматический процесс обновления, который ищет неработающие зависимости в системе, вызванные неустановленными пакетами. Этот инструмент должен автоматически установить все пакеты, которых, по его мнению, вам не хватает, без вмешательства пользователя, хотя если вас попросят установить что-либо, вам следует нажать клавишу y, чтобы ответить на запрос.

Если установка не находит битых пакетов, то вы не должны видеть никаких результатов. Мы запустили эту программу на чистой тестовой машине под управлением Xubuntu, поэтому она не обнаружила никаких ошибок, но если вы получаете сообщение “Невозможно исправить проблемы, у вас повреждены пакеты”, то эта программа может обнаружить несколько пакетов, которые необходимо установить. Запустив ее, попробуйте sudo apt-get install -f из командной строки.

Эта программа просмотрит и построит список зависимостей, а затем прочитает информацию о состоянии. Если вы получили сообщение о том, что было “0 обновленных, 0 вновь установленных, 0 подлежащих удалению и 0 не обновленных” пакетов, значит, вы либо работали без нарушенных зависимостей, либо предыдущая команда все исправила. На этом этапе можно выполнить команду sudo apt-get clean && sudo apt-get update после чего sudo apt-get upgrade для обновления всех пакетов в системе. Это может занять некоторое время, в зависимости от того, как долго в вашей системе были проблемы с пакетами.

Способ 2: Использование команды dist-upgrade

Если вы получили сообщение о том, что “некоторые пакеты были задержаны”, поэтому вы не смогли успешно выполнить предыдущую команду, то вам следует выполнить команду sudo apt-get dist-upgrade для установки остальных пакетов. Помимо выполнения функций обычного обновления, опция dist-upgrade справляется с изменением зависимостей с новыми версиями пакетов. Поскольку apt-get имеет особую систему конфликтов, он обычно пытается обновить наиболее важные пакеты, но при этом ничего не делает с менее важными для вашей системы пакетами. Использование этой команды заставляет обновить даже эти пакеты.

При этом, если не обнаружено ни одного поврежденного пакета, вы получите третье сообщение о том, что ничего не обновлено и ничего не установлено заново. Если это так, то можно попробовать sudo apt-get upgrade снова, чтобы в случае каких-либо изменений подпрограмма автоматического обновления успела сработать. С другой стороны, если вы знаете конкретное имя нужного вам пакета, то можете установить его вручную.

Например, предположим, что вам не хватало компонента GNUStep runtime, поскольку вы хотели использовать синтез голоса. Вы можете просто набрать sudo apt-get install gnustep-gui-runtime чтобы установить этот важный пакет. Помните, что это всего лишь пример, и вы можете заменить gnustep-gui-runtime на название любого пакета, который вам необходимо установить. Современные дистрибутивы, основанные на стандарте apt-get, содержат несколько тысяч пакетов, но если вы знаете название нужного вам пакета, то это заставит его установить.

Метод 3: Исправление неработающих пакетов с помощью Synaptic

Если у вас есть графический менеджер пакетов Synaptic, то вы можете использовать этот инструмент для исправления поврежденных пакетов. Откройте программу и выберите выпадающее меню Edit (Правка). В этом меню должна быть опция “Fix Broken Packages”, поэтому выберите ее, если это так. Работа программы не займет много времени, если в ней нет большого количества сломанных пакетов, но она может обнаружить ряд ошибок, которые замедлят выполнение.

После того как программа выполнит все действия, в нижней строке состояния вы увидите надпись “Успешно исправлены проблемы с зависимостями”.

Теперь вы можете обновлять и устанавливать пакеты как обычно. Большинство пользователей будут действовать таким образом только в том случае, если они уже работали в Synaptic, но он’есть всегда, когда он вам нужен. После запуска вы можете закрыть Synaptic и снова работать из командной строки или продолжить вносить изменения здесь.

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