点击访问 Linux 命令大全 >>
前面章节介绍了 deb 软件包的管理,以及 deb 管理工具 dpkg 命令。本章将介绍 rpm 包,以及 rpm 包的管理工具 rpm 命令。
RPM 是 Red-Hat Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了 RedHat 的标志。但是其原始设计理念是开放式的,包括 OpenLinux、S.u.S.E. 以及 Turbo Linux 等 Linux 的分发版本都有采用,可以算是公认的行业标准了。
RPM Package Manager (RPM) 是一个强大的命令行驱动的软件包管理工具,用来安装、卸载、校验、查询和更新 Linux 系统上的软件包。语法如下:
rpm [-acdhilqRsv] [-b<完成阶段><套间档>+] [-e<套件挡>] [-f<文件>+] [-i<套件档>] [-p<套件档>+] [-U<套件档>] [-vv] [--addsign<套件档>+] [--allfiles] [--allmatches] [--badreloc] [--buildroot<根目录>] [--changelog] [--checksig<套件档>+] [--clean] [--dbpath<数据库目录>] [--dump] [--excludedocs] [--excludepath<排除目录>] [--force] [--ftpproxy<主机名称或IP地址>] [--ftpport<通信端口>] [--help] [--httpproxy<主机名称或IP地址>] [--httpport<通信端口>] [--ignorearch] [--ignoreos] [--ignoresize] [--includedocs] [--initdb] [justdb] [--nobulid] [--nodeps] [--nofiles] [--nogpg] [--nomd5] [--nopgp] [--noorder] [--noscripts] [--notriggers] [--oldpackage] [--percent] [--pipe<执行指令>] [--prefix<目的目录>] [--provides] [--queryformat<档头格式>] [--querytags][--rcfile<配置档>] [--rebulid<套件档>] [--rebuliddb] [--recompile<套件档>] [--relocate<原目录>=<新目录>] [--replacefiles] [--replacepkgs] [--requires] [--resign<套件档>+] [--rmsource] [--rmsource<文件>] [--root<根目录>] [--scripts] [--setperms] [--setugids] [--short-circuit] [--sign] [--target=<安装平台>+] [--test] [--timecheck<检查秒数>] [--triggeredby<套件档>] [--triggers][--verify] [--version] [--whatprovides<功能特性>] [--whatrequires<功能特性>]
参数说明:
-a 查询所有套件。
-b<完成阶段><套件档>+或-t <完成阶段><套件档>+ 设置包装套件的完成阶段,并指定套件档的文件名称。
-c 只列出组态配置文件,本参数需配合"-l"参数使用。
-d 只列出文本文件,本参数需配合"-l"参数使用。
-e<套件档>或--erase<套件档> 删除指定的套件。
-f<文件>+ 查询拥有指定文件的套件。
-h或--hash 套件安装时列出标记。
-i 显示套件的相关信息。
-i<套件档>或--install<套件档> 安装指定的套件档。
-l 显示套件的文件列表。
-p<套件档>+ 查询指定的RPM套件档。
-q 使用询问模式,当遇到任何问题时,rpm指令会先询问用户。
-R 显示套件的关联性信息。
-s 显示文件状态,本参数需配合"-l"参数使用。
-U<套件档>或--upgrade<套件档> 升级指定的套件档。
-v 显示指令执行过程。
-vv 详细显示指令执行过程,便于排错。
-addsign<套件档>+ 在指定的套件里加上新的签名认证。
--allfiles 安装所有文件。
--allmatches 删除符合指定的套件所包含的文件。
--badreloc 发生错误时,重新配置文件。
--buildroot<根目录> 设置产生套件时,欲当作根目录的目录。
--changelog 显示套件的更改记录。
--checksig<套件档>+ 检验该套件的签名认证。
--clean 完成套件的包装后,删除包装过程中所建立的目录。
--dbpath<数据库目录> 设置欲存放RPM数据库的目录。
--dump 显示每个文件的验证信息。本参数需配合"-l"参数使用。
--excludedocs 安装套件时,不要安装文件。
--excludepath<排除目录> 忽略在指定目录里的所有文件。
--force 强行置换套件或文件。
--ftpproxy<主机名称或IP地址> 指定FTP代理服务器。
--ftpport<通信端口> 设置FTP服务器或代理服务器使用的通信端口。
--help 在线帮助。
--httpproxy<主机名称或IP地址> 指定HTTP代理服务器。
--httpport<通信端口> 设置HTTP服务器或代理服务器使用的通信端口。
--ignorearch 不验证套件档的结构正确性。
--ignoreos 不验证套件档的结构正确性。
--ignoresize 安装前不检查磁盘空间是否足够。
--includedocs 安装套件时,一并安装文件。
--initdb 确认有正确的数据库可以使用。
--justdb 更新数据库,当不变动任何文件。
--nobulid 不执行任何完成阶段。
--nodeps 不验证套件档的相互关联性。
--nofiles 不验证文件的属性。
--nogpg 略过所有GPG的签名认证。
--nomd5 不使用MD5编码演算确认文件的大小与正确性。
--nopgp 略过所有PGP的签名认证。
--noorder 不重新编排套件的安装顺序,以便满足其彼此间的关联性。
--noscripts 不执行任何安装Script文件。
--notriggers 不执行该套件包装内的任何Script文件。
--oldpackage 升级成旧版本的套件。
--percent 安装套件时显示完成度百分比。
--pipe<执行指令> 建立管道,把输出结果转为该执行指令的输入数据。
--prefix<目的目录> 若重新配置文件,就把文件放到指定的目录下。
--provides 查询该套件所提供的兼容度。
--queryformat<档头格式> 设置档头的表示方式。
--querytags 列出可用于档头格式的标签。
--rcfile<配置文件> 使用指定的配置文件。
--rebulid<套件档> 安装原始代码套件,重新产生二进制文件的套件。
--rebuliddb 以现有的数据库为主,重建一份数据库。
--recompile<套件档> 此参数的效果和指定"--rebulid"参数类似,当不产生套件档。
--relocate<原目录>=<新目录> 把本来会放到原目录下的文件改放到新目录。
--replacefiles 强行置换文件。
--replacepkgs 强行置换套件。
--requires 查询该套件所需要的兼容度。
--resing<套件档>+ 删除现有认证,重新产生签名认证。
--rmsource 完成套件的包装后,删除原始代码。
--rmsource<文件> 删除原始代码和指定的文件。
--root<根目录> 设置欲当作根目录的目录。
--scripts 列出安装套件的Script的变量。
--setperms 设置文件的权限。
--setugids 设置文件的拥有者和所属群组。
--short-circuit 直接略过指定完成阶段的步骤。
--sign 产生PGP或GPG的签名认证。
--target=<安装平台>+ 设置产生的套件的安装平台。
--test 仅作测试,并不真的安装套件。
--timecheck<检查秒数> 设置检查时间的计时秒数。
--triggeredby<套件档> 查询该套件的包装者。
--triggers 展示套件档内的包装Script。
--verify 此参数的效果和指定"-q"参数相同。
--version 显示版本信息。
--whatprovides<功能特性> 查询该套件对指定的功能特性所提供的兼容度。
--whatrequires<功能特性> 查询该套件对指定的功能特性所需要的兼容度。
下面 rpm 实例将以 tree 软件包作为操作实例,其中:
软件包全称:vim-8.2.1253-1.1.x86_64.rpm
软件包下载地址:https://rpmfind.net/linux/centos/7.8.2003/os/x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm
语法:rpm -ivh *.rpm(注意,我们可以使用 --force 强制安装,例如:rpm --force -ivh xxx.rpm)
## 安装 tree 软件 [root@localhost ~]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm 准备中... ################################# [100%] 软件包 tree-1.6.0-10.el7.x86_64 已经安装 ## 使用 tree 查看当前目录的树形结构 [root@localhost ~]# tree . ├── anaconda-ks.cfg ├── data1 ├── data2 │ └── data.txt ├── hello_bak.txt ├── tmp │ ├── data │ │ ├── hello_bak.txt │ │ ├── hello.txt │ │ └── hello.txt~ │ └── data1 │ └── data.txt ├── tree-1.6.0-10.el7.x86_64.rpm └── vim-8.2.1253-1.1.x86_64.rpm 5 directories, 9 files
语法:rpm -Uvh package_name
[root@localhost ~]# rpm -Uvh tree-1.6.0-10.el7.x86_64.rpm 准备中... ################################# [100%] 正在升级/安装... 1:tree-1.6.0-10.el7 ################################# [ 50%] 正在清理/删除... 2:tree-1.5.3-3.el6 ################################# [100%]
语法:rpm -qa
[root@localhost ~]# rpm -qa yum-plugin-fastestmirror-1.1.31-50.el7.noarch grub2-common-2.02-0.76.el7.centos.noarch linux-firmware-20180911-69.git85c5d90.el7.noarch kbd-legacy-1.15.5-15.el7.noarch firewalld-filesystem-0.5.3-5.el7.noarch tzdata-2018e-3.el7.noarch kbd-1.15.5-15.el7.x86_64 bash-4.2.46-31.el7.x86_64 tuned-2.10.0-6.el7.noarch ncurses-5.9-14.20130511.el7_4.x86_64 ......
语法:rpm -ql package_name
[root@localhost ~]# rpm -ql tree /usr/bin/tree /usr/share/doc/tree-1.6.0 /usr/share/doc/tree-1.6.0/LICENSE /usr/share/doc/tree-1.6.0/README /usr/share/man/man1/tree.1.gz
语法:rpm -e package_name
## 卸载 tree 软件包 [root@localhost ~]# rpm -e tree ## 验证卸载是否成功 [root@localhost ~]# rpm -ql tree 未安装软件包 tree
语法:rpm -q package_name
[root@localhost ~]# rpm -q tree tree-1.6.0-10.el7.x86_64
rpm -qf `which 程序名` #返回软件包的全名
rpm -qif `which 程序名` #返回软件包的有关信息
rpm -qlf `which 程序名` #返回软件包的文件列表
[root@localhost ~]# rpm -qif `which tree` Name : tree Version : 1.6.0 Release : 10.el7 Architecture: x86_64 Install Date: 2020年08月01日 星期六 16时47分58秒 Group : Applications/File Size : 89505 License : GPLv2+ Signature : RSA/SHA256, 2014年07月04日 星期五 13时36分46秒, Key ID 24c6a8a7f4a80eb5 Source RPM : tree-1.6.0-10.el7.src.rpm Build Date : 2014年06月10日 星期二 03时28分53秒 Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <https://bugs.centos.org> Vendor : CentOS URL : https://mama.indstate.edu/users/ice/tree/ Summary : File system tree viewer Description : The tree utility recursively displays the contents of directories in a tree-like format. Tree is basically a UNIX port of the DOS tree utility. [root@localhost ~]# rpm -qf `which sshd` openssh-server-7.4p1-16.el7.x86_64