制作RPM包
参考:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/rpm_packaging_guide/index
1. 安装必要的工具
yum install @'Development Tools' rpm-build yum-utils
2. 创建编译目录
rpmdev-setuptree
编译目录路径为${home}/rpmbuild/,目录结构如下:
.
├── BUILD,编译目录
├── RPMS,rpm包存放目录
├── SOURCES,源码包存放目录
├── SPECS,spec文件存放目录
└── SRPMS,src.rpm存放目录
3. 创建spec文件
本文为shell脚本创建rpm包,没有源码编译这一步,直接看spec文件:
# 指定rpmbuild工作目录,可以不指定,默认就是${home}/rpmbuild/
BuildRoot: /root/rpmrebuild
# 指定架构依赖,由于是脚本,所以是noarch,还可以是x86_64/arm等,如果不是noarch可以不指定,rpmbuild会自动检测并设置
BuildArch: noarch
# rpm包的名称
Name: hello-test
# rpm包的版本
Version: 1.0.0
# rpm包的发行号,即当前版本第n次的发行
Release: 1_11
License: GPLv3+
Group: Unspecified
Summary: Hello test
%description
Just test for build rpm package
%install
# 下面执行的其实都是shell命令了,工作目录为${home}/rpmbuild/BUILD/,
# 所以说我们需要将待安装的文件放在${home}/rpmbuild/BUILD/目录下,然后
# 执行下面的命令将文件安装到%{buildroot}目录下,%{buildroot}是自动创
# 建的目录,通常这个目录是${home}/rpmbuild/BUILDROOT/${Name}-${Version}-${Release}.${BuildArch}
mkdir -p %{buildroot}/etc/hello-test/
install -m 0755 test.sh %{buildroot}/etc/hello-test/test.sh
install -m 0644 test.conf %{buildroot}/etc/hello-test/test.conf
%files
# 安装文件列表,并定义每个文件的属性
%defattr(644,root,root,755)
%attr(755,root,root) /etc/hello-test/test.sh
%config(noreplace) %attr(0644, root, root) "/etc/hello-test/test.conf"
4. 执行rpmbuild开始打包
rpmbuild -ba hello-test.spec