Могу ли я запустить директиву over over %files в файле.spec?
Я пишу файл спецификации, который создает несколько пакетов. Могу ли я использовать директиву for loop over %files с разными именами, например так:
for name in {package1, package2, package3} ; do
%files -n $name
%attr(644, root, root) /etc/systemd/system/$name.service
done
3 ответа
В длинных словах из-за минимального ограничения длины сообщения: Нет.
Spec-файлы не являются языком сценариев.
Spec-файл не является языком сценариев, вы все равно можете использовать свой собственный файл-сценарий для создания списка файлов и передачи списка в spec-файл. Из документа " Директивы для списка файлов%":
-f <файл> - прочитать список% файлов из <файла>
Опция -f используется для того, чтобы RPM считывал список % файлов из именованного файла. Как и список % файлов в файле спецификаций, файл, названный с помощью опции -f, должен содержать по одному имени файла в строке, а также включать любые директивы, указанные в этом разделе.
%files latex -f tetex-latex-skel
Здесь имена файлов, присутствующие в файле tetex-latex-skel, будут упакованы.
%{expand:%(/bin/bash -c "for name in package1 package2 package3; do
cat <<EOF
%files -n \$name
%attr(644, root, root) /etc/systemd/system/\$name.service
EOF
done")}