您的位置:首页 > 运维架构 > Linux

Linux基础RPM软件包管理

2012-11-01 00:05 225 查看
一、RPM 概述

RPM 是一个开放的软件包管理系统,最初的全称是 Red Hat Package Manager。它工作于 Red Hat Linux 以及其它 Linux 系统,成为了 Linux 中公认的软件包管理标准。红帽子软件公司鼓励其他厂商来了解 RPM 并在自己的产品中使用它。RPM 的发布基于 GPL 协议。随着 RPM 在各种发行版本的广泛使用,如今 RPM 的全称是 RPM Package Manager。RPM 由 RPM
社区负责维护,其官方网站:http://www.rpm.org

二、为什么使用 RPM

使用 RPM 最大的好处在于它提供快速之安装,减少编译安装之侦错困扰。对于最终用户来说,RPM 所提供的众多功能使维护系统要比以往容易的多。安装、卸载和升级 RPM 软件包均只需一条命令即可完成,所有烦琐的细节问题无须您费心。RPM 维护一个所有已安装的软件包和文件的数据库,可以让您进行功能强大的软件包查询和验证工作。在软件包升级过程中,RPM 会对配置文件进行特别处理,因此您绝对不会丢失以往的定制信息——这对于直接使用 .tar.gz
文件是不可能的。对于程序员,RPM 可以让您连同软件的源代码打包成源代码和二进制软件包供最终用户使用。这个过程十分简单,整个过程由一个主文件和可能的补丁程序组成。RPM 在软件的新版本发布时,这种“原始”源代码,补丁程序和软件生成指令的清晰描述简化了软件包的维护工作。

三、RPM 的功能

简言之,RPM 具有如下五大功能:

1、安装——将软件从包中解出来,并且安装到硬盘。

2、卸载——将软件从硬盘清除。

3、升级——替换软件的旧版本。

4、查询——查询软件包的信息。

5、验证——检验系统中的软件与包中软件的区别。

四、RPM 包的名称格式

RPM 包的名称有其特有的格式,如某软件的RPM包名称由如下部分组成:name-version.type.rpm,其中:

name软件的名称
version软件的版本号
type包的类型
i[3456]86表示在 Intel x86 计算机平台上编译的
sparc表示在sparc计算机平台上编译的
alpha表示在alpha计算机平台上编译的
src表示软件源代码
rpm为文件扩展名
例如:

bind-9.2.1-16.i386.rpm:是bind(9.2.1-16)的 Intel 386平台编译版本包;

bind-9.2.1-16.sparc.rpm:是bind(9.2.1-16)的 sparc 平台编译版本包;

bind-9.2.1-16.alpha.rpm:是bind(9.2.1-16)的 alpha 平台编译版本包;

bind-9.2.1-16.src.rpm:是bind(9.2.1-16)的源代码版本包;

因此,看到一个 RPM 包的文件名之后就可以获得该软件包的大致信息了。

五、常用的 RPM 包命令

在 CentOS 中升级和安装系统通常使用 yum 命令,因为它可以良好的解决包的依赖性问题,即自动安装(处理)依赖的其他软件包。但是 rpm 命令还是在某些情况下用得上,比如,查询包信息,安装或卸载一个不在 CentOS 软件库中的 .rpm 包等。
命令作用
rpm -i [.rpm file name]安装指定的 .rpm 文件
rpm -U [.rpm file name]用指定的.rpm文件升级同名包
rpm -e [package-name]删除指定的软件包
rpm -q [package-name]查询指定的软件包在系统中是否安装
rpm -qa查询系统中安装的所有RPM软件包
rpm -qf [/path/to/file]查询系统中指定文件所属的软件包
rpm -qi [package-name]查询一个已安装软件包的描述信息
rpm -ql [package-name]查询一个已安装软件包里所包含的文件
rpm -qc [package-name]查看一个已安装软件包的配置文件位置
rpm -qpi [.rpm file name]查询一个未安装的 RPM文件的描述信息
rpm -qpl [.rpm file name]查询一个未安装的 RPM文件里所包含的文件
rpm -qpc [.rpm file name]查看一个未安装的 RPM文件的配置文件位置
rpm -qpd [.rpm file name]查看一个未安装的 RPM文件的文档安装位置
rpm -qpR [.rpm file name]查询一个未安装的 RPM文件的最低依赖要求
rpm -V [package-name]校验指定的软件包
rpm -V [/path/to/file]校验包含指定文件的软件包
rpm -Vp [.rpm file name]校验指定的未安装的 RPM文件
rpm -Va校验所有已安装的软件包
rpm --rebuilddb重新创建系统的RPM数据库,用于不能安装和查询的情况
rpm --import导入指定的签名文件
rpm -Kv --nosignature [.rpm file name]检查指定的RPM文件是否已损坏或被恶意篡改(验证包的MD5校验和)
rpm -K [.rpm file name]检查指定RPM文件的GnuPG签名
rpm -qd [package-name]查看一个已安装软件包的文档安装位置
rpm -qR [package-name]查询一个已安装软件包的最低依赖要求
需要注意的是:

1、在安装(升级)时,还可以使用 -vh 参数,其中 v 表示在安装过程中将显示较详细的信息,h 表示显示水平进度条;

2、在使用 rpm -qa 命令时,还可以使用 | more 或 | grep 进行过滤;

3、所有的 <.rpm file nam e > 既可以是本地文件,也可以是远程文件;

4、校验软件包将检查软件包中的所有文件是否与系统中所安装的一致性。包括校验码文件大小,存取权限和属主属性都将根据数据库进行校验。该操作可在用户安装了新程序以后怀疑某些文件遭到破坏时使用。

六、RPM 安装实例

以安装VSFTP为例,演示如何通过 RPM 包安装软件。

1、从本地软件包安装 VSFTP(注:RPM 路径和文件名仅用于演示,实际安装时请根据实际情况填写 )
# rpm -ivh /media/CentOS_5.5_Final/CentOS/vsftpd-2.0.5-16.el5_4.1.i386.rpm
2、从本地文件升级 VSFTP
# rpm -Uvh vsftpd-2.0.5-16.el5_4.1.i386.rpm
3、卸载 VSFTP
# rpm -e vsftpd
4、查询
VSFTP 软件包情况
// 查询 vsftpd 软件包在系统中是否安装
$ rpm –q vsftpd
// 查询系统中已安装的 vsftpd 软件包的描述信息
$ rpm –qi vsftpd
// 查询系统中已安装的 vsftpd 软件包里所包含的文件
$ rpm –ql vsftpd
// 查询系统中文件 /etc/vsftpd/vsftpd.conf 所属的软件包
$ rpm –qf /etc/vsftpd/vsftpd.conf
// 查询 vsftpd-2.0.5-16.el5_4.1.i386.rpm 包文件中的信息
$ rpm –qp vsftpd-2.0.5-16.el5_4.1.i386.rpm
// 查询系统中已经安装的所有包含名字vsftpd的软件包
$ rpm –qa | grep vsftpd
// 查询 vsftpd 包的最低依赖要求
$ rpm -qR vsftpd
5、验证软件包
// 验证 vsftpd 软件包
# rpm –V vsftpd
// 验证包含文件 /etc/passwd 的软件包
# rpm –Vf /etc/passwd
// 验证 vsftpd-2.0.5-16.el5_4.1.i386.rpm 包文件
# rpm –Vp vsftpd-2.0.5-16.el5_4.1.i386.rpm
// 验证所有已安装的软件包
# rpm –Va
6、验证软件包时返回的结果

如果校验一切正常,将没有输出,反之则输出不一致结果,格式为:XXXXXXXX 文件名。

字段1由八个字符组成,每个字符指明该文件与 RPM 数据库中一致或不一致的地方,单个点(.)说明没有异常,具体含义如下:
5校验和S文件大小
L符合连接T文件修改时间
D设备U用户
GM文件模式
?文件不可读
关于 RPM 软件包的使用暂时就这么多啦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: