Как написать файл спецификации для сборки пакета rpm? - PullRequest
0 голосов
/ 31 октября 2018

Как мне написать файл спецификации для сборки пакета rpm, если у меня только 4 задачи?

  1. Поместите my_file в / usr / local / mydir
  2. Поместите файл конфигурации в rsyslog.d
  3. Поместите файл logrotate в logrptate.d
  4. Эхо "что-то" /etc/programm/programm.conf

Моя попытка:

        1. Name: my_file
        2. Version: 1.0
        3. Release: 1
        4. Summary: A sample package
        5. Group: Applications/Productivity
        6. License: GPL
        7. Source0: my_file-1.0.tar.gz
        8. BuildArch: i386
        9. BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}.x86-64
       10.
       11. %description
       12. This package basically does nothing, but it potentially could
       13. do something useful.
       14.
       15.
       16. %prep
       17. %setup -q 
       18.
       19. %build
       20. 
       21.
       22. %install
       23. mkdir -p $RPM_BUILD_ROOT/usr/local/myfile
       24. 
       25. install my_file $RPM_BUILD_ROOT/usr/local/myfile
       26. install myfile-rsyslog.conf $RPM_BUILD_ROOT/etc/rsyslog.d
       27.
       28. install myfile-logrotate $RPM_BUILD_ROOT/etc/logrotate.d
       29.
       30. %files
       31. %defattr(-,root,root)
       32. /usr/local/myfile/my_file
       33. /etc/rsyslog.d/myfile-rsyslog.conf
       34. /etc/logrotate.d/myfile-logrotate
       35.
       36. %clean
       37. 
       38. rm -rf $RPM_BUILD_ROOT
       39.
       40. %post
       41. echo "something " >> /etc/programm/programm.conf

Что я понял не так? Поскольку я не создаю каталог в% install, то при сборке rpm сборка пытается выполнить установку в rsyslog.d и завершается неудачно. Какой должна быть правильная последовательность действий? И тогда задача проста - всего 3 файла, но решения везде предлагаются сложные.

1 Ответ

0 голосов
/ 01 ноября 2018

Вам не хватает Requires и да, вам нужно создать эти каталоги, если вы хотите установить в них свои файлы ..

Где-то между строк 9-11:

Requires: logrotate
Requires: rsyslog

Затем в разделе установки:

%{__install} -Dm 0644 myfile-rsyslog.conf $RPM_BUILD_ROOT/etc/logrotate.d/myfile-rsyslog.conf
%{__install} -Dm 0644 myfile-logrotate $RPM_BUILD_ROOT/etc/rsyslog.d/myfile-logrotate

Здесь %{__install} -Dm 0644 помещает файл в целевой каталог и создает целевой каталог, если он отсутствует. Ваша посылка не должна владеть каталогом.

...