Как создать условный пакет с использованием RPM-упаковки - PullRequest
0 голосов
/ 02 октября 2018

Я использую файл спецификации для создания пакета RPM.Я хочу упаковать только те файлы, которые присутствуют в моей системе.В моем разделе %files я пишу файлы, которые хочу включить в свой пакет.Условные и безусловные пакеты включаются следующим образом.

%files
    %if "%is_file1_present"
    %attr (-, root, root) /location/to/file1
    %attr (-, root, root) /location/to/file2
%endif
%attr (-, root, root) /location/to/file3
%attr (-, root, root) /location/to/file4

%is_file1_present определяется в разделе %build следующим образом.

%build
%define is_file1_present %( if [ -f /location/to/file1 ]; then echo "1" ; else echo "0"; fi )`

При попытке построить RPMпакет, кажется, игнорирует условие if.Что я делаю не так?

1 Ответ

0 голосов
/ 02 октября 2018

Существует более простое решение:

В вашем разделе установки;копировать только имеющиеся файлы;и используйте подстановочные знаки в разделе файлов:

%install
install -d -m 0755 "${RPM_BUILD_ROOT}/location/to"
cp file* ${RPM_BUILD_ROOT}/location/to/

%files
%defattr(-,root,root)
/location/to/file*

NOTE : это работает, но это означает, что ваш spec-файл не всегда будет создавать один и тот же пакет, что не очень приятно...

...