0

0

如何查询已安装的软件包 rpm和dpkg命令使用详解

P粉602998670

P粉602998670

发布时间:2025-08-14 11:45:02

|

720人浏览过

|

来源于php中文网

原创

linux系统中查询已安装软件包及特定程序是否已安装,应根据系统类型使用对应命令:1. 对于rpm系统(如centos、fedora),使用 rpm -qa 列出所有软件包,rpm -q 查询特定软件包是否安装,rpm -qi 查看详细信息,rpm -ql 列出包内文件,rpm -qf 通过文件路径反查所属包;2. 对于deb系统(如ubuntu、debian),使用 dpkg -l 列出所有软件包,dpkg -s 查询特定包状态及详细信息,dpkg -l 列出包内文件,dpkg -s 通过文件路径反查所属包,结合 grep 可实现快速过滤与状态判断,从而全面掌握系统软件安装情况。

如何查询已安装的软件包 rpm和dpkg命令使用详解

在Linux系统里,想知道机器上到底装了些什么软件,或者某个特定程序是不是已经到位,核心就是用两个命令:

rpm
dpkg
。简单来说,如果你用的是像CentOS、Fedora这类系统,就用
rpm
;要是Debian、Ubuntu,那
dpkg
就是你的好帮手。它们能让你快速查看已安装包的列表,也能深入了解某个包的详细信息,甚至追溯某个文件到底属于哪个软件包。

解决方案

在我看来,查询已安装软件包,核心就是掌握那么几个常用参数。这就像是你的系统里有个巨大的图书馆,这两个命令就是图书馆的索引卡片系统。

对于基于RPM的系统(比如CentOS、Fedora、RHEL):

  • 列出所有已安装的软件包:这是最常用的,相当于问“都装了些什么啊?”
    rpm -qa

    这个命令会把所有安装的RPM包一股脑儿列出来。输出可能会很长,所以通常我会结合

    grep
    来过滤。比如,我想看看有没有安装
    nginx

    rpm -qa | grep nginx
  • 查询特定软件包的信息:如果你知道软件包的名字,想看看它的版本、描述、安装日期等详细信息。
    rpm -qi 

    例如:

    rpm -qi httpd
    。这个信息量挺大的,能帮你搞清楚一个软件的来龙去脉。

  • 列出软件包安装的文件:想知道一个软件包到底把哪些文件放到了系统里?这个命令很有用,尤其是在排查问题时。
    rpm -ql 

    比如:

    rpm -ql bash
    ,你就能看到
    bash
    这个包都包含了哪些文件和目录。

对于基于DEB的系统(比如Ubuntu、Debian、Mint):

  • 列出所有已安装的软件包:和
    rpm -qa
    类似,但输出格式有所不同。
    dpkg -l

    这个命令的输出会显示软件包的状态(如

    ii
    表示已安装)、名称、版本和简短描述。同样,配合
    grep
    过滤是常态:

    dpkg -l | grep apache2
  • 查询特定软件包的详细信息:想了解某个DEB包的详细状态、版本、维护者、依赖关系等等。
    dpkg -s 

    例如:

    dpkg -s openssh-server
    。这个命令的输出非常详细,对于理解软件包的依赖和冲突很有帮助。

  • 列出软件包安装的文件:和
    rpm -ql
    异曲同工,告诉你一个DEB包都把文件放哪儿了。
    dpkg -L 

    比如:

    dpkg -L systemd
    ,你会看到
    systemd
    软件包安装的所有文件路径。

查询特定软件包是否已安装:我该怎么做?

这大概是日常运维中最常见的需求了。你可能刚接手一台服务器,或者在部署一个新应用,第一步往往就是确认某个关键组件是不是已经躺在那里了。

对于RPM系统,我通常会直接用

rpm -q 
。这个命令的妙处在于,如果包没安装,它会直接告诉你“package is not installed”,简单明了。比如:

rpm -q vim

如果

vim
装了,它会输出软件包名和版本,比如
vim-enhanced-8.0.1763-16.el8.x86_64
。没装的话,就是那句“package vim is not installed”。

笔启AI论文
笔启AI论文

专业高质量、低查重,免费论文大纲,在线AI生成原创论文,AI辅助生成论文的神器!

下载

而对于DEB系统,我更倾向于使用

dpkg -s 
。这个命令如果软件包没安装,它不会直接报错,而是输出“dpkg-query: package '' is not installed and no information is available”。这种输出方式,有时候需要你多看一眼,但也很明确。

dpkg -s nginx

如果

nginx
已经安装,你会看到一大堆信息,其中包含
Status: install ok installed
这一行。所以,我经常会结合
grep
来快速判断:

dpkg -s nginx | grep "Status"

这样就能快速看到状态行,如果显示

Status: install ok installed
,那基本就是确认了。这两种方式,各有各的“脾气”,但都能很好地解决问题。

了解软件包的详细信息:版本、描述和文件列表

这部分就深入了。光知道一个包装没装,有时候不够。比如,你需要确认一个软件包的版本是不是符合要求,或者某个关键的配置文件到底被放在了哪里。

rpm -qi 
在RPM系统里是查看详细信息的利器。它会列出软件包的名称、版本、发行版、安装日期、大小、简要描述以及完整的URL等。这个命令给的信息非常丰富,对于做兼容性检查或者写文档来说,简直是宝藏。我个人最喜欢看它的
Summary
Description
部分,能快速了解这个软件是干嘛的。

至于文件列表,

rpm -ql 
就派上用场了。当你需要知道一个程序的可执行文件在哪里,或者它依赖的库文件是不是都在正确的位置,这个命令就能帮你把所有文件路径都列出来。这在调试一些“找不到命令”或者“动态链接库错误”的问题时,简直是救命稻草。你可能会发现,一个看似简单的软件包,背后竟然包含了成百上千个文件,分布在系统的各个角落。

在DEB系统这边,

dpkg -s 
同样提供了丰富的软件包状态和元数据。它会告诉你软件包的精确版本、架构、维护者、以及它依赖或推荐的其他软件包。这些信息对于理解软件包之间的关系,或者解决依赖冲突问题,至关重要。我尤其关注
Depends
字段,它能让我对整个软件生态有个清晰的认知。

dpkg -L 
则是DEB系统里列出软件包所安装文件的命令。和
rpm -ql
一样,它会列出所有由该软件包安装的文件和目录。当我在找某个配置文件或者想确认一个服务是不是真的安装了它的二进制文件时,这个命令能给我最直接的答案。有时候,一个软件装了,但你就是找不到它的主程序,这时候用
dpkg -L
就能帮你找到它的藏身之处。

深入探索:如何查找某个文件属于哪个软件包?

这绝对是一个高级技巧,但又非常实用。想象一下,你发现系统里有一个奇怪的文件,或者一个关键的命令突然无法执行,你想知道这个文件到底是谁“生”的,属于哪个软件包。这时候,反向查找就显得尤为重要。

在RPM系统里,这个功能由

rpm -qf 
提供。这个命令非常强大,你只需要提供一个文件的完整路径,它就能告诉你这个文件是由哪个RPM包安装的。 比如,你突然对
/usr/bin/ls
这个命令感到好奇,想知道它来自哪个包:

rpm -qf /usr/bin/ls

通常你会得到类似

coreutils-8.30-10.el8.x86_64
这样的输出。这对于理解系统文件的来源,或者在文件被意外删除/修改后进行恢复,都提供了关键线索。我个人觉得这个命令在排查系统异常行为时特别有用,能快速定位到问题所在的软件包。

DEB系统这边,对应的命令是

dpkg -S 
。它的作用和
rpm -qf
完全一样,都是通过文件路径反查所属的软件包。 举个例子,你想知道
/bin/bash
是哪个软件包提供的:

dpkg -S /bin/bash

它会告诉你

bash: /bin/bash
,明确指出
bash
这个软件包包含了
/bin/bash
。这个功能在我尝试清理一些“孤儿文件”或者确认某个配置文件是否真的属于某个特定应用时,提供了极大的便利。它能让你对系统文件的归属有清晰的认识,避免误操作。

总的来说,无论是

rpm
还是
dpkg
,它们都是Linux系统管理员和普通用户不可或缺的工具。掌握了这些命令,你就能更有效地管理你的系统,解决各种软件包相关的问题。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

229

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

498

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

498

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

227

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

333

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3508

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

15

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

68

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.8万人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

计算机系统从应用层到底层
计算机系统从应用层到底层

共6课时 | 0.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号