Файл спецификации RPM - возможно ли динамическое заполнение переменной файла спецификации

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

Например

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

а в файле path_file - одна строка

/var/www/html/hosts

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

Ответ 1

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

%define whoami %(whoami)

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

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

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

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

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