Centos 如何编写规范文件来构建rpm包?
如果我只有4个任务,如何编写用于构建rpm包的规范文件 将我的_文件放在/usr/local/mydir中 将配置文件放在rsyslog.d中 将logrotate文件放在logrpate.d中 Echo something/etc/programm/programm.conf 我的尝试:Centos 如何编写规范文件来构建rpm包?,centos,redhat,rpmbuild,rpm-spec,Centos,Redhat,Rpmbuild,Rpm Spec,如果我只有4个任务,如何编写用于构建rpm包的规范文件 将我的_文件放在/usr/local/mydir中 将配置文件放在rsyslog.d中 将logrotate文件放在logrpate.d中 Echo something/etc/programm/programm.conf 我的尝试: 1. Name: my_file 2. Version: 1.0 3. Release: 1 4. Summary: A sample pack
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个文件,但解决方案在任何地方都很困难。您缺少所需的,是的,如果您想将文件安装到这些目录中,您需要创建这些目录
第9-11行之间的某个地方:
然后在安装部分:
%{__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
在这里,%%{uuuu install}-Dm 0644将文件放入目标目录,如果缺少目标目录,则创建目标目录。您的包不应该拥有该目录。这究竟是以什么方式失败的?因为我没有在%install部分中为logrotate和rsyslog创建目录,当执行命令-install myfile-rsyslog.conf$RPM\u BUILD\u ROOT/etc/rsyslog.d时,软件包生成器尝试将配置设置为home/builder/rpmbuild/BUILD/my\u file-1.0-1/etc/rsyslog.d,由于没有此类目录,因此失败。但是我想在安装包的用户的系统中已经存在的这些目录中安装配置。我想我做错了什么。
%{__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