Как написать файл спецификации для сборки пакета rpm?
Как я могу написать файл спецификации для сборки пакета rpm, если у меня есть только 4 задачи?
- Поместите my_file в / usr / local / mydir
- Поместите файл конфигурации в rsyslog.d
- Поместите файл logrotate в logrptate.d
- Эхо "что-то" /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 ответ
Решение
Вам не хватает 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
помещает файл в целевой каталог и создает целевой каталог, если он отсутствует. Ваша посылка не должна владеть каталогом.