Первый и наиболее важный шаг на пути увязывания зависимостей - это определение потребностей пакета. Если все возможности, в которых нуждается пакет (requires), а это не только библиотеки, нужные упакованному в пакет ПО, но и потребности скриптов, триггеров и тому подобных инструментов, удовлетворены, пакет может быть безопасно установлен.
Опция --requires в команде rpm -q поможет определить потребности заданного пакета. Базовый синтаксис:
|
rpm –q query_options --requires packages
|
Например:
|
$ rpm -qp --requires sendmail-8.12.5-7.i386.rpm
/usr/sbin/alternatives
rpmlib(VersionedDependencies) <= 3.0.3-1
chkconfig >= 1.3
/usr/sbin/useradd
/bin/mktemp
fileutils
gawk
sed
sh-utils
procmail
bash >= 2.0
/bin/sh
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
/bin/bash
libcrypto.so.2
libcrypt.so.1
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.1.3)
libc.so.6(GLIBC_2.2)
libdb-4.0.so
libgdbm.so.2
libhesiod.so.0
liblber.so.2
libldap.so.2
libnsl.so.1
libnsl.so.1(GLIBC_2.0)
libresolv.so.2
libresolv.so.2(GLIBC_2.0)
libresolv.so.2(GLIBC_2.2)
libsasl.so.7
libssl.so.2
|
В этом примере тестируется не установленный пакет, а файл rpm-пакета sendmail, на предмет требований, которые пакет предъявляет к наличию в системе тех или иных средств. Данный пакет зависит от большого количества сторонних библиотек, пакетов и исполняемых файлов. Кроме того, есть требование к определенной версии системы RPM (зависимость от rpmlib).
Для проверки степени удовлетворения зависимостей можно использовать опцию --test перед установкой пакета. Под этой опцией RPM лишь проверяет возможность установки и диагностирует возможные ошибки, но не выполняет реальных действий.
Короткий вариант опции: -R.
Кроме бинарных пакетов, зависимости в смысле требований могут иметь и пакеты с исходным кодом, так как для сборки ПО часто требуются различные средства. Например, нижеследующая команда показывает потребности пакета с исходным кодом (они будут проверятся при установке пакета в систему):
|
$ rpm -qp --requires telnet-0.17-23.src.rpm
ncurses-devel
|
Некоторые пакеты требуют определенных версий других пакетов, например:
|
pm -qp --requires xcdroast-0.98a9-18.src.rpm
imlib-devel >= 1.9.13-9
gtk+-devel >= 1.2.10
desktop-file-utils >= 0.2.92
rpmlib(CompressedFileNames) <= 3.0.4-1
|
Из этого примера видно, что пакет xcdroast для сборки своего ПО требует imlib-devel версии 1.9.13-9 или выше, gtk+-devel версии 1.2.10 или выше, и desktop-file-utils версии 0.2.92 или выше. Это более строгое требование, чем зависимость от определенного пакета вообще, независимо от версии. Этот старый пакет требует также, чтобы наличествовала версия RPM
3.0.4-1 или ниже.
Некоторые пакеты требуют определенной версии rpmlib. Например, пакет setup содержит специальные системные конфигурационные файлы, которые зависят от определенного функционала RPM:
|
$ rpm -q --requires setup
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
|
Как видно из примера, данный пакет зависит от собственных возможностей RPM, в частности важно, каким образом формируются списки файлов в нагрузке и как именно они компрессируются.
Далее - Проверка зависимостей вида Provides
Назад - Неактуальные возможности
Содержание