Linux实验报告-SRPM源码包安装nginx
实验背景:
一个软件包发布时,基于License方面和不同平台编译方面考虑,除了该软件的RPM包,还会发布一个包含源代码的SRPM源码包,通常以.src.rpm结尾。通过SRPM用户可以自定义重新编译生成适合用户自己Linux环境的RPM包。
按照默认参数安装一个源码格式的RPM程序包通常分为3个步骤:
1,安装源码包
#rpm -ivh xxxxx.src.rpm 此命令会在当前用户家目录自动生成一个rpmbuild目录 #cd rpmbuild/ #ls rpmbuild/SOURCES 存放源程序、补丁、脚本等 #ls rpmbuild/SPECS 存放.spec文件,此文件定义了rpm包制作的过程,至关重要
2,通过spec文件制作rpm包
#cd ~/rpmbuild/SPECS #rpmnbuild -ba xxx.spec
rpmbuild -ba编译生成二进制格式的rpm包,并生成一个源码格式的rpm包(将原.src再生成一次
rpmbuild -bb只生成二进制格式的rpm包
此命令执行结束后,rpmbuild目录下会新生成几个目录
#ls rpmbuild/RPMS/x86_64/
此目录中生成制作好的rpm包,即可以开始安装此RPM包
#ls rpmbuild/SRPMS
此目录中生成一个.src包,这个包可以拿到别的系统上安装再一次编译
3,安装制作好的rpm包
#cd ~/rpmbuild/RPMS/arch #rpm -ivh xxxxxx.rpm
实验目的:
了解SRPM源码包的安装步骤。
完成SRPM源码包格式Nginx安装,开启服务后,测试是否成功。
实验环境:
VmwareWorkstation 9,CentOS 6.4,httpd-2.4.7.tar.gz
实验步骤:
1,下载nginx源码包至本地 (http://mirrors.sohu.com/fedora-epel/6/SRPMS/)
2,安装源码包。完成后即可看到~/rpmbuild/SPECS目录下已经生成nginx.spec文件。
3,制作rpm包。
提示依赖性检查错误,有4个程序包需要安装。从yum仓库(本实验中yum仓库为系统镜像光盘)即可查找到除GeoIP-devel之外的其他3个程序包,依次安装完成。
由于yum仓库中无GeoIP-devel,从EPEL下载GeoIP-devel(http://mirrors.sohu.com/fedora-epel/6/x86_64/)至本地,依赖性要求,需先下载安装GeoIP。
[root@localhost SPECS]# yum localinstall/tmp/localpackage/GeoIP-1.4.8-1.el6.x86_64.rpm
[root@localhost SPECS]# yum install/tmp/localpackage/GeoIP-1.4.8-1.el6.x86_64.rpm
(实验环境是CentOS6.4,所以yuminstall/localinstall本地程序包同样有效)
重新执行命令 rpmbuild -ba nginx.spec即可正常完成。
4,之后,再~/rpmbuild/RPMS/x86_64目录下即可看到打包好的rpm包,开始安装。
至此,源码包格式的nginx程序包完成安装。
5,开始nginx服务,并测试成功。
实验中遇到的问题:(已解决)
--------------------------------------------------------------------------------------
问题的原因是:本实验的唯一yum源是系统光盘,而且这是DVD1, 而gd-devel在DVD2上,#yum list all ge-devel 可以查找的到是因为yum的数据库信息是针对于整个系统镜像,即包含DVD2
-------------------------------------------------------------------------------------
1,在安装gd-devel时,yum search gd-devel可以查找的到,但实际c6-media仓库中并不存在此程序包,以致yum install gd-devel无法安装。但既然其实没有此程序包的,不知为什么yum search还可以查询的到?已经yum clean all过了。最终通过网上(http://rpmfind.net)下载安装完成。