学习了rpm包编写spec文件过程,并记录如下。
步骤简述
- 安装rpmbuild
- 创建rpm build env
- 编写打包所需的spec文件
- 执行rpm打包
下面用一个最简单的 demo 为例,说明下打包过程(下面是在centOS 7 上进行的测试)。
安装 rpmbuild
# 安装
yum install rpm-build
# 验证安装是否成功
rpmbuild --version
创建rpm build env
# 创建目录结构
mkdir -p ~/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}
cat <<EOF >~/.rpmmacros
%_topdir %(echo $HOME)/rpmbuild
%_tmppath %{_topdir}/tmp
EOF
cd ~/rpmbuild
编写打包所需的spec文件
创建一个spec文件
cd ~/rpmbuild/SPECS
touch hello_world.spec
使用编辑器打开(如vim)
Name: hello_world
Version: 1.0
Release: 1
Summary: Short description (first char has to be uppercase)
License: GPL
URL: www. your_website/
#BuildRequires: package_required >= (or ==, or <=) 1.0.3 (for example)
%description
Description with almost 79 characters (first char has to be uppercase)
#This is a comment (just as example)
%files
/usr/local/hello_world.conf
#%changelog
#* date Packager's Name <packager's_email> version-revision
#- Summary of changes
其中注释掉的部分是可选的,更详细的内容参考:fedora rpm 打包文档。
编辑完成后,看到 rpm 打包过程需要一个/usr/local/hello_world.conf
的文件,该文件需要放到~/rpmbuild/BUILDROOT/hello_world-1.0-1/
下面,所以创建目录~/rpmbuild/BUILDROOT/hello_world-1.0-1.x86_64/usr/local/
并将文件hello_world.conf
放到该目录下
执行打包
rpmbuild -bb ~/rpmbuild/SPECS/package_name.spec
-bb
的意思是只打 binary 而不打 source。执行成功后 rpm 包会在 ~/rpmbuild/RPMS/x86_64/下面。
FAQ
- rpm 打包环境可以并发打包么
- 如何控制安装后文件权限
- 如何在安装之前/之后做一些特殊操作
- rpm卸载如何完成配置文件清理