Основным параметром при запросе зависимостей является имя пакета, однако имеется возможность делать запрос и по имени зависимости. Этот функционал позволяет определить, какой пакет требует данную возможность.
Опция --whatrequires позволяет найти пакеты, требующие данную возможность. Базовый синтаксис:
|
rpm –q query_options --whatrequires capability
|
Некоторые пакеты не требуются никакому другому:
|
$ rpm -q --whatrequires tcsh
no package requires tcsh
|
В какой-то степени это удачное обстоятельство, так как подобные пакеты могут быть удалены из системы без каких-либо проблем.
Разделяемые библиотеки также могут являтся именем зависимости. Запрос должен быть таким:
|
$ rpm -q --whatrequires librpm-4.1.so
rpm-4.1-1.06
net-snmp-5.0.1-6
rpm-python-4.1-1.06
rpm-devel-4.1-1.06
rpm-build-4.1-1.06
|
Этот пример показывает, что библиотека ядра системы RPM используется группой пакетов, имеющих отношение к RPM (за исключением пакета net-snmp).
Возможность, указываемая в запросе, должна быть поименована точно. Например, результаты будут различны для bash и /bin/bash, так как в первом случае имеет место имя пакета, во втором - команда. Для первого имени получим список пакетов, требующи наличия пакета bash:
|
$ rpm -q --whatrequires bash
gpm-1.19.3-20
info-4.0b-3
initscripts-6.40-1
sendmail-8.11.6-3
sysklogd-1.4.1-4
vixie-cron-3.0.1-63
ypbind-1.8-1
ypserv-1.3.12-2
|
Если же запросить пакеты, которые требуют интерпретатора /bin/bash, получим следующий вывод:
|
$ rpm -q --whatrequires /bin/bash
apmd-3.0final-34
at-3.1.8-20
autofs-3.1.7-21
autofs-3.1.7-21
bash-2.05-8
bind-9.1.3-4
cipe-1.4.5-6
rontabs-1.10-1
dialog-0.9a-5
gpm-1.19.3-20
hotplug-2001_04_24-11
initscripts-6.40-1
ipchains-1.3.10-10
iproute-2.2.4-14
kudzu-0.99.23-1
logwatch-2.1.1-3
man-1.5i2-6
mkbootdisk-1.4.2-3
mkinitrd-3.2.6-1
mutt-1.2.5i-17
openssh-server-3.1p1-2
pine-4.44-1.72.0
rpm-build-4.0.3-1.03
rusers-server-0.17-12
sendmail-8.11.6-3
shapecfg-2.2.12-7
sharutils-4.2.1-8
sysklogd-1.4.1-4
tetex-1.0.7-30
ucd-snmp-4.2.1-7
vixie-cron-3.0.1-63
xinetd-2.3.3-1
ypbind-1.8-1
ypserv-1.3.12-2
|
Не существует короткой формы опции --whatrequires .
Другие возможности, в особенности разделяемые библиотеки, используются большим количеством пакетов. Например:
|
# rpm -q --whatrequires libcrypt.so.1 | sort
autofs-3.1.7-21
cvs-1.11.1p1-3
cyrus-sasl-1.5.24-23
cyrus-sasl-devel-1.5.24-23
cyrus-sasl-plain-1.5.24-23
fetchmail-5.9.0-1
ircii-4.4Z-7
krbafs-1.0.9-2
nss_ldap-172-2
openldap12-1.2.12-4
openldap-2.0.11-13
openldap-clients-2.0.11-13
pam-0.75-19
pam_krb5-1.46-1
passwd-0.64.1-7
perl-5.6.0-17
pine-4.44-1.72.0
pwdb-0.61.1-3
python-1.5.2-35
rsh-0.17-5
rsh-server-0.17-5
screen-3.9.9-3
sendmail-8.11.6-3
shadow-utils-20000902-4
sh-utils-2.0.11-5
SysVinit-2.78-19
tcsh-6.10-6
util-linux-2.11f-17
vim-enhanced-5.8-7
wu-ftpd-2.6.1-20
xinetd-2.3.3-1
ypserv-1.3.12-2
yp-tools-2.5-1
|
Поскольку некоторые пакеты требуют доступа к функциям шифрования/дешифрования, эта библиотека приобретает критическое значение для нормального функционирования операционной системы.
Для более удобного отслеживания зависимостей запросы можно комбинировать. Например:
|
$ rpm -q --provides sendmail
smtpdaemon
sendmail = 8.11.6-3
$ rpm -q --whatrequires smtpdaemon
fetchmail-5.9.0-1
mutt-1.2.5i-17
|
Первая команда выводит список возможностей, которые предоставляет пакет sendmail, включая шаблонную возможность smtpdaemon. Далее можно запросить список пакетов, нуждающихся в этих возможностях, как показано во второй команде. Это хорошая помощь в процессе анализа пакетов, которые зависят от других пакетов, которые зависят еще от каких-то пакетов.
Далее - Какой пакет предоставляет данную возможность?
Назад - Проверка на конфликты
Содержание