CentOS系统下软件包的制作方法和过程详解

2020-01-30 17:17:27王旭

Group:Applications/Text

Source0:nginx-0.8.35.tar.gz

%description

my test nginx

%prep

tar -zxvf $RPM_SOURCES_DIR/nginx-0.8.35.tar.gz

%build

cd$RPM_BUILD_DIR/nginx-0.8.35

./configure

make

%install

cd$RPM_BUILD_DIR/nginx-0.8.35

make install

%clean

rm -rf$RPM_BUILD_DIR/nginx-0.8.35

%files

%defattr(-,root,root)

/usr/local/nginx/sbin/nginx

%doc $RPM_BUILD_DIR/nginx-0.8.35/README

4.      制作RPM包

[root@mail SPECS]#rpmbuild -ba nginx-0.8.35.spec    

若运行没有错误,则产生/usr/src/redhat/RPMS/i386/nginx-0.8-35.i386.rpm和/usr/src/redhat/SRPMS/nginx-0.8-35.src.rpm 两个文件。

总结:rpm包如何制作之个人经验

一 RPM介绍

RPM 前是RedHat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理;现在应为RPM Package Manager的缩写。在Fedora 、Redhat、Mandriva、SuSE、YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用; RPM包中除了包括程序运行时所需要的文件,也有其它的文件;一个RPM 包中的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其它特定版本文件,这就是软件包的依赖关系。

RPM可以让用户直接以binary方式安装软件包,并且可替用户查询是否已经安装了有关的库文件;在用RPM删除程序时,它又会聪明地询问用户是否要删除有关的程序。如果使用RPM来升级软件,RPM会保留原先的配置文件,这样用户就不用重新配置新的软件了。RPM保留一个数据库,这个数据库中包含了所有的软件包的资料,通过这个数据库,用户可以进行软件包的查询。RPM虽然是为Linux而设计的,但是它已经移值到SunOS、Solaris、AIX、Irix等其它UNIX系统上了。RPM遵循GPL版权协议,用户可以在符合GPL协议的条件下自由使用及传播RPM。

二 RPM包分类

我个人认为rpm分为两大类,

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

2 源码类包,源码包和开发包应该归位此类。

它们之间的关系是,最先我们按rpm打包要求改造软件项目源码,当符合要求之后就可以使用rpmbuild命令来生成不同的rpm包,同时生成的包之间版本是直接对应的,比如相同的源码包将生成完全相同的二进制rpm包。当你在网上查找rpm包时,一般你可以在RPMS目录中找到预编译的二进制包,而源码包则会在SRPMS目录内。

我们这里提到的RPM制作就是指改造软件源代码使之符合RPM打包要求的过程,这也可以等价为RPM源码包的制作过程,因为当你有了源码包就可以直接编译得到二进制安装包和其他任意包。

三 RPM包制作介绍

RPM包的制作,即是RPM源码包的制作。