Linux rpm 命令

198 阅读7分钟

Linux rpm 命令用于管理套件。

rpm(英文全拼:redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。

1. 参数说明:

  • -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<功能特性>  查询该套件对指定的功能特性所需要的兼容度。

2. 常用命令实例

安装软件

# rpm -hvi dejagnu-1.4.2-10.noarch.rpm 

显示软件安装信息

# rpm -qi dejagnu-1.4.2-10.noarch.rpm

过滤软件显示

# rpm -qa | grep jenkins

3. 卸载软件

3.1 详解rpm卸载命令使用

在使用rpm卸载命令时,需要注意以下几点:

1、卸载前需要检测软件包是否已经安装。可以使用如下命令查看已安装的软件包列表:

rpm -qa

2、卸载软件包前需要关闭软件运行进程。可以使用如下命令查看正在运行的软件进程:

ps -ef | grep <软件包名>

可以通过kill命令关闭对应进程:

kill -9 <进程ID>

3、卸载软件包时需要使用root权限。

因此,完整的卸载一个软件包的命令如下:

su - root  # 切换到root用户
ps -ef | grep <软件包名>  # 查看是否有相关进程在运行
kill -9 <进程ID>  # 关闭相关进程
rpm -e <软件包名>  # 卸载软件包
exit  # 切换回原用户

3.2 rpm卸载命令常用选项

除了-e选项外,rpm卸载命令还有其他常用选项如下:

1、--nodeps:忽略依赖关系强制卸载软件包。

2、-v:显示详细信息,包括卸载过程中的进程。

3、--test:模拟执行卸载操作以检测可能出现的问题。

例如,使用如下命令卸载一个已安装的软件包,并忽略其依赖关系:

rpm -e --nodeps <软件包名>

3.3 rpm卸载命令实例

为了更好地理解rpm卸载命令的使用方法,下面我们以卸载Vim编辑器为例进行演示:

1、首先,通过rpm -qa命令查看已安装的Vim软件包:

rpm -qa | grep vim

输出结果类似如下:

vim-minimal-7.4.160-4.el7.x86_64  # vim最基本的版本
vim-common-7.4.160-4.el7.x86_64  # vim共同文件
vim-enhanced-7.4.160-4.el7.x86_64  # vim的增强版,自带vimtutor教程,可以正常使用命令行模式的复制、粘贴等

因为我们需要卸载的是vim-enhanced软件包,因此我们选择卸载这个软件包。

2、使用ps -ef | grep vim命令查看关于Vim编辑器的正在运行的进程。如果有正在运行的Vim进程,则需要先关闭对应进程。

执行结果如下:

[lwg@localhost ~]$ ps -ef | grep vim
lwg  8774  8384  0 10:54 pts/0    00:00:00 grep --color=auto vim  # 没有vim进程在运行

如果有Vim进程在运行,那么需要使用kill命令关闭对应进程。

3、使用rpm -e vim-enhanced命令卸载软件包。

rpm -e vim-enhanced

执行结果如下:

[lwg@localhost ~]$ rpm -e vim-enhanced
warning: /usr/share/vim/vim74/filetype.vim saved as /usr/share/vim/vim74/filetype.vim.rpmsave  # 软件包卸载过程中生成的警告信息
[lwg@localhost ~]$

出现如上输出结果代表软件包已经被成功卸载。