Могу ли я запустить директиву 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")}
Другие вопросы по тегам