1)安装src格式的rpm

源码格式的rpm包(通常是src格式)无法直接使用,需要加工制作后才能使用

 

[root@localhost ~]# cd /yum/package/

 

[root@localhost package]# ls

axel-2.4                                 nginx-1.7.10-1.el6.ngx.src.rpm# 现在想安装使用源码格式的nginx,但这个软件包不是二进制格式的,安装了以后无法正常使用axel-2.4.tar.gz                          repodataaxis-1.2.1-7.5.el6_5.noarch.rpm          xen-4.4.1-5.el6.x86_64.rpmaxis-javadoc-1.2.1-7.5.el6_5.noarch.rpm  zsh-4.3.10-7.el6.x86_64.rpmaxis-manual-1.2.1-7.5.el6_5.noarch.rpm   zsh-html-4.3.10-7.el6.x86_64.rpm

 

[root@localhost package]# rpm -qpl nginx-1.7.10-1.el6.ngx.src.rpm 

# 这个包安装了以后会生成以下文件warning: nginx-1.7.10-1.el6.ngx.src.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEYlogrotatenginx-1.7.10.tar.gz# 这就是源码文件nginx.confnginx.initnginx.servicenginx.spec# 制作rpm包所需要的spec文件nginx.suse.initnginx.suse.logrotatenginx.sysconfnginx.upgrade.shnginx.vh.default.confnginx.vh.example_ssl.conf

 

[root@localhost package]# rpm -ivh nginx-1.7.10-1.el6.ngx.src.rpm 

warning: nginx-1.7.10-1.el6.ngx.src.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY   1:nginx                  warning: user builder does not exist - using rootwarning: group builder does not exist - using root# 提示用户不存在,需要创建该用户...warning: user builder does not exist - using rootwarning: group builder does not exist - using root

 

[root@localhost package]# useradd builder

[root@localhost package]# rpm -ivh nginx-1.7.10-1.el6.ngx.src.rpm 

warning: nginx-1.7.10-1.el6.ngx.src.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY   1:nginx                  ########################################### [100%]

 

2rpmbuild目录介绍

[root@localhost ~]# ls

anaconda-ks.cfg  Documents  if_exist.sh  install.log.syslog  Music     Public    TemplatesDesktop          Downloads  install.log  mkscript            Pictures  rpmbuild  Videos# 安装到了rpmbuild目录下

[root@localhost ~]# cd rpmbuild/

 

[root@localhost rpmbuild]# ls

SOURCES  SPECS

 

[root@localhost rpmbuild]# cd SOURCES/

[root@localhost SOURCES]# ls

logrotate            nginx.init       nginx.suse.logrotate  nginx.vh.default.confnginx-1.7.10.tar.gz  nginx.service    nginx.sysconf         nginx.vh.example_ssl.confnginx.conf           nginx.suse.init  nginx.upgrade.sh# 该目录用来存放所有制作rpm包所需要的源码、配置文件等

 

[root@localhost SOURCES]# cd ../SPECS/

[root@localhost SPECS]# ls

nginx.spec#此文件将被用来制作rpm包

 

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

# -ba表示编译生成一个源码格式以及一个二进制格式的包,如果是-bb,表示只生成二进制格式error: Failed build dependencies:        pcre-devel is needed by nginx-1.7.10-1.el6.ngx.x86_64#报错表示需要很多依赖的包

 

3)通过spec文件来制作rpm

解决了依赖包的问题后,再次使用rpmbuild命令来制作rpm包:

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

...checking for socklen_t ... foundchecking for in_addr_t ... found...Wrote: /root/rpmbuild/RPMS/x86_64/nginx-debuginfo-1.7.10-1.el6.ngx.x86_64.rpmExecuting(%clean): /bin/sh -e /var/tmp/rpm-tmp.uOpvTX+ umask 022+ cd /root/rpmbuild/BUILD+ cd nginx-1.7.10+ /bin/rm -rf /root/rpmbuild/BUILDROOT/nginx-1.7.10-1.el6.ngx.x86_64+ exit 0

 

[root@localhost SPECS]# cd ..

[root@localhost rpmbuild]# ls

BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS#多了几个目录,其中RPMS就是用来存放制作好的rpm包的

[root@localhost RPMS]# ls

x86_64

[root@localhost RPMS]# cd x86_64/

[root@localhost x86_64]# ls

nginx-1.7.10-1.el6.ngx.x86_64.rpm        nginx-debuginfo-1.7.10-1.el6.ngx.x86_64.rpmnginx-debug-1.7.10-1.el6.ngx.x86_64.rpm

此时使用rpm -ivh命令安装即可

 

4)安装使用rpm

[root@localhost x86_64]# rpm -ivh nginx-1.7.10-1.el6.ngx.x86_64.rpm 

Preparing...                ########################################### [100%]   1:nginx                  ########################################### [100%]---------------------------------------------------------------------- Thanks for using nginx! Please find the official documentation for nginx here:* http://nginx.org/en/docs/ Commercial subscriptions for nginx are available on:* http://nginx.com/products/# 安装成功

[root@localhost x86_64]# cd ../..

[root@localhost rpmbuild]# ls

BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS

[root@localhost rpmbuild]# cd SRPMS/

[root@localhost SRPMS]# ls

nginx-1.7.10-1.el6.ngx.src.rpm# SRPMS包中存放的是src格式的rpm包

 nginx是个服务器,现在可以启动它:

 [root@localhost x86_64]# apachectl stop

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this messagehttpd (no pid file) not running# 先关闭apache服务器

[root@localhost x86_64]# service nginx start

Starting nginx:                                            [  OK  ]

启动成功,访问web服务以检验网页: