Ошибка неудовлетворенные зависимости centos 7

Обновлено: 04.07.2024

Коллекция материалов по работе с системой Linux С наступающим Новым годом!

понедельник, 26 января 2015 г.

Решение проблем с зависимостями


Иногда, при работе с пакетными менеджерами, возникает проблема с неразрешенными зависимостями пакетов. В данной статье будут рассмотрены варианты решения этой проблемы.
Убедитесь что ни один пакетный менеджер не запущен. Это может быть: apt-get, aptitude, Synaptic, KPackageKit, Центр Приложений Ubuntu и тд.
Обычно ошибка выглядит так:
Неудовлетворённые зависимости. Попытайтесь выполнить 'apt-get -f install', не указывая имени пакета, (или найдите другое решение)


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

Если установка была прервана, то следует переустановить пакет

/etc/apt/sources.list - главный список репозиториев

/etc/apt/sources.list.d - каталог для сторонних репозиториев

/var/lib/dpkg/status - список установленных пакетов

/var/lib/dpkg/available - список доступных для скачивания пакетов

Комментариев нет:

Поиск по этому блогу

Понравилось?Поделись с друзьями!

Архив блога



Viber является кросс-платформенным приложением (iPhone, Android, Windows Phone, Blackberry, Windows, Mac, Symbian, Nokia и устройства .



Консольные команды бывают иногда очень полезными (даже для обычных пользователей, которые не любят терминал), в том числе и для новичк.



проблемы с "yum update" ((неудовлетворенные зависимости))

проблемы с "yum update"

система - Федора7
хочу полностью обновить все пакеты, установленные в системе. для этого использую команду:

т.е. даже несмотря на то что есть ливна, которая некорректно отрабатывается (кстати, что случилось с её репозитариями?) , видно, что пакет python-bugzilla в репозитариях не найден.

и даже удаление из системы через yum пакета bugzilla не привело к нужному результату

Это что баг репозитарных зависимостей? Если нет - то как это вылечить (т.е. провести обновление системы в автоматическом режиме)

ЗЫЖ Питон снести не могу - он используется.

Когда у меня похожая проблема возникла, помогло обновление по частям, малыми кусками. Причём некоторые пакеты (набор пакетов) я ставил через rpm, а не через yum. В чём именно проблема тогда так и не разобрался, после обновления последующие апдейты проблем не вызывали. По моим наблюдениям, этот баг (или фича) проскакивает временами в Федоровских репозиториях. Связано это, скорее всего, со стремительным развитием Федоры, многочисленной командой сборщиков пакетов и возникающей в связи с этим рассогласованностью программ. Объясню на примере: есть программа foo-1.0, требующая библиотеки libmoo-1.0. И вот некий сборщик пакетов собрал и выложил в репозиторий libmoo-1.1 а foo-1.1 оставил на завтра. И вот, при обновлении yum видит уже обновленную версию, ставит ее в очередь, а при разрешении зависимостей происходит конфликт, и yum впадает в ступор. Решение этого привел партайгеноссе krege, решить эту проблему никак невозможно по упомянутым выше причинам.

>> и возникающей в связи с этим рассогласованностью программ.

как/кому об этом можно написать?
кто-нибудь вообще заморачивался этим? (донесением проблемы до разработчиков)

как/кому об этом можно написать?
кто-нибудь вообще заморачивался этим? (донесением проблемы до разработчиков)
Проблема должна разрешиться сама через пару дней. Впрочем, написать в багзиллу редхата это не мешает, стоит только проверить, нет ли уже имеющегося запроса. Проблема должна разрешиться сама через пару дней. Впрочем, написать в багзиллу редхата это не мешает, стоит только проверить, нет ли уже имеющегося запроса.

однако неделю уже мучаюсь.


помогите внятно сформулировать по-английски описание бага:

Summary: (1 строка)
Comments: (1 строка)

и непонятно какой компонент выбирать в Components - вроде бы это не баг yum'a, а с другой стороны нету категории repositary

При установке пакетов из официальных или сторонних репозиториев вы можете столкнуться с проблемой неудовлетворенные зависимости Ubuntu. Чтобы понять причину возникновения этой ошибки сначала надо разобраться как работают пакетные менеджеры в Linux. Здесь всё компоненты системы, библиотеки и сами программы разделены на пакеты. И если какой-либо программе нужна определенная библиотека, она не поставляется вместе с этой библиотекой, а ожидает, что эта библиотека будет уже установлена в системе.

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

Неудовлетворенные зависимости в Ubuntu


По английски наша ошибка ещё может писаться как the following packages have unmet dependencies. Она может возникнуть в нескольких случаях, давайте сначала рассмотрим основные из них:

  • Вы используете dpkg для установки deb пакета. Эта утилита не занимается установкой зависимостей. Вместо неё надо использовать apt install или потом просто установить недостающие зависимости с помощью apt, как это делается описано ниже;
  • Вы используете старую версию дистрибутива - в старых версиях могло что-то изменится в репозитории и часть пакетов была удалена или переименована. С LTS версиями такое случается редко, но с обычными релизами вполне может произойти;
  • Вы пытаетесь установить программу не от своего дистрибутива - несмотря на родство всех дистрибутивов семейства Debian, не желательно использовать программы из других дистрибутивов, так, как они могут требовать пакеты, которые в этом дистрибутиве называются по другому;
  • У вас установлен устаревший пакет, который не позволяет обновить некоторые зависимости - случается, когда в системе уже есть какой-нибудь пакет старый пакет, требующий старую версию библиотеки, а новая программа, которую вы собираетесь установить уже хочет более новую версию и не позволяет её обновить. Эта проблема не очень типична для Ubuntu, так как здесь большинство версий программ в репозиториях заморожено, но часто встречается при использовании дистрибутивов с системой роллинг релизов.

1. Обновление и исправление зависимостей

sudo apt update

sudo apt install -f

Эта команда установит зависимости, которые есть во официальных репозиториях (поможет при использовании dpkg) и если это не решит проблему, то удалит пакеты, для которых зависимости удовлетворить не удалось. Также после этого можно выполнить:

sudo dpkg --configure -a

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

sudo apt upgrade
sudo apt full-upgrade

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

Также подобная проблема может возникать при использовании PPA. Эти репозитории поддерживаются сторонними разработчиками, и могут содержать проблемы, если это ваш вариант, то, лучше поискать альтернативные способы установки необходимой программы.

2. Установка зависимостей



После загрузки пакета с сайта его можно установить через тот же dpkg:

sudo dpkg -i ffmpegthumbs_19.04.3-0ubuntu1

После этого можно снова попробовать установить свой пакет. Но устанавливаемая библиотека может потребовать свои неудовлетворенные зависимости, а та ещё свои, поэтому тянуть программы из других дистрибутивов таким образом не рационально.

3. Удаление зависимостей

Если у вас есть скачанный пакет, и он говорит, что он зависит о версии библиотеки, которой в вашей системе нет, но вы уверены, что ему подойдет и другая версия, то можно просто убрать эту зависимость из пакета. Но для этого надо его перепаковать. Такая ситуация была когда-то с популярным менеджером Viber. Рассмотрим на примере того же вайбера.

Сначала распакуйте пакет в подпапку package командой:

dpkg-deb -x ./viber.deb package

Затем туда же извлеките метаданные пакета:

dpkg-deb --control viber.deb package/DEBIAN

В файле package/DEBIAN есть строчка Depends, где перечислены все библиотеки, от которых зависит пакет и их версии. Просто удалите проблемную библиотеку или измените её версию на ту, которая есть в системе.

Затем останется только собрать пакет обратно:

dpkg -b viber package.deb

И можете устанавливать, теперь с зависимостями будет всё верно:

sudo dpkg -i package.deb

Но такое исправление зависимостей Ubuntu следует использовать только для пакетов, которые точно неверно собраны. Важно понимать, что пакетный менеджер вам не враг, а помощник, и то что вы отключите зависимости и установите программу ещё не значит, что она потом будет работать.

4. Распаковать пакет

Следующий способ подойдет, если программа которую вы устанавливаете это библиотека, например, веб-драйвер для Selenium. Пакет можно распаковать и просто разложить исполняемые файлы из него по файловой системе в соответствии с папками внутри архива. Только желательно использовать не корневую файловую систему, а каталог /usr/local/ он как раз создан для этих целей.

5. Использовать snap пакеты

Самый простой способ обойти проблемы с зависимостями - использовать новый формат установщика программ, в котором программа содержит все зависимости в установочном архиве и они устанавливаются аналогично Windows в одну папку. Установка такой программы будет дольше, но зато такие там вы точно не получите проблем с зависимостями Ubuntu. Всё программы, которые поддерживают этот формат есть в центре приложений Ubuntu:

Выводы

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.


Обычно удаление пакета с использованием системы управления пакетами YUM приведет к удалению этого пакета вместе со своими зависимостями.

Однако некоторые зависимости не будут удалены в системе, это то, что мы можем назвать «неиспользуемыми зависимостями» или (так называемыми «leaf пакетами» в соответствии с справочной страницей YUM).

В этой инструкции будет рассмотрено два способа удаления пакета вместе со своими зависимостями с помощью диспетчера пакетов YUM в CentOS 7.

2. Решение задачи.

2.1. Использование опции Autoremove YUM.

Этот метод требует, чтобы вы добавили директиву clean_requirements_on_remove в главный файл конфигурации YUM /etc/yum.conf .

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

Затем добавьте следующую строку в файл /etc/yum.conf , как показано на следующем рисунке.

Значение один означает, что директива включена, а ноль означает иначе.

Сохраните изменения и выйдите из файла.

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

2.2. Использование плагина yum-plugin-remove-with-leaves.

Это расширение удаляет любые неиспользуемые зависимости, которые были добавлены в установочный пакет, но не будет удаляться автоматически.

Он также поможет вам очистить систему от неиспользуемых библиотек и пакетов.

Если вы установили расширение, каждый раз, когда вы хотите удалить пакет, добавьте, например, флаг --remove-leaves .

Если не требуется удалять список пакетов, содержащих исполняемые бинарные файлы используется параметр --leaves-exclude-bin .

Для использования данного плагина по умолчанию, необходимо внести изменения в файл /etc/yum/pluginconf.d/remove-with-leaves.conf .

Привести его содержание к следующему виду:

То есть снять комментирование со строки содержащей опцию remove_always .

Теперь при выполнении команды деинсталляции пакета:

Будет проведена проверка зависимостей, выведен список зависимых пакетов помеченных для удаления и получив подтверждения удалит их.

Без длинных списков проверяемых и удаляемых пакетов, вывод будет иметь примерно следующее содержание:

Для получения дополнительной информации ознакомьтесь с справочной страницей YUM:

Читайте также: