Проблема с несколькими списками одного и того же файла в спецификации RPM

У меня есть некоторые проблемы с файлом спецификаций rpm, в котором один и тот же файл указан несколько раз. Для этой спецификации мы делаем обычную компиляцию, а затем у нас есть скрипт, который копирует все в корень сборки. В этом buildroot у нас есть много общих скриптов, которые необходимо установить в окончательной системе, поэтому мы просто указываем этот каталог.

Однако проблема в том, что один из сценариев может быть изменен, а параметры конфигурации могут быть изменены в сценарии. Поэтому мы перечисляем этот скрипт с другими атрибутами как %config. Однако это означает, что сценарий определен несколько раз с конфликтующими атрибутами, поэтому rpmbuild ругается и вообще не включает сценарий в установочный пакет.

Есть ли хороший способ справиться с этой проблемой и указать rpmbuild использовать только второе определение, или нам нужно разделить скрипт на две части, одна из которых содержит конфигурацию, а другая — фактическую логику?


person LiKao    schedule 05.08.2011    source источник


Ответы (1)


Вместо указания каталога вы можете создать список файлов, а затем удалить из него повторяющиеся файлы.

Итак, где у вас есть что-то вроде

%files
%dir foo
%config foo/scriptname

Вы изменяете эти части на

find $RPM_BUILD_ROOT -type f | sed -e "s|^$RPM_BUILD_ROOT||" > filelist
sed -i "\|^foo/scriptname$|d" filelist

%files -f filelist
%config foo/scriptname

Вы также можете использовать %{buildroot} вместо $RPM_BUILD_ROOT.

person brightlancer    schedule 16.08.2011