Можно ли установить такие требования к версии зависимости:
Required: somepackage >= 0.5.0 AND somepackage < 0.6.0
Так только somepackage 0.5.x будет автоматически установлен.
Да, сделать это очень просто.
Просто пиши:
Requires: somepackage >= 0.5.0, somepackage < 0.6.0
в ваш .spec
файл.
Добавление требований к версии
Если к пакету предъявляются несколько более строгие требования, можно потребовать определенные версии пакета. Все, что необходимо, - это добавить желаемый номер версии, которому предшествует один из следующих операторов сравнения:
Требуется пакет с версией ниже указанной.
Требуется пакет с версией, меньшей или равной указанной версии.
Требуется пакет с версией, равной указанной версии.
Требуется пакет с версией, равной или выше указанной версии.
Требуется пакет с версией выше указанной.
Продолжая наш пример, предположим, что требуемая версия панели пакетов действительно должна быть не ниже 2.7, а пакет baz должен быть версии 2.1 - никакая другая версия не подходит. Вот как будет выглядеть строка тега requires: requires: bar> = 2.7, baz = 2.1
Источник: http://rpm.org/user_doc/more_dependencies.html
Описанная выше система работает для большинства пакетов; однако, если пакет, который вам нужен, предоставляется как [виртуальная возможность] [1] или иным образом (например, ключевое слово «Provides:») предоставляется пакетами разные имена (которые не конфликтуют друг с другом), то вы можете получить два разных пакета, каждый из которых индивидуально удовлетворяет одному из ваших требований. Например, если ваш файл спецификации содержит:
Requires: postgresql-server >= 8.4, postgresql-server < 9.0
Может привести к установке (если у вас есть эти пакеты для yum):
Но будет не установите postgresql84-server, который, вероятно, является тем пакетом, который вы ожидали установить.
(В этом случае решением было бы просто потребовать postgresql84-server; однако, вероятно, есть другие примеры, у которых нет простого решения.)
Мне не ясно, пытаетесь ли вы создать пакет или установить пакет и «ограничить» его зависимости.
Я не вижу способа сделать второй случай без пересборки пакета.
Вы можете получить SRPM и отредактировать файл спецификации, а также добавить / изменить запись Requires (вы хотите somepackage 0.5.x, не так ли?) Примерно так:
Requires: somepackage = 0.5.0
а затем перестроить с помощью
rpmbuild -bb -v yourpackage.spec
Если вы никогда этого не делали, это выглядит устрашающе, но решает вашу проблему. Имейте в виду, что если вы создаете общедоступный пакет для дистрибутива, вы можете прочитать его руководство, потому что устанавливать зависимости таким способом обычно не рекомендуется.