Этот короткий сценарий сохранит измененное время, если какой-либо родительский dir файла будет содержать a .nomtime
файл:
#!/bin/bash
dir="${1%/*}"
[ "$dir" = "$1" ] && dir=.
dir=$( readlink -f "$dir" )
nomtime=
while [ -n "$dir" ]; do
if [ -f "$dir/.nomtime" ]; then
nomtime=1
break
fi
dir="${dir%/*}"
done
if [ "$nomtime" = 1 ]; then
T=`tempfile`
touch -r "$1" $T
fi
vi "$1"
if [ "$nomtime" = 1 ]; then
touch -r $T "$1"
rm $T
fi
Этот файл был установлен в каталог% {buildroot} на этапе установки%, но не упоминается в файлах%. rpmbuild не разрешает файлы в% {buildroot}, которые не упакованы в% files. Поэтому либо добавьте его в% files, если файл необходим, либо не устанавливайте его% {buildroot}
У меня была та же проблема, но оказалось, что создаваемый мной файл postinstall нуждался в дополнительной новой строке в конце, потому что, когда создавалась спецификация, файл% заканчивался стыком в мою запись% post.