最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

焦点速递!Rpmbuild原码打包成rpm包

来源:博客园

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

linux软件包分为两大类:

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


(资料图)

(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}     //编译%installmake 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/

关键词: 配置文件 目录文件 自由软件