Hi, On Wed, Mar 03, 2004 at 07:33:28PM +0200, Maxim Tyurin wrote: > Hi! > Просветите plz какие изменения в subst (sed) произошли? Радикально изменилась версия, с sed-3.02-alt2 на sed-4.0.9-alt1. > Перестал обрабатывать такую конструкцию в спеке: > %__grep -r /etc/ipsec.secrets * \ > | %__awk '{ print $1 }' \ > | %__sed -e 's|:.*$|\1|' \ > | xargs %__subst 's|/etc/ipsec.conf|/etc/super-freeswan/ipsec.conf|'; > > Ругается > + /bin/grep -r /etc/ipsec.secrets BUGS CHANGES CHANGES.AggressiveMode CHANGES.SUPERFS CHANGES.X509 CHANGES.ipsec_alg COPYING CREDITS INSTALL Makefile Makefile.inc Makefile.ver README README.AggressiveMode README.DPD README.NAT-Traversal README.SUPERFS README.ipsec_alg README.selectors README.x509 contrib doc klips lib libcrypto libdes packaging pluto rpm.in testing utils zlib > + gawk '{ print $1 }' > + /bin/sed -e 's|:.*$|\1|' > /bin/sed: -e expression #1, char 10: Invalid reference \1 on `s' command's RHS > ошибка: Неверный код возврата из /home/mrkooll/tmp/rpm-tmp.44577 (%prep) Всё правильно, новый sed не принимает неверное выражение 's|:.*$|\1|' Чтобы использовать \1, нужно что-то выделить с помощью \( и \). > Пока заменил на > %__grep -r /etc/ipsec.secrets * \ > | %__awk '{ print $1 }' \ > | %__sed -e 's|:.*$|\1|' \ > | xargs perl -p -i -e 's|/etc/ipsec.secrets|/etc/freeswan/ipsec.secrets|'; > но это IMHO кривее. И работать всё равно не будет. > Или подкиньте кто мысль как эту конструкцию нормально переписать. Если я правильно понял идею замены, то find -type f -print0 | xargs -r0 %__grep -FZl /etc/ipsec.secrets -- | xargs -r0 %__subst 's|/etc/ipsec.conf|/etc/super-freeswan/ipsec.conf|' -- Похожий пример есть в Sisyphus/doc/alt-packaging/spp.tex -- ldv