我们经常在 Linux 系统中安装各种软件,但有时候需要确认某个依赖是否已经安装,或者想提取已安装包的版本信息用于自动化脚本。这时候,dpkg-query 和 rpm -q 就派上用场了。
它们就像是一个“系统档案馆”,能帮我们快速查出哪些软件已经装好、版本是多少。这篇文章就来聊聊怎么用这两个命令查询已安装的包,以及如何把结果用在脚本里,提升工作效率。
先说说为什么这个知识点实用。在写自动化脚本的时候,比如部署程序、检查依赖、做兼容性判断,我们常常需要知道某个软件是否安装、版本是否符合要求。如果手动去查,费时又容易出错。而 dpkg-query 和 rpm -q 是 Linux 中最直接、最可靠的工具之一,能快速给出答案。
接下来,我来一步步教你怎么用这些命令,同时结合一些实际场景,看看它们到底能干啥。
首先,我们来看看 dpkg-query,这是 Debian/Ubuntu 等基于 Debian 的系统使用的工具。它的基本用法是:
比如你想查 nginx 是否安装:
如果安装了,会输出类似下面的信息:
这里的 ii 表示已安装。如果没有安装,会提示找不到包。
不过,如果我们只是想判断是否存在,而不是看详细信息,可以使用 -W 选项:
这段命令的意思是:用 dpkg-query 查询 nginx 的状态,只输出状态字段(-f='${Status}'),然后通过 grep 检查是否有 install ok installed 字样。如果有,说明已经安装了。
这里有个小技巧:2>/dev/null 是用来屏蔽错误信息的,避免在没有安装时输出冗余内容。grep -q 是静默匹配,不输出任何内容,只返回状态码,非常适合在脚本中使用。
再来看 rpm -q,这是 Red Hat/CentOS/Fedora 等基于 RPM 的系统的工具。同样,我们可以用它来查询包的状态:
比如查 httpd 是否安装:
如果安装了,会输出类似:
如果没有安装,会提示:
同样,如果我们只需要判断是否安装,可以用 rpm -q 结合 grep 或者
