10.1.1 Имена зависимостей

Основной синтаксис именования зависимостей:

Requires: capability

где capability, как правило, имя другого пакета. В данном примере тип зависимости - Requires, то есть те возможности, которые нужны нашему пакету. Для всех других типов зависимостей строки будут выглядеть похоже:

Provides: capability

Obsoletes: capability

Conflicts: capability

Для добавления группы зависимостей их разделяют пробелом, или запятой и пробелом:

Requires: bash perl

10.1.1.1 Версии зависимостей

Часто бывает необходимо уточнить версию зависимости, например:

Conflicts: bash >= 2.0

Запись в строке говорит о том, что пакет будет конфликтовать с любым пакетом bash, чья версия 2.0 или выше.

В таблице приводятся различные случаи сравнения версий:

Тип сравнения

Что значит

package < version

Пакет со значением версии меньше, чем version

package > version

Пакет со значением версии больше, чем version

package >= version

Пакет со значением версии больше или равной version

package <= version

Пакет со значением версии меньше или равной version

package = version

Пакет со значением версии, в точности равной version

package

Пакет под именем package любой версии

При сравнении версий RPM поддерживает и расширенные номера, в стиле Эпоха: Версия-Релиз, например:

1:5.6.0-17

Очень часто для сравнения требуется только версия. Эпоха может помочь в случае сложных номеров версий, а релиз почти никогда не используется, за исключением случаев, когда зависимость привязана к конкретной сборке.

10.1.1.2 Создание виртуальных возможностей

Зависимости базируются на возможностях, в большинстве случаев возможность предоставляется пакетом. Но можно создать так называемые виртуальные возможности, которые представляют собой абстрактные имена. Например, пакет sendmail предоставляет функциональность smtp-сервера и в пакете этот факт представлен виртуальной возможностью, названной smtpdaemon. Например:

Provides: smtpdaemon

Данная возможность ссылается на функционал SMTP этого пакета. Допустим, ряд программ нуждается в отправке писем во время своей работы, причем все равно, через какой почтовый сервис. Тогда, указав в соответствующих пакетах виртуальную возможность smtpdaemon, разработчик сделает допустимым установку пакета с такими программами в систему, в которой есть какой-либо из smtp-сервисов (если укажет в Requires параметр smtpdaemon), причем неважно, какой именно.

10.1.1.3 Зависимости от скриптовых движков и модулей

Скриптовые языки, такие, как Perl или Tcl, поддерживают модули расширения (add-ons). Разрабатываемый пакет может зависеть от такого модуля. RPM использует специальный синтаксис с использованием круглых скобок для указания модуля интерпретируемого языка. Например:

Requires: perl(Carp) >= 3.2

Такая строка указывает на потребность пакета в модуле Carp языка Perl версии 3.2 или выше.

Далее - Установка предварительных требований
Назад - Зависимости
Содержание