【发布时间】:2019-04-04 21:24:25
【问题描述】:
如果我只有 4 个任务,如何编写用于构建 rpm 包的规范文件?
- 将 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 个文件,但在所有困难的地方都提供了解决方案。
【问题讨论】:
-
失败的具体方式是什么?
-
由于我没有在 %install 部分创建 logrotate 和 rsyslog 的目录,所以当执行命令时 - install myfile-rsyslog.conf $RPM_BUILD_ROOT/etc/rsyslog.d 包构建器会尝试将配置设置为 home/builder/rpmbuild/BUILD/my_file-1.0-1/etc/rsyslog.d,由于没有这样的目录,它会失败。但是我想在将安装软件包的用户的系统中已经在这些目录中安装配置。我想我做错了什么。
标签: centos redhat rpmbuild rpm-spec