Первый и наиболее важный шаг на пути увязывания зависимостей - это определение потребностей пакета. Если все возможности, в которых нуждается пакет (requires), а это не только библиотеки, нужные упакованному в пакет ПО, но и потребности скриптов, триггеров и тому подобных инструментов, удовлетворены, пакет может быть безопасно установлен.
Опция --requires в команде rpm -q поможет определить потребности заданного пакета. Базовый синтаксис:
rpm q query_options --requires packages |
Например:
$ rpm -qp --requires sendmail-8.12.5-7.i386.rpm |
В этом примере тестируется не установленный пакет, а файл rpm-пакета sendmail, на предмет требований, которые пакет предъявляет к наличию в системе тех или иных средств. Данный пакет зависит от большого количества сторонних библиотек, пакетов и исполняемых файлов. Кроме того, есть требование к определенной версии системы RPM (зависимость от rpmlib).
Для проверки степени удовлетворения зависимостей можно использовать опцию --test перед установкой пакета. Под этой опцией RPM лишь проверяет возможность установки и диагностирует возможные ошибки, но не выполняет реальных действий.
Короткий вариант опции: -R.
Кроме бинарных пакетов, зависимости в смысле требований могут иметь и пакеты с исходным кодом, так как для сборки ПО часто требуются различные средства. Например, нижеследующая команда показывает потребности пакета с исходным кодом (они будут проверятся при установке пакета в систему):
$ rpm -qp --requires telnet-0.17-23.src.rpm |
Некоторые пакеты требуют определенных версий других пакетов, например:
pm -qp --requires xcdroast-0.98a9-18.src.rpm |
Из этого примера видно, что пакет 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 |
Как видно из примера, данный пакет зависит от собственных возможностей RPM, в частности важно, каким образом формируются списки файлов в нагрузке и как именно они компрессируются.
Далее - Проверка зависимостей вида Provides
Назад - Неактуальные возможности
Содержание