Rpmbuild原码打包成rpm包

RPM有五种基本的操作功能:安装、卸载、升级、查询和验证。

linux软件包分为两大类:

1)二进制类包,包括rpm安装包(一般分为i386x86等几种)

2)源码类包,源码包和开发包应该归位此类(.src.rpm)。

有时候为了方便源码包的安装,和我们自己订制软件包的需求,我们会把一些源码包按照我们的需求来做成rpm包,当有了源码包就可以直接编译得到二进制安装包和其他任意包。spec file是制作rpm包最核心的部分,rpm包的制作就是根据spec file来实现的。在制作自定义rpm包的时候最好不要使用管理员进行,因为管理员权限过大,如果一个命令写错了,结果可能是灾难性的,而制件一个rpm 包普通用户完全可以实现。

1、安装rpm-build软件包

RPM打包使用的是rpmbuild命令,这个命令来自rpm-build软件包,这个是必装的。

yum -y install  rpm-build

2、生成打包.spec文件(以nginx为例)

rpmbuild  -ba  nginx.spec

//制作rpm包,但是没有配置文件会报错,报错也需要敲,会产生所需的目录。

当执行rpmbuild命令失败之后,会在当前目录下生成一个rpmbuild目录,该目录中包含下面的6个目录
BUILD:源代码解压以后放的位置,只需提供BUILD目录,具体里面放什么,不用我们管,所以真正的制作车间是BUILD目录。
BUILDROOT:假根,使用install临时安装到这个目录,把这个目录当作根来用的,所以在这个目录下的目录文件,才是真正的目录文件。当打包完成后,在清理阶段,这个目录将被删除。
RPMS:制作完成后的rpm包存放目录,为特定平台指定子目录(i386,i686,ppc)。
SOURCES:收集的源文件,源材料,补丁文件等存放位置。
SPECS:存放spec文件,作为制作rpm包的领岗文件,文件以.spec结尾。
SRPMS:src格式的rpm包位置 ,既然是src格式的包,就没有平台的概念了。

3、nginx源码文件拷贝到rpmbuild/SOURCES/中

cp  nginx-1.17.6.tar.gz  rpmbuild/SOURCES/ 

//拷贝源码包到rpmbuild的工作目录

4、安装编译nginx所需库

yum -y install  gcc  make  pcre-devel  openssl-devel

5、编写nginx.spec文件

vim  rpmbuild/SPECS/nginx.spec  //编写将nginx转换为rpm包的配置文件
Name:nginx     //软件名
Version:1.17.6    //版本
Release:1       //发布的rpm包的版本
Summary:test~    //简单描述
#Group:
License:GPL    //授权协议 ,GPL表示自由软件
URL:www.abc.com    //网址
Source0:nginx-1.17.6.tar.gz     //源码包 
#BuildRequires:   
#Requires:
%description    //详细描述
test~ test~ 
%post      //可以添加安装rpm包之后执行的命令,不是必须
useradd  nginx
%prep
%setup -q
%build
./configure  //配置,如果要添加选项或者模块可以继续写
make %{?_smp_mflags}     //编译
%install
make install DESTDIR=%{buildroot}    //安装
%files
%doc
/usr/local/nginx/*     //将改路径下文件打包成rpm
%changelog

6、生成rpm 

rpmbuild  -ba  rpmbuild/SPECS/nginx.spec  //根据上述文件制作rpm包

7、查看结果

ls  rpmbuild/RPMS/x86_64/

posted @ 2023-01-04 14:54  启云  阅读(665)  评论(0编辑  收藏  举报