rpm包管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rpm包管理相关的知识,希望对你有一定的参考价值。
RPM 软件包管理器,原名为Red Hat Package Manager,是Linux系统最为常见和基础的软件包管理工具,RPM是以一种数据库记录的方式将已经安装的数据包进行记录,为RPM软件包管理及后续yum软件包管理提供数据库依据,因此项目实施过程中,要定时备份RPM数据库,一旦数据库破坏,数据包在安装过程中无法查询依据。
RPM管理功能有,软件包的查询、软件包的确认、软件包的信息查询、软件包的卸载和软件包的更新多种用法。
RPM的查询选项用法较为复杂,特别是p选项,指定未安装的包,参数要跟完整的rpm包名,因为指定未安装的数据包时,要在指定路径下(如某光盘镜像中的Package中)找完整的rpm包。不加p时,只需指明普通报名即可,因为在安装过程中,数据库存储时会把普通报名存为一列。
其他选项如下所示:
功能 | 选项 | 含义 |
q | a | Query all installed packages. |
f | Query package owning FILE. | |
g | Query packages with the group of GROUP. | |
p | Query an (uninstalled) package PACKAGE_FILE | |
i | Display package information, | |
l | List files in package. | |
c | List only configuration files | |
--scripts | List the package specific scriptlet(s) | |
Qa | 查询所有安装过的数据包 | |
Qf | 查询子模块属于哪个数据包安装的 | |
Ql | 查询数据包中安装路径及内容 | |
Qpi | 查询为安装包的信息,如版本号、描述信息等,P指定未安装的 | |
Qc | 查询数据包 | |
-q –scritps | +包名,可查询已经安装的包的scripts脚本 | |
-qp –scripts | +完整的rpm包名,可查询尚未安装的包的scripts脚本 | |
[[email protected] ~]#rpm -q --scripts httpd #仅仅为q时,无需加完整的包明 preinstall scriptlet (using /bin/sh): # Add the "apache" group and user /usr/sbin/groupadd -g 48 -r apache 2> /dev/null || : /usr/sbin/useradd -c "Apache" -u 48 -g 48 \ -s /sbin/nologin -r -d /usr/share/httpd apache 2> /dev/null || : postinstall scriptlet (using /bin/sh): ………… ############################################################################ [[email protected] ~]#rpm -qp –scripts /media/Packages/httpd-2.4.6-40.el7.centos.x86_64.rpm #P查询未按照的完整包名 warning: /media/Packages/httpd-2.4.6-40.el7.centos.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY preinstall scriptlet (using /bin/sh): # Add the "apache" user /usr/sbin/useradd -c "Apache" -u 48 \ -s /sbin/nologin -r -d /usr/share/httpd apache 2> /dev/null || : postinstall scriptlet (using /bin/sh): ………… ############################################################################ [[email protected] ~]#rpm -qf /lib64/libxtables.so.10.0.0 #查询模块属于哪个数据包 iptables-1.4.21-16.el7.x86_64 |
PRM软件包的安装,在RPM软件包的安装过程中,同样会用到众多参数。
具体用法如下所示:
功能 | 选项 | 含义 |
i | V | Print verbose information |
H | 用#(hash)符显示rpm安装过程 | |
--force | 强制安装数据包 | |
--nodeps | 安装数据包不检查依赖性 | |
--noscripts | 安装数据包不执行数据包中脚本 | |
--test | 测试安装是否成功 | |
--prefix | 指定路径安装 | |
[[email protected] ~]#rpm -ivh /media/Packages/psmisc-22.20-9.el7.x86_64.rpm warning: /media/Packages/psmisc-22.20-9.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:psmisc-22.20-9.el7 ################################# [100%] |
RPM软件包的卸载,在RPM软件包的卸载过程中,可以单独卸载某一个包,而不卸载相关依赖包,一个包有可能被多个包同时依赖,因此在卸载某个RPM包时,有可能提现无法卸载,故通过强行卸载而不检查依赖关系进行卸载。
具体用法如下:
功能 | 选项 | 含义 |
e | --nodeps | 卸载不检查依赖关系 |
--noscripts | 卸载不执行脚本 | |
--test | 卸载测试是否能够完成 | |
[[email protected] ~]#rpm -e psmisc [[email protected] ~]#rpm -qi psmisc package psmisc is not installed |
在rpm的安装过程中会自动在目录/var/lib/rpm中创建rpm的数据库,不管在安装rpm包之前或在卸载rpm包之前都会查询rpm数据库,检查是否已安装。如果意外删除rpm数据库,即使通过rpm –initdb 或 rpm –rebuilddb 重构数据库也无法找回系统之前安装的rpm包,会导致无法卸载rpm包或者重复安装rpm数据包,因此建议系统定时备份rpm数据库。
本文出自 “11831715” 博客,转载请与作者联系!
以上是关于rpm包管理的主要内容,如果未能解决你的问题,请参考以下文章