Дано:
файл quagga-sysusers.conf («Source3: quagga-sysusers.conf» в RPM-спеке) с таким содержимым:
u @quagga_user@ - "Quagga routing suite user" /run/quagga g @quagga_user@ - m @quagga_user@ @quagga_user@ g @vty_group@ - m @quagga_user@ @vty_group@
При этом хочется использовать этот конфиг systemd-sysusers в предустановочном скриптлете RPM-пакета (%pre). Но нужно шаблоны @quagga_user@
и @vty_group@
заменить на их значения.
Стандартно конфиг systemd-sysusers добавляется в %pre вот так:
%pre %sysusers_create_package %{name} %{SOURCE3}
что превращается в:
$ rpm -qp --scripts quagga-1.2.4-3-rosa2016.1.x86_64.rpm preinstall scriptlet (using /bin/sh): systemd-sysusers --replace=/usr/lib/sysusers.d/quagga.conf - </dev/null 2>&1 || : u @quagga_user@ - "Quagga routing suite user" /run/quagga g @quagga_user@ - g @vty_group@ - m @quagga_user@ @vty_group@ SYSTEMD_INLINE_EOF
Вот как бы это прогнать через sed? Решение такое:
%pre %{expand: %(echo '%{sysusers_create_package %{name} %{SOURCE3}}' | \ sed -e 's,@quagga_user@,%{quagga_user},g' -e 's,@vty_group@,%{vty_group},g') }
Убеждаемся, что это превратится в то, что нужно:
$ cp -v quagga-sysusers.conf ~/rpmbuild/SOURCES/ $ rpmspec --parse quagga.spec <...> %pre systemd-sysusers --replace=/usr/lib/sysusers.d/quagga.conf - </dev/null 2>&1 || : u quagga - "Quagga routing suite user" /run/quagga g quagga - m quagga quagga g quaggavt - m quagga quaggavt SYSTEMD_INLINE_EOF
Обратите внимание на одинарные кавычки в строке '%{sysusers_create_package %{name} %{SOURCE3}}'
, иначе двойные кавычки в "Quagga routing suite user"
теряются.
Отправить ответ