Как найти зависимости для конкретного пакета в CentOS

by itisgood

В этом руководстве объясняется, как найти, какой пакет требует определенной зависимости в CentOS, RHEL, Fedora Linux.

Вы можете спросить, почему нам нужно найти зависимости.

Могло быть много причин.

Если вы поддерживаете пакет RPM, вам нужно знать о необходимых зависимостях для определенного пакета. К

роме того, мы можем опустить конкретный пакет при установке множества X-пакетов.

Скажем, например, на днях я пытался установить root, набор пакетов, предоставляемых EPEL.

К сожалению, вся корневая система разделена на множество 40 пакетов.

Чтобы установить их, я просто запустил:

yum install root-*

Но проблема заключается в 40 пакетах, для одного пакета требуется texlive в качестве зависимости, и он потребляет примерно 3 ГБ дискового пространства.

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

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

Давайте посмотрим, как это сделать с помощью некоторых простых примеров.

Найти зависимости для конкретного пакета в RHEL, CentOS, Fedora

yum deplist <package name>

Например, чтобы найти зависимости для sqlite, запустите:

yum deplist sqlite

Пример вывода

Loaded plugins: fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Loading mirror speeds from cached hostfile
 * base: centos.excellmedia.net
 * epel: ftp.riken.jp
 * extras: centos.excellmedia.net
 * updates: centos.excellmedia.net
package: sqlite.i686 3.7.17-8.el7
 dependency: /sbin/ldconfig
 provider: glibc.x86_64 2.17-106.el7_2.6
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libc.so.6(GLIBC_2.4)
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libdl.so.2
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libdl.so.2(GLIBC_2.0)
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libdl.so.2(GLIBC_2.1)
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libncurses.so.5
 provider: ncurses-libs.i686 5.9-13.20130511.el7
 dependency: libpthread.so.0
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libpthread.so.0(GLIBC_2.0)
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libpthread.so.0(GLIBC_2.1)
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libpthread.so.0(GLIBC_2.2)
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libreadline.so.6
 provider: readline.i686 6.2-9.el7
 dependency: libtinfo.so.5
 provider: ncurses-libs.i686 5.9-13.20130511.el7
 dependency: rtld(GNU_HASH)
 provider: glibc.x86_64 2.17-106.el7_2.6
 provider: glibc.i686 2.17-106.el7_2.6
package: sqlite.x86_64 3.7.17-8.el7
 dependency: /sbin/ldconfig
 provider: glibc.x86_64 2.17-106.el7_2.6
 provider: glibc.i686 2.17-106.el7_2.6
 dependency: libc.so.6(GLIBC_2.14)(64bit)
 provider: glibc.x86_64 2.17-106.el7_2.6
 dependency: libdl.so.2()(64bit)
 provider: glibc.x86_64 2.17-106.el7_2.6
 dependency: libdl.so.2(GLIBC_2.2.5)(64bit)
 provider: glibc.x86_64 2.17-106.el7_2.6
 dependency: libncurses.so.5()(64bit)
 provider: ncurses-libs.x86_64 5.9-13.20130511.el7
 dependency: libpthread.so.0()(64bit)
 provider: glibc.x86_64 2.17-106.el7_2.6
 dependency: libpthread.so.0(GLIBC_2.2.5)(64bit)
 provider: glibc.x86_64 2.17-106.el7_2.6
 dependency: libreadline.so.6()(64bit)
 provider: readline.x86_64 6.2-9.el7
 dependency: libtinfo.so.5()(64bit)
 provider: ncurses-libs.x86_64 5.9-13.20130511.el7
 dependency: rtld(GNU_HASH)
 provider: glibc.x86_64 2.17-106.el7_2.6
 provider: glibc.i686 2.17-106.el7_2.6

Как видно из вышесказанного, sqllite требует много зависимостей, таких как glibc, libreadline, ncurses и т. д.

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

Чтобы использовать эту команду, вам необходимо установить пакет yum-utils.

Для его установки выполните следующую команду.

sudo yum install yum-utils

или

sudo dnf install yum-utils

Затем перечислите зависимости для пакета, как показано ниже.

repoquery --requires --resolve <package>

Пример

repoquery --requires --resolve sqlite

Пример вывода

glibc-0:2.17-157.el7.i686
readline-0:6.2-9.el7.i686
ncurses-libs-0:5.9-13.20130511.el7.i686
glibc-0:2.17-157.el7_3.1.x86_64

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

Если вы хотите узнать, откуда приходит конкретный пакет, просто запустите:

yum provides sqlite

Пример вывода

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.excellmedia.net
 * epel: kodeterbuka.beritagar.id
 * extras: centos.excellmedia.net
 * updates: centos.excellmedia.net
sqlite-3.7.17-8.el7.i686 : Library that implements an embeddable SQL database
 : engine
Repo : base

sqlite-3.7.17-8.el7.x86_64 : Library that implements an embeddable SQL database
 : engine
Repo : base

sqlite-3.7.17-8.el7.x86_64 : Library that implements an embeddable SQL database
 : engine
Repo : @base

Как вы видите выше, пакет sqlite находится из репозитория base.

 

You may also like

Leave a Comment