RPMRed Hat 软件包管理器)全称为 Red Hat Package Manager,最初这个软件管理机制是由Red Hat发展出来的。现在很多的linux发行版都用的是RPMRPMrpm这个命令来管理RPM软件包。rpm可实现多种管理功能,对软件包的安装、卸载、查询、升级、校验、数据库的重建、验证数据包等工作都能进行,我们先来了解一下软件包的组成:

软件包的分为主包和子包,主包的命名方式是在包名后面直接跟版本号,而子包是在主包的名字后面加一个子名字,但是子包的文件名要包括主包名和子包名,我们来看一个例子:

zsh-html-4.2.6-6.el5.i386.rpm

这里的zsh就是主包名,heml为子包名,zsh-html合起来才是包名,后面的4.2.6是版本号,6.el5是发行号,i386代表的是适合的平台,最后的是后缀名;有些人后说一个版本号而已弄那么长干什么!其实版本号也是有命名标准的。

版本号里又分为主版本号,次版本号和发型号。主版本号只有在对软件包做了重大改进时才会修改,次版本号则是某个子功能发生了重大变化时修改,发行号则是修正了部分bug,调整了一点功能时修改。了解之后我们来看一下怎么管理这些软件包。

rpm:这个是命令功能很多,这里我只说我了解一点的;

1、安装

rpm -i:后面跟软件包,表示安装此软件包;后面也可以跟软件包的路径

-h:以#显示安装进度,每个#表示2%

-v:在安装时显示详细过程

-vv(最多三个):显示更详细的过程

RPM,  YUM_rpm

rpm -ivh --nodeps:在安装时忽略依赖关系

--replacepkgs:重新安装,替换原有安装

--force:强行安装,可以实现重装或升级

--test:测试此软件包有没有依赖关系之类的,只测试不安装

RPM,  YUM_rpm_02

2、卸载:

在卸载软件包时要确保卸载的软件包没有被其他软件包依赖,不然卸载以后另外一个软件也不可以用了。

rpm -e:后面指定包名即可卸载,不需跟软件包的完整版本号等信息;

--nodeps:强行卸载

RPM,  YUM_yum_03

卸载完成之后没有反馈任何信息,我们怎么知道软件是否被卸载掉了呢?我们来看下一个话题

3、查询

rpm -qa:不需加任何参数,查询已经安装的所有软件包

-q PACKAGE_NAME(包名):指查询指定的包是否已经安装

-qi PACKAGE_NAME查询指定软件包的说明信息

-ql PACKAGE_NAME查询指定包安装后生成的文件列表

-qc PACEAGE_NAME查询指定安装包的配置文件

-qd PACKAGE_NAME查询指定安装的帮助文件

-q --scripts PACKAGE_NAME查询指定包中包含的脚本

-qf /path/to/somefile(文件路径):查询某个文件是由哪个rpm包安装生成的

*注:这里只针对已安装的包有效,信息太多不再举例…

如果某rpm包尚未安装,我们需查询其说明信息、安装以后会生成的文件该怎么办/

rpm -qpi PACKAGE_FILE:查询指定包的说明信息

rpm -qpl PACKAGE_FILE:查询指定包安装后会生成的文件

RPM,  YUM_rpm_04

4、升级

rpm -Uvh PACKAGE_FILE:如果装有老版本的,则升级;否则,则安装

rpm -Fvh PACKAGE_FILE:如果装有老版本的,则升级;否则退出

RPM,  YUM_rpm_05

5、校验

用来查询我们的数据是否被修改过

rpm -V PACKAGE_NAME:查看软件包的完整性

-Va:列出当前系统上所有可能被更改的文件

6、重建数据库

rpm --rebuilddb:重新建立数据库文件,此命令表示一定会重建;

--initdb:初始化数据库,没有才建立,有就不用建立

 

yumrpm包的前端工具,依赖于rpm,但是yum可以实现对rpm包的安装、升级、卸载。另外yum仓库还保存了rpm包的相关信息我们来看一下yum仓库中的元数据文件:

primary.xml.gz:这个文件包含了仓库中所有的rpm包的列表以及各个rpm包之间的依赖关系,还有每个rpm包安装生成的文件列表;

filelists.xml.gz包含了当前仓库内所有rpm包的所有文件列表

other.xml.gz额外信息,如:rpm包的修改日志

repomd.xml记录的是上面三个文件的时间戳和校验和

comps*.xmlrpm分组信息

yum的配置文件在/etc/yum.conf包含了yum的缓存路径、日志等信息...

如何为yum定义repo文件repo文件包含了哪些内容

[Repo_ID] yum仓库的名称

name=Desicription 描述性信息

baseurl=  指定能被访问到的路径,有如下三种:

ftp://

http://

file:///    

enabled={1|0}启用或禁用:当前这个仓库是否可用

gpgcheck={1|0}默认为1:是否使用gpg来验证软件包来源的合法信息

gpgkey=gpg文件的具体存放路径

下面是yum的相关命令:

yum [option] [command] [package ...]

list:列表,能够列出当前yum仓库中所有软件包支持globe(通配符)

clean:清理缓存

repolist:显示repo列表及其简要信息

install:安装

update:升级

update-to:升级为指定版本

remove|erase:卸载 *注意如果此包被其他包依赖那么会同时被卸载掉

……

这些命令还有许多相关的子命令:

list:列表

all:列出所有软件包默认的

available:显示所有可用的软件包仓库中有尚未安装的软件包

installed:只显示已经安装的

updates显示可用的升级

clean:清理缓存

packages只清理rpm

headersrpm包信息

metadata:元数据文件

dbcacherpm包的库缓存

all:所有的

repolist:显示repo列表及其简要信息

all:显示所有repo

enabled:默认,只显示允许使用的

disabled:显示禁用的

install:安装

yum install PACKAGE_NAME(包名)

-y:自动回答为yes

--nogpgcheck:不做gpg检查