5.2.1 Проверка зависимостей вида Requires

Первый и наиболее важный шаг на пути увязывания зависимостей - это определение потребностей пакета. Если все возможности, в которых нуждается пакет (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
Назад - Неактуальные возможности
Содержание