Назад | Перейти на главную страницу

RPM: Установить Требуется: somepackage> = 0.5.0 AND somepackage <0.6.0

Можно ли установить такие требования к версии зависимости:

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):

  • postgresql-server 8.1.23-6.el5_8 (postgresql-server <9.0)
  • postgresql92-server 9.2.5-1PGDG.rhel5 (postgresql-server> = 8.4)

Но будет не установите postgresql84-server, который, вероятно, является тем пакетом, который вы ожидали установить.

(В этом случае решением было бы просто потребовать postgresql84-server; однако, вероятно, есть другие примеры, у которых нет простого решения.)

Мне не ясно, пытаетесь ли вы создать пакет или установить пакет и «ограничить» его зависимости.

Я не вижу способа сделать второй случай без пересборки пакета.

Вы можете получить SRPM и отредактировать файл спецификации, а также добавить / изменить запись Requires (вы хотите somepackage 0.5.x, не так ли?) Примерно так:

Requires: somepackage = 0.5.0

а затем перестроить с помощью

rpmbuild -bb -v yourpackage.spec

Если вы никогда этого не делали, это выглядит устрашающе, но решает вашу проблему. Имейте в виду, что если вы создаете общедоступный пакет для дистрибутива, вы можете прочитать его руководство, потому что устанавливать зависимости таким способом обычно не рекомендуется.