Ошибка неудовлетворенные зависимости centos 7
Коллекция материалов по работе с системой 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:
Читайте также: