Требования к условной зависимости об / мин - PullRequest
0 голосов
/ 09 марта 2020

Я сейчас работаю над программным обеспечением, которое должно работать на более новой версии Redhat. В настоящее время он отлично работает на 6 и 7, но теперь его нужно установить и запустить на Redhat 8.

В программном обеспечении нет ничего, что действительно указывало бы c, что остановит его работу на более новой версии ОС, но я возникли проблемы с требованиями зависимости. Сценарию, запускающему программное обеспечение, необходим доступ к semanage (/ usr / sbin / semanage). На Redhat 6 и 7 он был предоставлен пакетом policycoreutils- python и был задан в качестве аргумента требования при сборке rpm. Начиная с Redhat 8 и далее, пакет был переименован в policycoreutils- python -utils (см. Эту ссылку , раздел 8.6.2).

Начиная с версии 4.13, поддерживается логическое значение зависимости (см. здесь ), которые позволили бы легко это исправить, поскольку я мог бы просто сделать что-то вроде -R (policycoreutils-python or policycoreutils-python-utils), но изменение пакета rpm-build из его текущей версии 4.8 является серьезной проблемой, так как он используется другой командой для другой части программного обеспечения. Мне также нужно, чтобы это был независимый от дистрибутива rpm, поэтому у меня не должно быть разных версий rpm для более новых версий ОС.

Итак, мои вопросы:

1) Есть ли какие-то другие способ получить условное требование в файле spe c со старой версией rpm 4.8?

2) Если бы я должен был получить разрешение на обновление rpm до последней версии 4.15, вероятно, возникнут какие-либо проблемы с целью системы, в которых установлены более ранние обороты, например, не понимающие условия?

Обновление: обороты будут собраны один раз на RH 6 и должны работать на RH 7 и 8.

1 Ответ

2 голосов
/ 09 марта 2020

если вы соберете один оборот в минуту для всех платформ

Вы можете зависеть от semanage:

Requires: /usr/sbin/semanage

yum, dnf или rpm должно быть достаточно умным чтобы разобраться с этим.

если вы строите каждый оборот в соответствующей цели:

вы можете использовать макросы %rhel_version, см. https://en.opensuse.org/openSUSE: Build_Service_cross_distribution_howto :

%if 0%{?rhel_version} < 800
Requires: policycoreutils-python
%else
Requires: policycoreutils-python-utils
%endif
...