rpm命令详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rpm命令详解相关的知识,希望对你有一定的参考价值。
本节将对目前Linux的三大主流分之之一的redhat系的程序包管理器rpm进行详述,该管理器可实现对程序包的安装、升级、查询、删除、校验等功能。rpm安装程序包时,当出现较多依赖,无法一次性解决时,可以用rpm的前端管理工具yum自动解决依赖。
但在这之前,需了解下程序包的组成格式,一般源码文件格式为name-version.tar.bz2等压缩格式 例如:httpd-2.2.29.tar.bz2 ,其中version包含有major.minor.release,major为程序的主版本号,通常代表程序的重大版本分支;minor为次版本号,通常指在该主版本号中修改或新增了某个功能,相对于程序来说只是较小改变;release为发行号,通常指修正了某个bug。
rpm包的命令格式为name-version-release.arch.rpm,例如httpd-2.2.15-45.el6.centos.x86_64.rpm,version为源码包的版本(仍为major.minor.release),该release为该rpm的release,指制作rpm包,需要对rpm包做出一些修改时。另外,也会出现release后面跟有操作系统的版本,如httpd-devel-2.2.15-45.el6.centos.x86_64.rpm,指明了rpm包适用于redhat6或兼容centos上;arch为该rpm包所适用运行的平台,会出现有i386,x86-64,noarch(意为适用所有平台)。通过以上了解能判断出一个rpm包能运行在哪种系统的哪种平台之上等;一般程序的主包和某个功能包是分开的,例如,httpd-devel-2.2.15-45.el6.centos.x86_64.rpm(适用于开发功能)
①安装 rpm {-i|--install} [install-options] PACKAGE_FILE ...
通用选项:
-v 显示信息
-vv 显示更详细信息
安装选项:
-h 显示进度条
--test 测试安装,而是用于检测软件包依赖关系以及是否会有冲突信息
--nodeps 忽略依赖关系,一般不建议
--replacepkgs 用于重新安装软件包,当有配置文件之前有修改时,不会替换配置文件
--replacefiles 安装包时可能会出现某个文件已存在,使用该选项,则直接覆盖
--nosignature 安装时不检查包签名信息,即不检查包来源合法性
--nodigest 安装不检查包完整性
--noscripts 安装程序包时不运行脚本(一般程序包安装或者卸载时,都会运行一些脚本)
示例:
~]# rpm -ivh tree-1.5.3-3.el6.x86_64.rpm (这边先从光盘中复制该包到某目录)
Preparing... ######################## [100%]
1:tree ######################## [100%]
②升级 rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
pm {-F|--freshen} [install-options] PACKAGE_FILE ...
升级某程序包时,如某个程序包没有安装过,-U会安装程序包;而-F则不进行任何操作
选项:
--oldpackage 用于将现有rpm程序还原回较老版本
--force 当程序依赖其他程序包,无法安装,使用该选项,可以强制进行升级
注意:不建议对内核进行升级,可能会导致无法启动;可以重新安装新内核,linux系统支持多 多内核并存。
③卸载 rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
[--notriggers] [--test] PACKAGE_NAME ...
选项:
--allmatches 卸载所有匹配名称的程序包(可能安装程序的多个版本)
--nodes 忽略依赖关系
--test 测试卸载
示例:
~]# rpm -e tree
④查询 rpm {-q|--query} [select-options] [query-options]
挑选选项:
-a 查询所有已安装过的程序包
-f FILE 查询指定的文件是由哪个程序包生成
-p PACKAGE_FILE 对未安装的程序包进行查询操作
--whatprovides 查询指定的CAPABILITY有哪个程序包生成
--wharequires 查询指定的CAPABILITY被哪个程序包所依赖
查询选项:
--changelog 查询rpm版本演变的日志
-l 程序包安装生成的所有文件列表
-i 显示程序包的相关信息(包括名称,版本,大小,安装时间)
-c 查询程序包的提供的配置文件
-d 查询程序包提供的文档
--provides 列出程序包提供的CAPABILITY
-R,--requires 查询程序包的依赖关系
--scripts 查询程序包自带的,在安装或卸载中使用的脚本
示例: ~]# rpm -qf /etc/issue 查询issue由哪个程序包生成的
centos-release-6-7.el6.centos.12.3.x86_64
~]# rpm -qc bash 查询bash的配置文件
/etc/skel/.bash_logout
/etc/skel/.bash_profile
/etc/skel/.bashrc
~]# rpm -qi bash 查询bash的相关信息
⑤校验 pm {-V|--verify} [select-options] [verify-options]
通过查询当前的程序与程序安装时存储在rpm数据库中信息进行比对
示例: ~]# rpm -V centos-release
S.5....T. c /etc/issue 之前对/etc/issue文件有过修改,所以会出现此信息
检测程序包的来源合法性和数据完整性:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 或从光盘导入密钥 安装程 序包时就会自动对程序包进行检测;
手动验证程序的合法性和完整性(需先导入密钥): rpm -K PACKAGE_FILE
去除密钥:
~]# rpm -qa gpg-pubkey* 查询密钥
gpg-pubkey-c105b9de-4e0fd3a3
~]# rpm -e gpg-pubkey-c105b9de-4e0fd3a3
~]# rpm -qa gpg-pubkey* 再次查询则无任何显示
⑥数据库重建 rpm {--initdb|--rebuilddb}[--dbpath DIRECTORY] [--root DIRECTORY]
rpm的数据库位置位于/var/lib/rpm/,所有已经安装过的程序包在该数据库 中都会有记录
选项:
--initdb 初始化数据库,当没有数据库时,可用新建个rpm数据库,当
前存在有数据库时,则不执行任何操作
--rebuilddb 根据已安装数据包头部信息进行重新构建
以上是关于rpm命令详解的主要内容,如果未能解决你的问题,请参考以下文章