制作nginx rpm包

在 rpmbuild 目录底下又有 BUILD RPMS SOURCES SPECS SRPMS 五个子目录 

 也可以自己手动创建这五个目录:mkdir -p ~/{BUILD,RPMS,S{OURCE,PEC,RPM}S} 

 这些目录的作用如下 

 BUILD 编译时所用的暂存目录 

 RPMS 放置打包好的套件

 SOURCES 放置套件的原始码及修补档等等 

 SPECS 放置 .spec 档 SRPMS 放置 Source RPMS (.src.rpm) 





nginxtar包制作为RPM

1.       下载nginx的源码包

2.       将文件放到/usr/src/redhat/SOURCES/目录下

3.       编写SPEC文件

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

Summary:the first rpm package

Name:nginx

Version:0.8

Release:35

Vendor:[email protected]

License:Share

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 两个文件。


rpmbuild 生成rpm包。

包有两种,binary包和source包。

rpm包有包信息和内容组成。rpm -qpi nginx.rpm可以查看到包的信息。

如:

Centos下使用rpmbuild以及checkinstall制作RPM包 - zhuzhu - 五事九思  (大连Linux主机维护)

relocations:如果非空,表示包可以安装到新的目录。在安装包的时候,使用--relocate=/usr/loca/=/home/cyx/ 这样来修改包的安装位置。

不过可能不能使用,因为包是二进制的,可能程序编译的时候使用了绝对路径。

rpm包制作由rpmbuild来生成。rpmbuild用到了几个目录:

BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS

BUILD:build过程执行的目录

RPMS:最后生成的RPM包的位置

SOURCES:源文件位置

SPECS:spec文件的位置,rpmbuild使用spec文件的描述信息来build包

SRPMS:源代码rpm包的位置

 

rpm宏文件定义了rpmbuild使用的一些参数和变量。

如上面几个目录(rpmbuild的基地)在哪儿。默认是在/usr/local/....下面。

在自己的家目录下面建立.rpmmacros文件,可以在里面设置自己的


%_tmppath /home/admin/tmp build建立包的时候,install到的目录。

%_topdir /home/admin/rpm    上面6个目录的位置。默认是/usr/...

%_prefix /home/admin/install  前缀

 

spec文件是指导rpmbuild生成包的关键文件。放在SPECS目录下面:

----------------------------------example------------------------------------------------------------------


[root@v092019 SPECS]# cat nginx-0.8.54.spec 

Name:nginx                                                                                                                包名

Summary:nginx-server!                                                                                              摘要

Version:0.8.54                                                                                                            版本

Release:1                                                                                                                   发行

Group:taobao.com                                                                                                      组织

License:GPL                                                                                                               许可

URL:http://www.nginx.com/                                                                                          官网

BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root                                   build的目录,会在这里build出二进制

Source:%{name}-%{version}.tar.gz                                                                             源码文件的名称,放在SOURCES目录下 

Prefix:%{_prefix}                                                                                                          前缀,有这个值,包生成时候就有relocations。

Packager:nginx                                                                                                           包名称

%description                                                                                                               下面是对包的描述

nginx-httpd-server        

%prep                                                                                                                          下面是准备工作

%setup -q                                                                                                                     这里使用了内建命令,解开源码包到BUILD目录

%build                                                                                                                          开始建立包,对应于configure和make,在BUILD目录

CFLAGS="-g"  ./configure  

make -j `cat /proc/cpuinfo | grep processor | wc -l`

%install                                                                                                                         安装包到Buildroot

make DESTDIR=$RPM_BUILD_ROOT install 

%files                                                                                                                            最后,把文件打包进rpm包,这里指定要打包进去的文件,权限和属主,这里的目录是相对于Buildroot的目录,但是要以'/'开头。

%defattr(755,daemon,daemon)

/usr/local/%{name}

%pre                                                                                                                             在用rpm命令安装包前执行这里的动作

echo nginx,preinstall

%post                                                                                                                             在用rpm命令安装完后执行这里的动作

echo nginx,afterinstall,done

%preun                                                                                                                           在卸载前执行这里的动作

echo nginx,uninstall

%postun                                                                                                                          在卸载后执行这里的动作

echo nginx,uninstall,done


你可能感兴趣的:(制作rpm)