RedHat linux下软件包安装方法通常有以下三种。

      rpm方式安装,rpm是由红帽公司开发的软件包管理方式,使用rpm我们可以方便进行软件的校验、安装、查询、卸载、升级等工作。但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时。

      yum安装,Yum(全称为YellowdogUpdater,Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

     编译安装,编译安装源码包在某些情况下是必须的,如定制安装包的各种属性,优化软件

的运行环境,添加额外的功能模块等,也是比较常用的一种安装形式。编译安装需要相应的编译环境。Linux下的编译器如gcc、g++。

       rpm包分为源码rpm和二进制rpm包,二进制的rpm包可以直接安装,源码rpm需经过编译再生成rpm包。rpm来源有系统安装光盘以及各社区发行版的网站,常用的有:

       http://mirrors.sohu.com

       http://rpmfind.net

       http://rpm.pbone.net/

rpm包通常表现为:Program-version-release.arch.[src].rpm

   Program软件包名称

   version软件包版本号

   releaserpm的修订号,有时会包含支持的OS,el5:rhel5

   arch系统平台类型,getconf LONG_BIT可以获取系统平台的位数

   src表明此rpm包需要再编译安装。

如:zsh-4.2.6-3.el5.i386.rpm

rpm命令常用选项:

rpm

安装:

   -i--install       跟完整包名,安装软件包

   -v\-vv\-vvv    显示详细信息

   -h                  以#显示进度

[root@localhost ~]# rpm -ivh jzlib-1.0.7-4jpp.1.i386.rpmPreparing...                ########################################### [100%]   1:jzlib                  ########################################### [100%]                                                                                                                                                                                                                                                                                                        --nodeps        忽略依赖关系(不推荐,安装后可能不正常工作)[root@localhost Server]# rpm -ivh anthy-devel-7900-4.el5.i386.rpmerror: Failed dependencies:    anthy = 7900-4.el5 is needed by anthy-devel-7900-4.el5.i386    libanthy.so.0 is needed by anthy-devel-7900-4.el5.i386    libanthydic.so.0 is needed by anthy-devel-7900-4.el5.i386    libanthyinput.so.0 is needed by anthy-devel-7900-4.el5.i386[root@localhost Server]# rpm -ivh anthy-devel-7900-4.el5.i386.rpm --nodepsPreparing...                ########################################### [100%]   1:anthy-devel            ########################################### [100%]   --replacepkgs    重新安装                                                                                                                                                                                                                                                                            [root@localhost Server]# rpm -ivh zsh-4.2.6-3.el5.i386.rpmPreparing...                ########################################### [100%]    package zsh-4.2.6-3.el5.i386 is already installed[root@localhost Server]# rpm --replacepkgs zsh-4.2.6-3.el5.i386.rpmrpm: only installation, upgrading, rmsource and rmspec may be forced[root@localhost Server]# rpm -ivh --replacepkgs zsh-4.2.6-3.el5.i386.rpmPreparing...                ########################################### [100%]   1:zsh                    ########################################### [100%]    --test          测试安装,不会安装到系统中[root@localhost Server]# rpm -ivh anthy-devel-7900-4.el5.i386.rpm --testerror: Failed dependencies:    anthy = 7900-4.el5 is needed by anthy-devel-7900-4.el5.i386    libanthy.so.0 is needed by anthy-devel-7900-4.el5.i386    libanthydic.so.0 is needed by anthy-devel-7900-4.el5.i386    libanthyinput.so.0 is needed by anthy-devel-7900-4.el5.i386

卸载:

   -e跟程序名(下同,非完整包名)进行卸载

查询:

   -q跟程序名,查询此软件有没有安装

   -qa查询所有安装的软件包,配合通过管道送给grep进行模糊查询

   -ql跟程序名,查询此软件包生成的文件列表

   -qf跟文件名,查询此文件是哪个软件包生成的

   -qc跟程序名,此软件生成的配置文件

   -q --scripts跟程序名,查询此包安装时执行的脚本

   -qd跟程序名,查询此软件的帮助文档

   -qi跟程序名,查询此软件的简要信息

升级:

   -U跟完整包名,没有此软件直接安装,有就升级

   -F跟完整包名,只是升级

校验:

   -V跟程序名,检查程序生成的文件的属性有没有改动

   -K跟完整安装包名,对软件的来源的合法性和软件的完整性进行校验需事先

导入GPG-KEY

导入系统安装光盘上的GPG-KEY:[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release导入其他软件源的GPG-KEY:[root@localhost ~]# rpm --import http://mirror.sohu.com/fedora-epel/RPM-GPG-KEY-EPEL-5[root@localhost Server]# rpm -K zsh-4.2.6-3.el5.i386.rpmzsh-4.2.6-3.el5.i386.rpm: (sha1) dsa sha1 md5 gpg OK[root@localhost Server]# rpm -K --nodigest zsh-4.2.6-3.el5.i386.rpmzsh-4.2.6-3.el5.i386.rpm: (sha1) dsa gpg OK[root@localhost Server]# rpm -K --nosignature zsh-4.2.6-3.el5.i386.rpmzsh-4.2.6-3.el5.i386.rpm: sha1 md5 OK

生成、重建数据库:

   --initdb新建rpm数据库,位于/var/lib/rpm,用以存储软件包的属性以及依赖关系等内容。

   --rebuilddb重建rpm数据库(当数据库发生损坏时重建)

源码格式的rpm:

     src格式rpm通过使用rpmbuild根据spec文件对数据包进行编译来生成二进制类型的rpm包

具体步骤:(系统平台:RHEL6 x86_64 )

[root@station117 ~]# rpm -ivh nginx-1.0.15-5.el6.src.rpm[root@station117 ~]# cd rpmbuild/[root@station117 rpmbuild]# rpmbuild -ba SPECS/nginx.spec[root@station117 rpmbuild]# rpm -ivh /RPMS/x86_64/nginx-1.0.15-5.el6.x86_64.rpm[root@station117 rpmbuild]# service nginx start[root@station117 rpmbuild]# netstat -tnl | grep 80tcp     0        0   0.0.0.0:80            0.0.0.0:*            LISTEN  在安装过程中会遇到软件依赖的问题,用yum来解决比较方便,yum在后面有介绍:部分安装包的下载路径:http://125.39.91.76:1234/sources/GeoIP-1.4.8-1.el6.x86_64.rpmhttp://125.39.91.76:1234/sources/GeoIP-devel-1.4.8-1.el6.x86_64.rpmhttp://125.39.91.76:1234/sources/httpd-2.2.25.tar.bz2http://125.39.91.76:1234/sources/nginx-1.0.15-5.el6.src.rpm

yum:

使用yum之前需要先设置yum仓库,yum仓库可以是本地文件夹也可以是其他的文件服务器

设置yum仓库的配置文件在/etc/yum.repos.d/下有repo为后缀的文件

[mycd]                   ----------> 仓库idname=My CD               ------------> 仓库名称baseurl=file:///media/cdrom/Server     ----------> 仓库位置enabled=1                -------------> 启用此仓库gpgcheck=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release  ----> 验证软件包来源合法性以及包的完整性。[Mirror.sohu]name=Mirror.sohu.combaseurl=http://mirror.sohu.com/centos/5/os/$basearch/ 由于rhel5和centos5兼容,所以rhel5也可以用centos5的yum源,sohu上是5而不是5Server,所以只能写5了。如果是其他版本就直接写数字。enabled=1gpecheck=0gpgkey=http://mirror.sohu.com/centos/5/os/$basearch/RPM-GPG-KEY-CentOS-5[fedora-epel]name=fedora-epelbaseurl=http://mirror.sohu.com/fedora-epel/5/$basearch/enabled=1gpgcheck=0gpgkey=http://mirror.sohu.com/fedora-epel/RPM-GPG-KEY-EPEL-5yum.conf中的变量:$releasever:代表发行版本的版本号。如果系统是fedora core 6的话,则返回6,rhel$basearch:显示基本架构类型。如果系统为i386或i686等,则均返回i386[root@localhost work]# yum list allLoaded plugins: rhnplugin, securityThis system is not registered with RHN.RHN support will be disabled.http://mirror.sohu.com/centos/5Server/os/i386/repodata/repomd.xml: [Errno 14] HTTP Error 404: Not FoundTrying other mirror.出错的原因是yum变量$releasever在替换时成了5Server,而mirror.sohu.com上的目录为5.改成5之后,更新成功。

/etc/yum.conf文件详解[main]cachedir=/var/cache/yum ----> yum更新软件时的缓存目录keepcache=0  ----> 是否保存曾经安装过的包的源程序,0表示不保存。debuglevel=2  -------> debug信息输出等级,范围为0-10,缺省为2logfile=/var/log/yum.log  ---> 存放系统更新软件的日志pkgpolicy=newest   -----> 包的策略。有两个选项,newest和last,如果设置了多个repository,而同一软件在不同的repository中同时存在,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将仓库id以字母表排序,并选择最后的那个 仓库的软件安装。默认选newest。distroverpkg=redhat-release   --->  yum会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm包。tolerant=1#如果值为1,则yum会忽略任何的有关包的错误。举例来说,当执行yum来安装baz时,如果baz包已经安装在系统中了,则yum会继续重复安装baz,而不会报错。默认值为1。exactarch=1  ------> 设置为1,则yum只会安装和系统架构匹配的软件包,如,yum不会将i686的软件包安装在适合i386的系统中。默认为1retries=20  ------->  网络连接发生错误后的重试次数,如果设为0,则会无限重试。默认值为6obsoletes=1  -------> 此选项在进行发行版跨版本升级的时候会用到。gpgcheck=1  -----------> gpg校验。这个选项如果设置在[main]部分,则对每个repository都有效。默认值为0.

创建本地源:

     把rpm包放在一个目录中,使用createrepo命令生成repodata,repodata中包含软件的属性信息和依赖性等信息,如果将系统光盘中的软件包拷出来做一个源的话,建议使用-g选项生成软件包组的信息,便于使用yum groupinstall “组名”进行安装。

1、首先安装createrepo软件[root@localhost work]# yum install createrepoLoaded plugins: rhnplugin, securityThis system is not registered with RHN.RHN support will be disabled.mycd                                                                                               | 1.3 kB     00:00    Setting up Install ProcessResolving Dependencies--> Running transaction check---> Package createrepo.noarch 0:0.4.11-3.el5 set to be updated2、创建repodata信息:[root@localhost ~]# createrepo xen-4.128/28 - xen-debuginfo-4.1.2-13.el6.x86_64.rpm                                  Saving Primary metadataSaving file lists metadataSaving other metadata3、在/etc/yum.repos.d/下新建一个文件xen.repo,添加如下内容:[Xen]name=localhost xenbaseurl=file:///root/xen-4.1/enabled=1gpgcheck=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release (系统安装盘上的GPG-KEY)4、以后就可以用yum install xen来安装了。

yum 常用选项:

yum

安装:

   install 跟程序名,可模糊匹配,安装软件

   localinstall 跟完整包名,从本机目录安装软件包

   groupinstall 安装某个组件的全部软件包,可事先用yum grouplist查看可用包组

更新:

   update 跟程序名,更新所选软件

   check-update 列出所有可更新的软件包

   list updates 查找可用的更新

   update 更新所有可更新的软件包(慎用)

   groupupdate 跟组名,更新某个组件的所有软件包

查询:

   list all列出所有已安装和仓库中可用的软件包

   list available 列出仓库中所有可用的软件包

   list updates 列出仓库中比当前系统更新的软件包

   list installed 列出已安装的软件包

   list recent 列出新加入仓库的软件包

   info 跟程序名,查询软件包信息

   whatprovides 跟文件名,查询此文件时哪个软件生成的

卸载:

   remove跟程序名,卸载软件包

   groupremove 跟组名,删除某个组件的全部软件包

清除信息:

   clean packages清除遗留在缓存里的包文件

   clean metadata 清除遗留在缓存里的元数据

   clean headers 清除遗留在缓存里的头文件

   clean all 清除包文件,元数据,头文件