centos使用源码包制作rpm包

使用源码包制作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下即可

你可能感兴趣的:(centos使用源码包制作rpm包)