侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux rpm命令详解:如何安装、卸载、升级、查询和验证软件包

Linux rpm命令介绍

rpm命令是Red Hat Package Manager(红帽软件包管理器)的缩写,它是一种用于在Linux系统中安装、卸载、升级、查询和验证软件包的工具。rpm命令可以处理以.rpm为扩展名的文件,这些文件是一种二进制格式的压缩文件,包含了软件包的元数据和实际的程序文件。rpm命令可以让用户方便地管理系统中的软件包,避免了手动解压、编译和配置的麻烦。

适用的Linux版本

rpm命令主要适用于基于Red Hat的Linux发行版,如Fedora、CentOS、RHEL等。其他一些发行版,如SUSE、Mandriva、Mageia等,也支持rpm命令,但可能有一些差异。对于不支持rpm命令的发行版,如Debian、Ubuntu等,用户可以使用alien命令来将.rpm文件转换为.deb文件,然后使用dpkg或apt命令来安装。例如,要将foo.rpm转换为foo.deb并安装,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo alien -d foo.rpm
[linux@bashcommandnotfound.cn ~]$ sudo dpkg -i foo.deb

Linux rpm命令的基本用法

rpm命令的语法格式如下:

rpm [选项] [参数]

选项可以指定rpm命令要执行的操作,如安装、卸载、查询等。参数可以是一个或多个.rpm文件的名称,或者是一个或多个已安装软件包的名称。

Linux rpm命令的常用选项说明

rpm命令有很多选项,可以根据不同的操作来选择使用。以下是一些常用选项的说明:

选项说明
-i安装一个或多个软件包
-e卸载一个或多个软件包
-U升级一个或多个软件包,如果软件包不存在,则安装
-F升级一个或多个软件包,如果软件包不存在,则忽略
-q查询一个或多个软件包的信息
-v显示详细的操作信息
-h显示操作进度条
--test测试操作,不实际执行
--nodeps忽略依赖关系检查
--force强制执行操作

Linux rpm命令的实例

以下是一些使用rpm命令的实例:

如何安装一个软件包

要安装一个软件包,例如foo.rpm,可以使用-i选项,并指定文件名作为参数:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -i foo.rpm

如果要安装多个软件包,可以一次指定多个文件名作为参数:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -i foo.rpm bar.rpm baz.rpm

如果要显示安装过程的详细信息和进度条,可以使用-v和-h选项:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -ivh foo.rpm

如果要测试安装操作是否会成功,而不实际执行安装,可以使用--test选项:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -ivh --test foo.rpm

如果要忽略软件包的依赖关系检查,可以使用--nodeps选项:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -ivh --nodeps foo.rpm

如果要强制安装一个软件包,即使它与已安装的软件包有冲突,可以使用--force选项:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -ivh --force foo.rpm

如何卸载一个软件包

要卸载一个软件包,例如foo,可以使用-e选项,并指定软件包名作为参数:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -e foo

如果要卸载多个软件包,可以一次指定多个软件包名作为参数:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -e foo bar baz

如果要显示卸载过程的详细信息和进度条,可以使用-v和-h选项:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -evh foo

如果要测试卸载操作是否会成功,而不实际执行卸载,可以使用--test选项:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -evh --test foo

如果要忽略软件包的依赖关系检查,可以使用--nodeps选项:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -evh --nodeps foo

如果要强制卸载一个软件包,即使它是其他软件包的依赖,可以使用--force选项:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -evh --force foo

如何升级一个软件包

要升级一个软件包,例如foo.rpm,可以使用-U选项,并指定文件名作为参数:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -U foo.rpm

如果要升级多个软件包,可以一次指定多个文件名作为参数:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -U foo.rpm bar.rpm baz.rpm

如果要显示升级过程的详细信息和进度条,可以使用-v和-h选项:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -Uvh foo.rpm

如果要测试升级操作是否会成功,而不实际执行升级,可以使用--test选项:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -Uvh --test foo.rpm

如果要忽略软件包的依赖关系检查,可以使用--nodeps选项:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -Uvh --nodeps foo.rpm

如果要强制升级一个软件包,即使它与已安装的软件包有冲突,可以使用--force选项:

[linux@bashcommandnotfound.cn ~]$ sudo rpm -Uvh --force foo.rpm

如何查询一个软件包的信息

要查询一个已安装的软件包的信息,例如foo,可以使用-q选项,并指定软件包名作为参数:

[linux@bashcommandnotfound.cn ~]$ rpm -q foo

这将显示软件包的名称、版本、发布号和架构。例如:

foo-1.0-1.x86_64

如果要查询一个未安装的软件包的信息,例如foo.rpm,可以使用-q和-p选项,并指定文件名作为参数:

[linux@bashcommandnotfound.cn ~]$ rpm -qp foo.rpm

这将显示与已安装的软件包相同的信息。

如果要显示更多的信息,可以使用-q和一些其他的选项。以下是一些常用的选项:

选项说明
-a查询所有已安装的软件包
-i显示软件包的描述信息
-l显示软件包中的文件列表
-c显示软件包中的配置文件列表
-d显示软件包中的文档文件列表
-s显示软件包中的文件状态
-R显示软件包的依赖关系

例如,要显示foo软件包的描述信息,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ rpm -qi foo

这将显示类似于以下的信息:

Name        : foo
Version     : 1.0
Release     : 1
Architecture: x86_64
Install Date: Mon 23 Oct 2023 10:00:00 AM CST
Group       : Applications/Utilities
Size        : 1234567
License     : GPL
Signature   : RSA/SHA256, Tue 10 Oct 2023 12:00:00 PM CST, Key ID abcdef1234567890
Source RPM  : foo-1.0-1.src.rpm
Build Date  : Tue 10 Oct 2023 11:00:00 AM CST
Build Host  : buildhost.example.com
Relocations : (not relocatable)
Packager    : Foo Bar <foo@bar.com>
Vendor      : Foo Inc.
URL         : http://www.foo.com/
Summary     : A sample foo package
Description :
This is a sample foo package that does nothing useful.

要显示foo软件包中的文件列表,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ rpm -ql foo

这将显示类似于以下的信息:

/usr/bin/foo
/usr/lib64/foo.so.1.0
/usr/lib64/foo.so.1 -> foo.so.1.0
/usr/share/doc/foo-1.0/LICENSE
/usr/share/doc/foo-1.0/README.md
/usr/share/man/man1/foo.1.gz

要显示foo软件包中的配置文件列表,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ rpm -qc foo

这将显示类似于以下的信息:

/etc/foo.conf

要显示foo软件包中的文档文件列表,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ rpm -qd foo

这将显示类似于以下的信息:

/usr/share/doc/foo-1.0/LICENSE
/usr/share/doc/foo-1.0/README.md
/usr/share/man/man1/foo.1.gz

要显示foo软件包中的文件状态,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ rpm -qs foo

这将显示类似于以下的信息:

normal        /usr/bin/foo
normal        /usr/lib64/foo.so.1.0
normal        /usr/lib64/foo.so.1 -> foo.so.1.0
normal        /usr/share/doc/foo-1.0/LICENSE
normal        /usr/share/doc/foo-1.0/README.md
normal        /usr/share/man/man1/foo.1.gz

要显示foo软件包的依赖关系,可以执行以下命令:

[linux@bashcommandnotfound.cn ~]$ rpm -qR foo

这将显示类似于以下的信息:

libc.so.6()(64bit)
libm.so.6()(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1

如何验证一个软件包的完整性

要验证一个已安装的软件包的完整性,即检查软件包中的文件是否被修改或损坏,可以使用-V选项,并指定软件包名作为参数:

[linux@bashcommandnotfound.cn ~]$ rpm -V foo

这将显示一些字母和符号,表示文件的属性是否与软件包中的元数据一致。以下是一些常见的字母和符号的含义:

字母或符号说明
S文件大小不一致
M文件模式(权限和类型)不一致
5文件MD5校验和不一致
D设备号不一致
L符号链接路径不一致
U文件所有者不一致
G文件所属组不一致
T文件修改时间不一致
P功能不一致

例如,如果显示以下信息:

S.5....T.  c /etc/foo.conf

这表示文件/etc/foo.conf的大小、MD5校验和和修改时间与软件包中的元数据不一致。

如果要验证一个未安装的软件包的完整性,即检查.rpm文件是否被修改或损坏,可以使用-V和-p选项,并指定文件名作为参数:

[linux@bashcommandnotfound.cn ~]$ rpm -Vp foo.rpm

这将显示类似于已安装的软件包的验证信息。

Linux rpm命令的注意事项

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

  • 在安装、卸载或升级软件包时,最好先使用--test选项来测试操作是否会成功,避免出现意外的错误或冲突。
  • 在安装、卸载或升级软件包时,尽量遵循软件包的依赖关系,不要随意使用--nodeps或--force选项,否则可能导致系统不稳定或损坏。
  • 在查询软件包的信息时,可以使用多个选项来显示更多的细节,也可以使用通配符来匹配多个软件包。例如,要显示所有以foo开头的软件包的描述信息,可以执行以下命令:
[linux@bashcommandnotfound.cn ~]$ rpm -qi foo*
  • 在验证软件包的完整性时,如果发现有文件被修改或损坏,可以尝试重新安装或升级该软件包来修复问题。也可以使用--verify选项来安装、卸载或升级软件包,并同时进行验证。例如,要安装并验证foo.rpm,可以执行以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo rpm -Uvh --verify foo.rpm

Linux rpm命令相关的快捷键

在使用rpm命令时,有以下几个快捷键可以提高效率:

  • Tab键:可以自动补全文件名或软件包名。
  • 上下箭头键:可以在历史命令中切换。
  • Ctrl+C:可以中断当前的操作。
  • Ctrl+Z:可以暂停当前的操作,并将其放入后台。
  • Ctrl+R:可以搜索历史命令。
0

评论区