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