Поиск по сайту:

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

В этом руководстве объясняется, как определить, какой пакет требует определенной зависимости в 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.

Надеюсь это поможет.

Статьи по данной тематике