Failed dependencies on linux

Solved «error: Failed dependencies:» Install/Remove rpm with dependencies Linux

Table of Contents

error failed dependencies rpm install. install rpm with dependencies offline. Remove rpm offline with dependencies in Linux. install rpm centos 7 error failed dependencies. fedora install rpm error failed dependencies. yum install rpm with failed dependencies. yum remove rpm failed dependencies offline. How to install rpm with dependencies in Linux.

While installing or removing a rpm manually (without yum), you may get Failed dependencies error. It happens because a rpm requires certain pre-requisite rpms to be installed before installing the main rpm.

For example I am trying to install glibc-devel here but the installation fails with Failed dependencies error. As it expected glibc-headers to be installed before installing glibc-devel on this Linux host.

Similarly while trying to remove another rpm I get similar error with failed dependencies, but we will discuss the removal part at the end of this article.

Install rpm with dependencies

Now with the provided error on screen, it is not sure that this is the only dependency rpm which may be required for glibc-devel. You manually download this version of glibc-header ( glibc-headers = 2.17-260.el7_6.5 ) and then re-attempt the installation of glibc-devel but it is also possible that the next time the rpm installation fails again for another dependency.

If you are lucky enough your rpm may get installed with only few dependencies but it is also possible that you end up downloading and installing tons of rpms as a dependency. This only frustrate you and eat up your time.

To avoid this you must create a local repo and install the primary and dependency rpms using yum. So the first thing we have to do is to get the list of dependency rpms for glibc-devel here.

Download dependency rpms

In this example we will use repotrack to get the dependency list of rpms

List the dependency rpms

Now if you do not have a node with active internet connection and baseline repository then you can also get the list of dependency rpms offline.

For the sake of this article I have used repoquery command as it gives a very clear output with the rpm name and this can be used offline as well.

Below are the current list of repositories on my Linux node

Create a customised repo

Install createrepo rpm if not already installed

Since I don’t have a createrepo rpm installed, I will install it via yum

Once you have downloaded all the rpms, next create a repo using createrepo rpm. For the same of this article I have downloaded all my dependency rpms inside /root/rpms .

Navigate inside the directory which contains all the downloaded dependency rpms

Next create the repo using below command

Our repo is created successfully. You can validate this, now a new repodata directory must have been created under /root/rpms .

Create a repository file with below content. Modify the baseurl with the location as per your environment. Since I have placed my rpms and created the repository inside /root/rpms hence I have used the same.

Now for this article I want to make sure only one of my repo is used to install rpm i.e. glibc-devel . Hence I have disabled all of my other repositories and have only enable glibc-rpms repo in the below command to list the available rpms.

Читайте также:  Среда паскаль для windows

Now in a similar way we will install rpm glibc-devel by disabling all other repos except glibc-rpms repository.

As you see with this trick we were successfully able to install our glibc-devel rpm along with all the dependency rpms.

Remove rpm with dependencies

Now since we have a solution to install rpm with dependencies, let us understand the risks of removing rpm with dependencies.

It is very much possible that every time you try to remove or uninstall a rpm, you get «error: failed dependencies». Now here you have two choice with you

  1. Remove rpm along with it’s dependencies
  2. Skip the dependency rpms and just remove the primary rpm which you wish to be un-installed

This choice completely depends on the type of rpm and list of dependency rpms. For most rpms like the one I have shown in my example, I see few rpms as dependency so I can choose to ignore the dependencies and just proceed with the offline removal of pykickstart rpm as I know the dependency rpms are required and will not impact my running system.

Remove rpm offline by skipping dependencies

Now you can remove rpm by skipping all the dependencies by using —nodeps

Now let us validate if the rpm is successfully removed.

So the rpm is removed while the dependencies are still present on my Linux node, as you can see below:

Remove rpm with dependencies using yum

Now if you wish to remove rpm along with all the dependencies then you can use yum.

To remove rpm along with it’s dependencies you can use the below command

Now you must be wondering, why yum shows a larger list of dependency rpms compared to STDERR while doing rpm -e pykickstart ?

While doing rpm -e , the rpm command shows dependency list for the provided rpm. Now before attempting to remove rpm, yum will locate the dependency list of the dependency rpms i.e. for example anaconda-core is a dependency for pykickstart but then anaconda-tui is a dependency for anaconda-core . Hence the entire chain must be removed.

This is the reason why we strongly recommend «NOT TO» use yum for removing rpms with dependencies.

Lastly I hope the steps from the article to remove rpm or install rpm along with dependency rpms (fixing failed dependencies) was helpful. So, let me know your suggestions and feedback using the comment section.

Didn’t find what you were looking for? Perform a quick search across GoLinuxCloud

If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.

For any other feedbacks or questions you can either use the comments section or contact me form.

Thank You for your support!!

Источник

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

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

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

Читайте также:  Smart monitoring windows 10

Неудовлетворенные зависимости в 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. Установка зависимостей

Дальше установка зависимостей Ubuntu. Следующий этап, если вы скачали пакет в интернете, например, от другого дистрибутива с таким же пакетным менеджером, можно попытаться установить таким же способом библиотеки, которые он просит. Это может сработать особенно, если вы пытаетесь установить программу из старой версии дистрибутива. Пакеты можно искать прямо в google или на сайте pkgs.org:

Здесь собрано огромное количество пакетов от различных дистрибутивов, в том числе и от Ubuntu и Debian. Просто выберите нужную версию пакета для вашей архитектуры. Скачать файл можно чуть ниже на странице пакета:

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

sudo dpkg -i ffmpegthumbs_19.04.3-0ubuntu1

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

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

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

Читайте также:  Building linux code on windows

Сначала распакуйте пакет в подпапку 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:

Выводы

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

Источник

Error «error: Failed dependencies:» on Linux x86_64 platform (86586)

Did this article solve an issue for you?

Title

Description

When trying to install the Linux x86_64 version of QAS you receive errors similiar to below (the exact version numbers may differ).

# rpm -Uvh vasclnt-4.x.x86_64.rpm
error: Failed dependencies:
libcrypt.so.1 is needed by vasclnt-4.x.x86_64
libcrypt.so.1(GLIBC_2.0) is needed by vasclnt-4.x.x86_64
libc.so.6 is needed by vasclnt-4.x.x86_64
libc.so.6(GLIBC_2.0) is needed by vasclnt-4.x.x86_64
libc.so.6(GLIBC_2.1) is needed by vasclnt-4.x.x86_64
libc.so.6(GLIBC_2.1.2) is needed by vasclnt-4.x.x86_64
libc.so.6(GLIBC_2.1.3) is needed by vasclnt-4.x.x86_64
libc.so.6(GLIBC_2.2) is needed by vasclnt-4.x-.x86_64
libc.so.6(GLIBC_2.2.3) is needed by vasclnt-4.x.x86_64
libc.so.6(GLIBC_2.3) is needed by vasclnt-4.x-.x86_64
libdl.so.2 is needed by vasclnt-4.x.x86_64
libdl.so.2(GLIBC_2.0) is needed by vasclnt-4.x.x86_64
libdl.so.2(GLIBC_2.1) is needed by vasclnt-4.x.x86_64
libresolv.so.2 is needed by vasclnt-4.x.x86_64

Cause

In the x86_64 package we bundle in 32-bit libraries for compatibility purposes (eg. for 32-bit programs on the 64-bit OS). These dependences are included in Redhat 5, but are not included in Redhat 6 by default.

Resolution

Install the 32 bit system glibc packages on the machine

Install the packages using the —nodeps option

On RHEL 6.4 media the package is glibc-2.12-1.107.el6.i686.rpm

rpm -ivh —nodeps vasclnt-4.x.x86_64.rpm
rpm -ivh —nodeps vasgp-4.x-305.x86_64.rpm

Use the install.sh script to install — this will automatically use —nodeps if required

If using Identity Manager for Unix (IMU) 1.0 to deploy the software to Redhat 6 x86_64 you will need to upgrade to Management Console for Unix 2.5. This will automatically use —nodeps if required.

Источник

Оцените статью