目录[隐藏] |
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会对配置文件进行特别处理,因此您绝对不会丢失以往的定制信息——这对于直接使用.tar.gz文件是不可能的。对于程序员,RPM可以让您连同软件的源代码打包成源代码和二进制软件包供最终用户使用。这个过程十分简单,整个过程由一个主文件和可能的补丁程序组成。RPM在软件的新版本发布时,这种“原始”源代码,补丁程序和软件生成指令的清晰描述简化了软件包的维护工作。
简言之,RPM具有如下五大功能:
RPM包的名称有其特有的格式,如某软件的RPM包名称由如下部分组成:
name-version.type.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包的文件名之后就可以获得该软件包的大致信息了。
在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 <key file> | 导入指定的签名文件 |
rpm -Kv --nosignature <.rpm file name> | 检查指定的RPM文件是否已损坏或被恶意篡改(验证包的MD5校验和) |
rpm -K <.rpm file name> | 检查指定RPM文件的GnuPG签名 |
rpm -qd <package-name> | 查看一个已安装软件包的文档安装位置 |
rpm -qR <package-name> | 查询一个已安装软件包的最低依赖要求 |
安装软件包:
1、安装本地软件包
# rpm -ivh /media/cdrom/CentOS/elinks-0.11.1-5.1.el5.i386.rpmPreparing... #1:elinks #
2、安装远程软件包
# rpm -ivh http://centos.candishosting.com.cn/5/os/i386/CentOS/elinks-0.11.1-5.1.el5.i386.rpmPreparing... #1:elinks #
3、安装不在CentOS软件库中的软件包
下面以安装Fedora Extras 中的软件包为例。
# rpm --import http://download.fedora.redhat.com/pub/fedora/linux/extras/RPM-GPG-KEY-Fedora-Extras# wget http://download.fedora.redhat.com/pub/fedora/linux/extras/6/i386/darcs-1.0.9-3.fc6.i386.rpm# rpm -ivh darcs-1.0.9-3.fc6.i386.rpmPreparing... #1:darcs #
升级软件包:
1、从本地文件升级软件包:
# rpm -Uvh elinks-0.11.1-5.1.0.1.el5.i386.rpmPreparing... #1:elinks #
2、从远程文件升级软件包:
# rpm -Uvh http://centos.candishosting.com.cn/5/updates/i386/RPMS/elinks-0.11.1-5.1.0.1.el5.i386.rpmPreparing... #1:elinks #
卸载软件包:
# rpm -e elinks
查询软件包:
# 查询 elinks 软件包在系统中是否安装$ rpm –q elinks# 查询系统中已安装的 elinks 软件包的描述信息$ rpm –qi elinks# 查询系统中已安装的 elinks 软件包里所包含的文件$ rpm –ql elinks# 查询系统中文件 /etc/passwd 所属的软件包$ rpm –qf /etc/passwd# 查询 elinks-0.11.1-5.1.0.1.el5.i386.rpm 包文件中的信息$ rpm –qp elinks-0.11.1-5.1.0.1.el5.i386.rpm# 查询系统中已经安装的所有包含名字php的软件包$ rpm –qa | grep php# 查询 httpd 包的最低依赖要求$ rpm -qR httpd
验证软件包:
// 验证 elinks 软件包# rpm –V elinks// 验证包含文件 /etc/passwd 的软件包# rpm –Vf /etc/passwd// 验证 elinks-0.11.1-5.1.0.1.el5.i386.rpm 包文件# rpm –Vp elinks-0.11.1-5.1.0.1.el5.i386.rpm// 验证所有已安装的软件包# rpm –Va
如果校验一切正常,将没有输出,反之则输出不一致结果,格式为:
xxxxxxxx 文件名
字段1由八个字符组成,每个字符指明该文件与RPM数据库中一致或不一致的地方,单个点(.)说明没有异常,具体含义如下:
联系客服