使用源码包制作rpm包
本次试验环境
系统:CentOS6.8
源码包:nginx-1.14.0
1、安装rpm包制作所需工具
yum -y install rpm* rpm-build rpmdev*
2、创建工作目录
useradd rpmuser 推荐使用普通用户的身份制作rpm包
su - rpmuser
mkdir rpmbuild 创建工作目录
vi .rpmmacros 声明工作目录位置
%_topdir /home/rpmuser/rpmbuild
在rpmbuild下一般有6个子目录,分别为
BUILD 编译rpm包的临时目录
BUILDROOT 编译后生成的软件临时安装目录
RPMS 最终生成的可安装rpm包的所在目录
SOURCES 所有源代码和补丁文件的存放目录
SPECS 存放SPEC文件的目录
SRPMS 软件最终的rpm源码格式存放路径
rpmdev-setuptree 使用该命令可以自动创建以上六个子目录,看也通过手工自行创建
3、生成并修改相关配置文件
cd /home/rpmuser/rpmbuild/SPECS 进入存放spec文件目录下
rpmdev-newspec -o nginx.spec 通过该命令可以直接生成一个spec文件模板
spec文件内容详解
Name: nginx #软件包的名字
Version: 1.14.0 #软件包的版本号
Release: 1%{?dist} #发布序号
Summary: nginx-1.14.0 #软件包摘要信息
Group: Applications/System #软件包安装分类,可参见/usr/share/doc/rpm-4.x.x/GROUPS
License: GPL #软件的授权方式,GPL为自由软件
#URL: #源码包的下载路径,为空时必须注释,否则报错
Source0: %{name}-%{version}.tar.gz #源码包的名称,此处name和version对应上文
#BuildRequires: #在本机编译源码包是依赖的工具,用逗号隔开
#Requires: #安装时需要依赖的软件包,用逗号隔开
%description #软件包的详细说明
this is nginx-1.14.0
%prep #准备阶段,通常为解压源码包
%setup -q #解压指令
%build #构建阶段,一般是执行常见的configuer和make操作
#%configuer #此为默认的configure操作,本次我们指定了其他的安装路径
./configure --prefix=/opt/nginx
make %{?_smp_mflags}
%install #安装阶段,直接make install操作
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
%clean
rm -rf $RPM_BUILD_ROOT
%files #这个阶段主要用来说明会将%{buildroot}目录下的哪些文件和目录最终打包到rpm包里
%defattr(-,root,root,-)
%doc
%changelog
4、生成rpm包
然后将源码包文件放到/home/rpmuser/rpmbuild/SOURCES目录下
rpmbuild -bb /home/rpmuser/rpmbuild/SPECS/nginx.spec
若执行成功则会在RPMS目录下生成相应的rpm包
报错:Installed (but unpackaged) file(s) found,将下面列出的文件添加到%files下即可