基于CentOS 7系列的软件工程在开发完成之后,总有一个如何发布的问题,通常的选择是以RPM资源包的形式发布,这需要开发者额外开发rpm打包脚本(project.spec),但在实际开发过程中几乎每次新工程代码发布流程总是遇到各种坑,诸多不顺。下面以一个简单脚本的打包流程为例梳理整个打包流程。
1. 安装工具
[elvis@localhost ~]$ which rpmbuild
/usr/bin/rpmbuild
[elvis@localhost ~]$ rpm -q -f /usr/bin/rpmbuild
rpm-build-4.11.3-17.el7.x86_64
打包需要事先在CentOS中安装相应的rpm-build包。
2. 环境配置
首先,检查topdir顶层目录配置。其中RPM相关的配置项在/usr/lib/rpm目录下:
[elvis@localhost ~]$ grep -rn _topdir /usr/lib/rpm/*
/usr/lib/rpm/macros:159:%_builddir %{_topdir}/BUILD
/usr/lib/rpm/macros:214:%_rpmdir %{_topdir}/RPMS
/usr/lib/rpm/macros:222:%_sourcedir %{_topdir}/SOURCES
/usr/lib/rpm/macros:226:%_specdir %{_topdir}/SPECS
/usr/lib/rpm/macros:229:%_srcrpmdir %{_topdir}/SRPMS
/usr/lib/rpm/macros:232:%_buildrootdir %{_topdir}/BUILDROOT
/usr/lib/rpm/macros:241:%_topdir %{getenv:HOME}/rpmbuild
其实topdir可以指定到任意目录,这个顶层目录作为之后打包发布的顶层目录,可配置为:
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
然后,创建打包目录,采纳默认的顶层目录为/home_dir/rpmbuild,在该顶层目录下面创建如下目录结构:
mkdir