rpm的全名为“RedHat Package Manager”,是一种软件管理机制。顾名思义,这个机制最早是有RedHat公司开发出来的,后来因为实在很好用,包括fedora,centos,suse等知名厂商也使用了这个机制来作为软件安装的管理方式。rpm是以一种数据库记录的方式来将你所需要的软件安装到你的linux系统的一套管理机制。
rpm包的命名格式
rpm的命名格式为:name-version-relase.arch.rpm
version: major.minor.release,包括主版本号,次版本号,修正号
release: rpm自身的发行号,与程序源码的发行号无关,仅用于标识对rpm包不同制作的修订;同时,release还包含此包适用的OS
arch: 适用于的硬件平台,
x86: i386, i486, i586, i686等;
x86_64: x86_64
powerpc: ppc
noarch: 依赖于虚拟机,与平台无关
下面举一个简单的例子:
分包机制:
在使用rpm包时,由于整个包有非常多的功能,而每位使用者的需求有可能不同,为了解决这一问题,就有了分包的机制。
其中分为核心包和子包:
以此包为例:bash-4.2.3-3.centos7.x86_64.rpm
其核心包即主包:命名与源程序一致
bash-4.2.3-3.centos7.x86_64.rpm
而子包可能就为:
bash-a-4.2.3-3.centos7.x86_64.rpm
bash-b-4.2.3-3.centos7.x86_64.rpm
bash-devel-4.2.3-3.centos7.x86_64.rpm
获取rpm包的途径
1、发行的光盘或站点服务器
镜像:
http://mirrors.163.com
http://mirrors.sohu.com
2、项目的官网
源代码
rpm包
3、很多第三方机构或个人制作并公开发布许多rpm包
http://rpmfind.net
http://rpm.pbone.net
可靠的途径:EPEL
Fedora-EPEL
RPM的基本功能
安装程序包:
格式:
rpm [option] /path/to/package_file
【options】
-i: install安装选项
-v:显示详细的信息,下面的2个甚至3个V表示的详细的程度。
-vv:
-vvv:
-h:
一般比较常用的组合选项:-ivh
--test: 仅作测试,并没有真正执行安装
--nodeps:忽略依赖关系
在安装的过程中,如果该包依赖于其它包则:
1、解决依赖关系
2、忽略依赖关系(使用--nodeps选项),能安装上,但有可能无法运行;
--replacepkgs:重新安装,如果原有配置文件作了修改,很有可能不执行替换
--prefix PATH:将软件安装到指定目录
卸载程序包:
格式:
rpm [option] package_name
-e: erase 卸载
--nodeps:忽略依赖关系
如果被其它包所依赖:
1、将依赖于此包的所有包一并卸载
2、忽略依赖关系能卸载,但依赖于此包程序包可能会运行不正常;
注意:如果包的配置文件安装后曾被改动过,卸载时,此文件将不会被卸载,而会被重命名保存下来
升级程序包:
格式:
rpm [option] /path/to/package_file
-U :升级或安装(此前可以没有) 常用组合:-Uvh
-F :纯升级 (此前必须存在) 常用组合:-Fvh
--force: 强制升级
注意:不应该对内核执行升级操作,而是安装另一个内核,因为系统允许多内核并存。
查询操作:
查询某包是否安装
rpm -q package_name...
查询所有已经安装的包
rpm -qa
查询包的描述信息
rpm -qi package_name
查询某包安装生成了哪些文件
rpm -ql package_name
查询某包安装生成了哪些配置文件
rpm -qc package_name
查询某包安装生成了哪些帮助文件
rpm -qd package_name
查询程序包的相关脚本
rpm -q --scripts package_name
查询某文件是由哪个包安装生成的
rpm -qf /path/to/some_file
对尚未安装的包执行查询
rpm [option] /path/to/package_file
-qpi:描述信息
-qpl:安装生成了哪些文件
-qpc:安装生成了哪些配置文件
-qpd:安装生成了哪些帮助文件
校验:
用于检查包安装生成的文件属性是否发生变化
rpm -V package_name
某属性无变化,显示为.(点)
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P caPabilities differ
来源合法性及完整性检验:
在检验之前必须有个前提:在当前系统上导入包的制作者的公钥
具体导入的方法:
rpm --import /path/to/key_file
# rpm -qa gpg-pubkey*
显示所有已经导入的gpg格式的公钥
# rpm -qi gpg-pubkey-NAME
显示密钥的详细信息
检查包:安装过程中会自动执行
手动检查:
rpm -K /path/to/package_file
rpm --checksig /path/to/package_file
不检查包完整性:
rpm -K --nodigest
不检查来源合法性:
rpm -K --nosignature
库重建:
rpm的数据库目录为:/var/lib/rpm
重建:
rpm --initdb:初始化
如果事先没有库,会新建一个;如果有,则不新建;
rpm --rebuilddb: 重建
直接重建,覆盖原有的数据库
如需更详细的rpm用法可参考rpm的中文介绍:
http://os.51cto.com/art/201108/285804.htm