rpm spec-файл требует более одного критерия

Можно ли указать в файле спецификации rpm, что для сборки вам нужна версия пакета, большая и в то же время ниже чем-то?

Например, я хотел бы указать python >= 2.7 и < 3.0.

Можно ли это сделать с помощью buildrequires и если это возможно, какой будет синтаксис?

Поскольку я не видел ни одного подобного примера, я думал о:

BuildRequires: python >= 2.7
BuildRequires: python < 3.0

1 ответ

Решение

Вы поставили правильный пример в свой вопрос, это:

BuildRequires: python >= 2.7
BuildRequires: python < 3.0

это правильный способ сделать это.

Тем не менее, вы должны быть осторожны, если вы используете ту же схему для классического раздела Требуется. Если вы положите:

Requires: python >= 2.7
Requires: python < 3.0

в вашем spec-файле, и пакет python-3.0 входит в одно из ваших репозиториев yum, yum предложит его в качестве обновления, что вызовет проблемы с зависимостями в вашем прогоне 'yum update'. Выполнение будет прервано с ошибкой, и единственным способом избежать этого будет либо:

exclude=python-3*

в раздел репо или запустить его с:

yum update --exclude=python

Если вы используете этот подход только для BuildRequires, у вас не возникнет проблем, если пакет python-3.0 не установлен перед запуском yum-builddep. В этом случае вам нужно сначала удалить его.

Другие вопросы по тегам