Обороты в минуту: Установите Обязательный: somepackage> = 0.5.0 И somepackage <0.6.0


14

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

Required: somepackage >= 0.5.0 AND somepackage < 0.6.0

Так что только somepackage 0.5.x будет установлен автоматически.

Ответы:


18

Да, это очень легко сделать.

Просто пиши:

Requires: somepackage >= 0.5.0, somepackage < 0.6.0

в ваш .specфайл.

Добавление требований к версии

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

  • Требуется пакет с версией меньше указанной версии.

  • Требуется пакет с версией, меньшей или равной указанной версии.

  • Требуется пакет с версией, равной указанной версии.

  • Требуется пакет с версией, равной или большей указанной версии.

  • Требуется пакет с версией, превышающей указанную версию.

Продолжая наш пример, давайте предположим, что требуемая версия панели пакетов должна быть как минимум 2.7, и что пакет baz должен быть версии 2.1 - никакая другая версия не подойдет. Вот как будет выглядеть строка тега require: require: 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-сервер 8.1.23-6.el5_8 (postgresql-сервер <9.0)
  • postgresql92-сервер 9.2.5-1PGDG.rhel5 (postgresql-сервер> = 8.4)

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

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


у меня была виртуальная зависимость от «somedev (name)> = 1.0.14», но когда я пошел в yum install ... виртуальная зависимость не установила требуемую версию, несмотря на то, что была в репозитории RPM. Я должен был изменить виртуальную зависимость на имя RPM «что-то имя-dev> = 1.0.14», и тогда это работало.
Тревор Бойд Смит

1

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

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

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

Requires: somepackage = 0.5.0

а затем восстановить с

rpmbuild -bb -v yourpackage.spec

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


2
Я не могу говорить за OP, но иногда вы хотите самое последнее обновление в определенной серии версий, а не только в конкретной версии. Например, вы можете знать, что хотите Apache 2.2.x, потому что 2.4.x не будет работать должным образом с вашим пакетом. В частности, требование 2.2.23 не позволяет устанавливать будущие обновления в 2.2.x.
Алан Крюгер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.