RPM: Потрібно встановити: somepackage> = 0.5.0 AND somepackage <0.6.0


14

Чи можна встановити такі вимоги до версії залежності:

Required: somepackage >= 0.5.0 AND somepackage < 0.6.0

Тож автоматично буде встановлено лише деякийпакет 0.5.x.

Відповіді:


18

Так, зробити це дуже просто.

Просто напишіть:

Requires: somepackage >= 0.5.0, somepackage < 0.6.0

у ваш .specфайл.

Додавання вимог до версії

Якщо пакет має трохи більш суворі потреби, можна вимагати певних версій пакета. Все, що потрібно - це додати потрібний номер версії, який передує одному з наступних операторів порівняння:

  • Потрібен пакет з версією меншою, ніж зазначена версія.

  • Потрібен пакет з версією, меншою або рівною зазначеній версії.

  • Потрібен пакет з версією, рівною вказаній версії.

  • Потрібен пакет з версією, рівною або більшою, ніж зазначена версія.

  • Потрібен пакет з версією, що перевищує вказану версію.

Продовжуючи наш приклад, припустимо, що потрібна версія панелі пакунків насправді повинна бути не менше 2,7, а пакет baz повинен бути версією 2.1 - жодна інша версія не буде робити. Ось як виглядатиме потрібний рядок тегів: потрібно: bar> = 2,7, baz = 2,1

Джерело: http://rpm.org/user_doc/more_dependency.html

Остерігайтеся віртуальних можливостей / надає

Описана вище система працює для більшості пакетів; однак, якщо пакет, який ви хочете вимагати, надається як [віртуальна можливість] [1] або надається іншим чином (наприклад, ключове слово "надає:") пакетами з різними іменами (які не суперечать один одному), то ви може встановити два різних пакети, кожен з яких окремо відповідає одній із ваших вимог. Наприклад, якщо ваш специфікаційний файл містить:

Requires: postgresql-server >= 8.4, postgresql-server < 9.0

Це може призвести до встановлення (якщо у вас є ці пакети):

  • postgresql-сервер 8.1.23-6.el5_8 (postgresql-сервер <9.0)
  • postgresql92-сервер 9.2.5-1PGDG.rhel5 (postgresql-сервер> = 8.4)

Але не буде встановлено postgresql84-сервер, який, мабуть, був би пакетом, який ви могли б встановити.

(У цьому випадку рішенням було б просто вимагати postgresql84-сервера; проте, ймовірно, є й інші приклади, які не мають простого рішення.)


У мене була віртуальна залежність від "somethingdev (name)> = 1.0.14", але коли я перейшов до yum install ... віртуальна залежність не встановила потрібну версію, незважаючи на те, що я знаходилась у RPM RPM. мені довелося змінити віртуальну залежність на назву RPM "щось-ім'я-dev> = 1.0.14", і тоді воно спрацювало.
Тревор Бойд Сміт

1

Мені незрозуміло, чи намагаєтесь ви скласти пакет чи встановити пакет і "обмежити" його залежності.

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

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

Requires: somepackage = 0.5.0

а потім відновити с

rpmbuild -bb -v yourpackage.spec

Якщо ви ніколи цього не робили, це здається залякаючим, але це вирішує вашу проблему. Майте на увазі, що якщо ви створюєте загальнодоступний пакет для дистрибутива, вам, можливо, захочеться ознайомитися з його принципами, оскільки встановлювати залежність цим способам, як правило, не рекомендується.


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