Debian 系与 RPM 系常用软件包查询命令/信息/列出已安装包/模糊查找等命令

Debian 系与 RPM 系常用软件包查询命令对照与用法详解

Linux 下排错、打包、部署时,最常见的问题之一就是「这个东西是哪个包装的?」「这个包装了什么文件?」「有没有安装?」「哪个仓库来的?」。

在 RPM 系(如 CentOS / RHEL / Fedora / openEuler)里,你用的是 rpm + dnf/yum;在 Debian/Ubuntu 里,用的是 dpkg + apt

理解它们的对应关系,能大幅提升你在两大阵营之间「切换脑子」的效率。

下面以你提到的 rpm -ql net-tools 为切入点,系统对比一下两派常用命令与用法。


1. 已安装包:查询文件列表(rpm -ql / dpkg -L)

你现在用的例子:

bash 复制代码
rpm -ql net-tools

功能:

列出已安装包 net-tools 包含的所有文件路径。

在 Debian/Ubuntu 中,对应命令是:

bash 复制代码
dpkg -L net-tools
  • rpm -ql → 已安装包的文件列表
  • dpkg -L → 已安装包的文件列表

典型用途:

  • 确定某命令来自哪个路径(如 /usr/sbin/ifconfig

  • 看一个包往系统里「扔」了哪些文件(配置、库、文档等)

  • 查看 man 文档、配置文件位置:

    bash 复制代码
    rpm -ql net-tools | grep man
    dpkg -L net-tools | grep man

2. 已安装包:查看包信息(dnf info / apt show)

你刚才用的:

bash 复制代码
dnf info net-tools

在 CentOS/RHEL/Fedora/openEuler 等 RPM 系中,查看仓库中(已安装或可安装)包的信息,一般有两种:

bash 复制代码
dnf info net-tools          # 新系统
yum info net-tools          # 旧系统

而在 Debian/Ubuntu 中,对应的是:

bash 复制代码
apt show net-tools
# 或更底层一点:
apt-cache show net-tools

两边都会展示类似信息:

  • 版本、架构
  • 来源仓库 (From repo / APT-Sources)
  • 大小、license
  • 简要描述(Summary / Description)

如果只想看本机已安装版本 ,RPM 系还可以用 rpm

bash 复制代码
rpm -qi net-tools

Debian 系则是:

bash 复制代码
dpkg -s net-tools

对比关系:

功能 RPM 系 Debian 系
查询仓库中的包信息 dnf info name / yum info apt show name / apt-cache show
查询已安装包信息 rpm -qi name dpkg -s name

3. 已安装包:列出全部已安装包(rpm -qa / dpkg -l)

RPM 系:

bash 复制代码
rpm -qa                # 列出所有已安装 RPM 包
rpm -qa | grep net     # 过滤

Debian 系:

bash 复制代码
dpkg -l                # 列出所有已安装 DEB 包
dpkg -l | grep net

或者更好读一点的:

bash 复制代码
apt list --installed
apt list --installed | grep net-tools

4. 文件 → 包:某个文件是哪个包装来的?(rpm -qf / dpkg -S)

这是排错时非常有用的命令。

RPM 系

bash 复制代码
rpm -qf /usr/sbin/ifconfig
# 或
dnf provides /usr/sbin/ifconfig   # 支持模式匹配,更智能
  • -qf:query file
  • 作用:查出这个文件属于哪个已安装包。

Debian 系

bash 复制代码
dpkg -S /usr/sbin/ifconfig

更强一点(即使没安装,也能从仓库里查)的用法,是先安装 apt-file

bash 复制代码
sudo apt install apt-file
sudo apt-file update
apt-file search /usr/sbin/ifconfig

对比关系:

功能 RPM 系 Debian 系
已安装文件 → 包 rpm -qf /path/to/file dpkg -S /path/to/file
仓库中(没装也可)搜索 dnf provides /path/to/file apt-file search /path/to/file

想找「名字里包含 net」的包:

  • RPM 系:

    bash 复制代码
    dnf search net-tools
    dnf search ifconfig
  • Debian 系:

    bash 复制代码
    apt search net-tools
    apt search ifconfig

用途:

  • 不记得全名,只知道一部分;
  • 想看看相关工具还有什么可装。

6. 安装 / 卸载包(install / remove)

这部分两边用法非常像。

安装

  • RPM 系:

    bash 复制代码
    dnf install net-tools
    # 或旧系统:
    yum install net-tools
  • Debian 系:

    bash 复制代码
    apt install net-tools

卸载

  • RPM 系:

    bash 复制代码
    dnf remove net-tools
    # 或 yum remove/erase
  • Debian 系:

    bash 复制代码
    apt remove net-tools          # 移除程序保留大部分配置
    apt purge net-tools           # 连配置文件一起清掉

7. 从本地包文件查询(rpm -qlp / dpkg -c 等)

有时候你手里有一个 .rpm.deb 文件,想看看里面有什么,而不安装

RPM 系(.rpm)

bash 复制代码
rpm -qlp some-package.rpm   # 列出将要安装的文件列表
rpm -qip some-package.rpm   # 查看这个 rpm 包的信息

Debian 系(.deb)

bash 复制代码
dpkg -c some-package.deb    # 列出文件列表(注意是 -c,不是 -L)
dpkg -I some-package.deb    # 查看包控制信息(类似 rpm -qip)

8. 仓库里有哪些版本 / 源信息

RPM 系

当前可用版本:

bash 复制代码
dnf list net-tools
dnf list --showduplicates net-tools   # 显示所有可用版本

Debian 系

bash 复制代码
apt list net-tools
apt-cache policy net-tools   # 显示各仓库版本和当前安装版本

9. 依赖关系查询(requires / depends)

RPM 系

bash 复制代码
# 某包依赖了什么
rpm -qR net-tools

# 谁依赖这个包(反向依赖)
dnf repoquery --whatrequires net-tools   # 需要 dnf-plugins-core,发行版略有不同

Debian 系

bash 复制代码
# 某包依赖了什么
apt-cache depends net-tools
apt-cache rdepends net-tools   # 反向依赖

10. 系统提纲式对照表

下面给一个「常用命令对照速查表」,你可以存一份。

场景 / 功能 RPM 系(RHEL / CentOS / Fedora / openEuler 等) Debian 系(Debian / Ubuntu 等)
查询包是否已安装 rpm -q pkg dpkg -s pkg / apt list --installed pkg
列出已安装包文件 rpm -ql pkg dpkg -L pkg
查看已安装包信息 rpm -qi pkg dpkg -s pkg
查看仓库中包信息 dnf info pkg / yum info pkg apt show pkg / apt-cache show pkg
列出所有已安装包 rpm -qa dpkg -l / apt list --installed
文件属于哪个已安装包 rpm -qf /path/to/file dpkg -S /path/to/file
文件属于哪个包(含仓库,未安装也查) dnf provides /path/to/file apt-file search /path/to/file
模糊搜索包名 dnf search keyword / yum search keyword apt search keyword
安装包 dnf install pkg / yum install pkg apt install pkg
卸载包 dnf remove pkg / yum remove pkg apt remove pkg / apt purge pkg
列出仓库中的包(含状态) dnf list [pkg] apt list [pkg]
查看所有可用版本/来源 dnf list --showduplicates pkg apt-cache policy pkg
查依赖关系(这个包依赖什么) rpm -qR pkg apt-cache depends pkg
查反向依赖(谁依赖这个包) dnf repoquery --whatrequires pkg(以及其它 repoquery 子命令) apt-cache rdepends pkg
查看本地包文件信息 rpm -qip file.rpm dpkg -I file.deb
查看本地包文件包含的文件列表 rpm -qlp file.rpm dpkg -c file.deb

11. 回到你的例子:用 rpm -ql 反查命令位置

你刚才看到:

bash 复制代码
rpm -ql net-tools | grep /sbin
/usr/sbin/arp
/usr/sbin/ether-wake
/usr/sbin/ifconfig
/usr/sbin/ipmaddr
/usr/sbin/iptunnel
/usr/sbin/mii-diag
/usr/sbin/mii-tool
/usr/sbin/nameif
/usr/sbin/plipconfig
/usr/sbin/route
/usr/sbin/slattach

在 Debian 系里,完全一样的思路:

bash 复制代码
dpkg -L net-tools | grep /sbin

比如在 Ubuntu 下,你也会看到 /sbin/ifconfig/bin/netstat 等老命令的位置。
一旦知道这些文件实际路径,就可以推断 PATH 是否包含、权限是否正确、命令是否被替换/冲突。


12. 小结:用好这几条,基本够你排包相关问题

在日常运维/开发排障中,高频实战组合大致是:

  • RPM 系:
    • rpm -qa | grep xxx
    • rpm -ql package
    • rpm -qf /path/to/file
    • dnf info/search/list/provides package-or-file
  • Debian 系:
    • dpkg -l | grep xxx
    • dpkg -L package
    • dpkg -S /path/to/file
    • apt show/search/list package
    • (如果装了 apt-fileapt-file search /path/to/file

如果你愿意,我可以再帮你写一篇更偏「教学」风格的版本,带上具体场景例子(比如:排查某个命令缺失、定位哪个包丢库、或者对比 net-toolsiproute2 等)。

相关推荐
木子.李3479 小时前
ssh连接远程服务器相关总结
运维·服务器·ssh
晚风吹人醒.10 小时前
SSH远程管理及访问控制
linux·运维·ssh·scp·xshell·访问控制·远程管理
necessary65311 小时前
使用Clion查看linux环境中的PG源码
linux·运维·服务器
江湖有缘13 小时前
Jump个人仪表盘Docker化部署教程:从0到 搭建专属导航页
运维·docker·容器
FL162386312913 小时前
win11+WSL+Ubuntu-xrdp+远程桌面闪退+黑屏闪退解决
linux·运维·ubuntu
AOwhisky14 小时前
Linux逻辑卷管理:从“固定隔间”到“弹性存储池”的智慧
linux·运维·服务器
05大叔14 小时前
大事件Day02
运维·服务器
C Yu小白15 小时前
Linux系统调用与文件操作详解
linux·运维·服务器
ZFB000115 小时前
【麒麟桌面系统】V10-SP1 2503 系统知识——常见用户组简介
linux·运维·kylin