Как решить проблему неудовлетворённых зависимостей после добавления PPA?

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

Иногда при установке я получаю ошибку такого типа:

Некоторые пакеты не могут быть установлены. Это может означать, что вы запросили невозможную ситуацию или если вы используете нестабильную
версию дистрибутива, некоторые необходимые пакеты еще не были созданы или были перемещены из Incoming.
Следующая информация может помочь решить ситуацию:

Следующие пакеты имеют неудовлетворенные зависимости:
 package1 : Зависит: package2 (>= 1.8), но будет устанавливаться 1.7.5-1ubuntu1
E: Невозможно исправить проблемы, у вас «зависшие» пакеты.

Как мне это решить?

APT — это система управления пакетами для Debian и других основанных на нем дистрибутивов Linux, таких как Ubuntu. В большинстве случаев APT легко использовать для установки, удаления и обновления пакетов. В редких случаях, особенно когда вы смешиваете сторонние зависимости, apt-get может выдать ошибку, сообщающую, что установка пакета не может быть завершена.

Решения:

Всегда рекомендуется делать резервные копии конфигурационных файлов, таких как /etc/apt/sources.list, чтобы вы могли отменить изменения, если это потребуется.

  • Если ошибка показывает что-то вроде этого:

    <some-package>: Зависит: <other-package> (= version), но будет устанавливаться this-version

    Убедитесь, что репозитории restricted и universe включены. Нажмите Alt+F2, введите software-properties-gtk и нажмите Enter.

    На вкладке Программы Ubuntu включите все репозитории.

  • Одной из возможных причин неудовлетворенных зависимостей может быть поврежденная база данных пакетов, и/или некоторые пакеты были установлены неправильно. Чтобы исправить эту проблему, нажмите Alt+Ctrl+T для открытия терминала и попробуйте выполнить одну из следующих команд:

    sudo apt-get clean

    либо,

    sudo apt-get autoclean

    apt-get clean очищает локальный репозиторий загруженных файлов пакетов (.deb файлы). Он удаляет все, кроме файла блокировки из /var/cache/apt/archives/ и /var/cache/apt/archives/partial/. apt-get autoclean очищает локальный репозиторий загруженных файлов пакетов, но в отличие от apt-get clean, он удаляет только те файлы пакетов, которые больше нельзя загрузить, и которые в основном бесполезны.

  • Одно из самых простых решений проблемы с зависимостями — выполнить:

    sudo apt-get -f install

    Флаг -f здесь означает “исправить ошибки”. Apt попытается исправить сломанные зависимости. Если вы вручную установили пакет, имеющий неудовлетворенные зависимости, apt-get установит эти зависимости, если это возможно, в противном случае, возможно, он просто удалит пакет, который вы установили, чтобы решить проблему.

    Затем выполните:

    sudo dpkg --configure -a

    Затем снова выполните эту команду:

    sudo apt-get -f install

    Если вывод будет:

    0 обновлено, 0 новых установок, 0 удалено и 1 не обновлен.

    Это значит, что он не сработал.

  • Следующее решение — выполнить:

    sudo apt-get -u dist-upgrade

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

    sudo apt-get -o Debug::pkgProblemResolver=yes dist-upgrade

    Если он не может устранить конфликты, он завершит работу с:

    0 обновлено, 0 новых установок, 0 удалено и 6 не обновлено.

    Удалите удерживаемые пакеты один за другим, выполняя dist-upgrade каждый раз, пока удерживаемых пакетов не останется. Затем переустановите любые нужные пакеты. Обязательно используйте параметр --dry-run, чтобы быть полностью информированным о последствиях:

    sudo apt-get remove --dry-run package-name

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

Наконец, если ничего не помогает, вы можете попытаться удовлетворить зависимости самостоятельно, либо найдя и установив необходимые пакеты, либо установив их из исходного кода, а затем создав для них пакеты “deb”.

Отключение/Удаление/Очистка PPA:

PPA (Personal Package Archive) — это репозиторий, размещенный на Launchpad. Вы можете использовать PPA для установки или обновления пакетов, которые недоступны в официальных репозиториях Ubuntu.

Одной из самых распространенных причин неудовлетворенных зависимостей являются PPA, особенно когда они используются для обновления существующего пакета в репозиториях Ubuntu. Чтобы решить проблему, у вас есть три варианта: отключить, очистить (вернуть оригинальный пакет в репозиториях Ubuntu) или удалить PPA.

  • Отключение:

    Отключение PPA означает отсутствие обновлений для пакетов, установленных из этого PPA. Для отключения PPA: Откройте Центр программного обеспечения > Правка > Источники программного обеспечения Или,

    Нажмите Alt+F2 и выполните software-properties-gtk.

    Нажмите на вкладку Другие программы, вы увидите здесь две строки для каждого PPA: одну для скомпилированных пакетов и одну для источника, Снимите обе строки, чтобы отключить PPA. Здесь также можно добавлять и удалять PPA.

  • Очистка:

    Очистка PPA означает понижение версий пакетов в выбранном PPA до версий в официальных репозиториях Ubuntu и отключение этого PPA. PPA Purge делает это. Для установки PPA Purge выполните следующую команду:

    sudo apt-get install ppa-purge

Однако, учитывая, что apt сломан, вышеуказанная команда не выполнится. Поэтому используйте эту команду:

mkdir ppa-purge && cd ppa-purge && wget http://mirror.pnl.gov/ubuntu/pool/universe/p/ppa-purge/ppa-purge_0.2.8+bzr56_all.deb && wget http://mirror.pnl.gov/ubuntu//pool/main/a/aptitude/aptitude_0.6.6-1ubuntu1_i386.deb && sudo dpkg -i ./*.deb

Для использования PPA Purge:

sudo ppa-purge ppa:someppa/ppa

Если команда ‘ppa-purge’ не выполняется по какой-то причине, вы не сможете снова выполнить ‘ppa-purge’, пока не включите PPA (чтобы включить PPA, следуйте тем же шагам, что и для отключения PPA, и отметьте оба пункта для конкретного PPA, чтобы включить его).

Примечание: PPA Purge не удаляет PPA (возможно, в будущем), поэтому придется вручную удалить PPA.

  • Удаление:

    Если пакет, установленный из PPA, отсутствует в официальных репозиториях Ubuntu, то использование PPA Purge не рекомендуется, поскольку нечего будет понижать, и PPA Purge его не удалит. Для удаления PPA и установленных пакетов выполните следующие команды: (игнорируйте первую команду, если не хотите удалять установленные пакеты)

    sudo apt-get autoremove --purge package-name
    sudo add-apt-repository --remove ppa:someppa/ppa
    sudo apt-get autoclean
    

Вы также можете использовать Y PPA Manager для отключения/удаления/очистки PPA (подробности в конце ответа).

Профилактические меры:

Как предотвратить это в будущем?

  • Держите Ubuntu в актуальном состоянии. Ubuntu автоматически уведомляет, когда доступны обновления, вы также можете проверить наличие доступных обновлений, нажав на Индикатор сеанса на панели Unity:

    Или нажмите Alt+Ctrl+T, чтобы открыть терминал, и выполните следующие команды:

    sudo apt-get update
    sudo apt-get upgrade

    Update: синхронизирует список доступных пакетов с серверами в исходных репозиториях. Upgrade: загружает и устанавливает любые новые версии установленных пакетов.

  • Если вы решите добавить другие репозитории в sources.list, убедитесь, что репозиторий рассчитан на работу (и известно, что он работает) с Ubuntu. Репозитории, которые не предназначены для работы с вашей версией Ubuntu, могут вызвать несоответствия в вашей системе и могут заставить вас переустановить. Также убедитесь, что вам действительно нужно добавлять внешние репозитории, так как искомый вами пакет (ы) может уже быть введен в официальные репозитории! Источник
  • Удалите дублирующие PPA. Y PPA Manager (руководство по установке в конце ответа) может легко сканировать и удалять дублирующие PPA.

    • Нажмите Alt+F2 и запустите y-ppa-manager, чтобы открыть Y PPA Manager.
    • После открытия дважды щелкните или нажмите Enter на Advanced.
    • В появившемся окне выберите Scan and remove duplicate PPAs и нажмите OK.

enter image description here

Получение помощи:

При обращении за помощью на Askubuntu или любом другом форуме помощи, вы должны включить вывод следующих команд в ваш вопрос:

  • Вывод фактической ошибки:

    sudo apt-get install package-name
  • Это покажет ваш sources.list:

    cat /etc/apt/sources.list
  • Это покажет список PPA (если такие есть):

    cat /etc/apt/sources.list.d/*

Дополнительные источники:


Y PPA Manager:
Y PPA Manager — это универсальное решение для всех ваших потребностей в PPA.

y ppa manager

Вот некоторые из его функций:

  • поиск пакетов во всех PPA Launchpad
  • список и загрузка пакетов в PPA
  • добавление / удаление / очистка PPA
  • резервное копирование и восстановление исходников PPA
  • удаление дублирующих источников PPA

Для установки Y PPA Manager, откройте терминал, нажав Alt+Ctrl+T и выполните следующие команды:

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager

Учитывая, что apt сломан, используйте следующие команды вместо

sudo su

и

32 бита:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yad_0.17.1.1-1~webupd8~precise_i386.deb && dpkg -i ./*.deb

64 бита:

mkdir y-ppa-manager && cd y-ppa-manager && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/launchpad-getkeys_0.3.2-1~webupd8~oneiric_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/y-ppa-manager_0.0.8.6-1~webupd8~precise_all.deb && wget https://launchpad.net/~webupd8team/+archive/y-ppa-manager/+files/yад_0.17.1.1-1~webupd8~precise_amd64.deb && dpkg -i ./*.deb

Ответ или решение

Когда вы добавляете PPA (Персональный Архив Пакетов) в вашу систему на основе Ubuntu и сталкиваетесь с ошибкой "незакрытые зависимости", это может быть вызвано различными факторами. Давайте подробно рассмотрим, как можно решить эту проблему, следуя структуре FOREST (F – Fact, O – Opinion, R – Research, E – Example, S – Summary, T – Transition).

F – Факт:
Проблема с незакрытыми зависимостями означает, что ваша система пытается установить пакет, но не может, поскольку определенные пакеты, на которые он зависит, либо не установлены, либо недоступны в необходимой версии. Это часто происходит при использовании нестабильных версий или при добавлении PPA, которые содержат пакеты, не совместимые с текущей средой.

O – Мнение:
Работа с зависимостями может показаться сложной задачей для непрофессионала, но, применяя системный подход, можно быстро диагностировать и устранить проблему. Это позволит не только успешно установить необходимый софт, но и улучшить общее понимание системы управления пакетами в Linux.

R – Исследование:
Для начала, сделайте резервные копии ваших текущих файлов источников, чтобы иметь возможность откатиться к более безопасной конфигурации при необходимости. Основные команды, которые могут понадобиться:

  1. sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
  2. sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.backup

Далее, проверьте настройки источников и убедитесь, что все необходимые репозитории включены. Для этого выполните команду sudo software-properties-gtk и убедитесь, что включены вселенные (universe) и ограниченные (restricted) репозитории.

E – Пример:
Проблема может быть вызвана некорректной информацией о пакетах. В таком случае выполните следующие команды для очистки кеша и исправления ошибок:

  1. sudo apt-get clean – для полной очистки кеша пакетов.
  2. sudo apt-get autoclean – для удаления устаревших пакетов из кеша.
  3. sudo apt-get update – для обновления списка пакетов.
  4. sudo apt-get -f install – для попытки исправления ошибок и завершения недоустановленных пакетов.

Если эти команды не решают проблему, возможно, нужно перейти к «ручному режиму». Попробуйте удалить блокирующие пакеты:

  • sudo dpkg --configure -a – настройка всех частично установленных пакетов.
  • sudo apt-get remove [problem-package] – удаление пакетов, несовместимых с системой.

S – Резюме:
Устранение проблем с зависимостями – это важный навык при работе с дистрибутивами Linux на основе Debian/Ubuntu. Понимание структуры PPA и корректная настройка репозиториев может значительно снизить частоту таких ошибок, а также повысить стабильность и безопасность вашей системы.

T – Переход:
После успешного устранения ошибки установки не забудьте регулярно проверять и обновлять вашу систему. Это обеспечит актуальность всех компонентов и предотвратит будущие конфликты.

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

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