RPM是一个文件包管理程序,它是Linux现在默认的软件包管理器,全称是Redhat Package Manager,缩写为RPM,由Redhat(红帽公司)最先发布,现在基本上所有的Linux以及部分Unix都使用它作为包管理程序。
一、软件包的安装
安装程序包:
rpm [option] /path/to/package_file
-i: 表示安装参数(install)
-v: 表示打印安装过程的详细信息(verbose)
-vv:
-vvv:
-h: 表示在安装包解压过程
组合选项:-ivh
你可以使用-test选项来模拟或者测试一个安装过程,使用该选项使得管理工具并不真正安装该包,仅仅是检查并报告可能发生的冲突。具体命令可以表示如下:
rpm -ivh --test package.rpm
如果依赖于其它包:
1、解决依赖关系
2、忽略依赖关系
能安装上,但有可能无法运行;
--nodeps
--replacepkgs: 重新安装
如果原有配置文件作了修改,很有可能不执行替换,而是将应该安装生成的配置文件重命名为 .rpmnew
二、软件包的移除
如果希望从系统中移除一个已存在的软件包,可以使用如下命令:
rpm -e package.rpm,这里,选项-e表示移除参数(erase)
为了安全起见,在移除一个软件包之前,你可以模拟移除过程,具体的命令如下:
rpm -e --test package,这里,--test选项表示并不真正移除任何东西,仅仅是测试一下。
同样你可以在移除软件包之前对其进行备份,以便以后进行恢复。具体命令如下:
rpm -e --repackage package
三、软件包的查询
rpm -q package,这里选项-q表示查询参数(query)。在指定包时你可以使用软件包的全名,包括版本和发行号。
查询操作:
1、查询某包是否安装
rpm -q package_name...
2、查询所有已经安装的包
rpm -qa
按条件过滤:rpm -qa | grep ‘PATTERN‘
3、查询包的描述信息
rpm -qipackage_name
4、查询某包安装生成了哪些文件
rpm -ql package_name
(1) 查询某包安装生成了哪些配置文件
rpm -qc package_name
(2) 查询某包安装生成了哪些帮助文件
rpm -qd package_name
(3) 查询程序包的相关脚本
rpm -q --scriptspackage_name
脚本有四类:
preinstall:安装前脚本
postinstall: 安装后脚本
preuninstall: 卸载前脚本
postuninstall: 卸载后脚本
5、查询某文件是由哪个包安装生成的
rpm -qf/path/to/some_file
6、对尚未安装的包执行查询
rpm [option]/path/to/package_file
-qpi
-qpl
-qpc
-qpd
四、升级程序包:
新版本替换老版本
rpm [option] /path/to/package_file
1、升级或安装
-Uvh
2、纯升级
-Fvh
X --> Y-2.2.1
Y-2.2.3
升级后的版本冲突等;
--force: 强制升级
注意:不应该对内核执行升级操作,而是安装,系统允许多内核并存.
五、校验
用于检查包安装生成的文件属性是否发生变化
rpm -V package_name
S file Size differs
M Mode differs (includes permissions and filetype)
5 digest (formerly MD5 sum)differs
D Device major/minor numbermismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P caPabilities differ
六、数据库重建:
数据库目录:/var/lib/rpm
rpm --initdb:初始化
如果事先没有库,会新建一个;如果有,则不新建;
rpm --rebuilddb: 重建
直接重建,覆盖原有的数据库
总结起来,rpm命名常用的选项如下:
- --version:打印正在使用的rpm的版本号;
- --quiet:在操作过程中打印尽可能少的信息,通常情况下仅包含错误信息;
- -v:在操作过程中打印详细信息;
- -h:在包解压过程中打印50个hash标记;
- --odeps:不进行依赖性检查;
- --oldpackage:允许一个旧版本的包来替换现存新版本的包;
- --prefix NEWPATH:对安装路径进行重新定位;
- --repackage:在移除文件前对其重新打包;
- --test:仅对操作进行测试并报告结果。