RPM spec file-возможно ли динамически заполнять переменную spec file

у меня есть файл спецификации. Мне нужно %определить переменную spec, которая получает свое значение из файла одной строки в системе.

%define path `cat /home/user/path_file`

и в path_file есть одна строка

/var/www/html/hosts

это частично работает. Я говорю, что начинается в выходе сборки RPM иногда значение ${path} буквально моя команда cat /home/user/path_file и иногда значение является строкой в path_file (/var/www/html/hosts), как и должно быть?

1 ответов


вы можете определить переменные rpmbuild с %(cmd) в верхней части файла спецификации. Обратите внимание, что команда находится в скобках, а не в фигурных скобках. Пример:

%define whoami %(whoami)

и в других местах файла спецификаций, таких как скрипт или разделы сборки/установки, используйте переменную как обычно в фигурных скобках, например:

echo "The user that built this is %{whoami}"

на cmd может быть что угодно, включая вашу команду cat. Будьте осторожны - когда другой пользователь перестраивает файл спецификации, он может не найти файл. Так это предпочтительнее использовать макрос %{sourcedir} следующим образом:

%define path %(cat %{sourcedir}/path_file)

и убедитесь, что path_file находится в исходном каталоге и включен в качестве источника в файл спецификации.