Linux 实用指南:如何根据指令查找出自哪个软件包
在 Linux 系统的使用过程中,我们经常会遇到这样一个问题:在终端输入一个命令(nginx、docker 或 git)后成功执行,但当你想要卸载、更新或了解这个命令的详细信息时,却忘记了它是由哪个软件包安装的。
为了解决这个常见的困扰,本文将详细介绍几种在主流 Linux 发行版中,根据指令(或二进制文件)反查其所属软件包的方法。

Debian/Ubuntu 系列
对于基于 Debian 的系统(如 Ubuntu, Debian, Kali Linux 等),最常用的工具有 dpkg 和 apt-file。
使用 dpkg -S (需知道完整路径)
如果你知道该命令的完整路径(/usr/bin/git),可以使用 dpkg 进行查询。
dpkg -S /usr/bin/git
输出示例:
git: /usr/bin/git
使用 apt-file (更强大,无需知道路径)
这是最推荐的方法,即使软件包没有安装,它也能通过数据库搜索包含该指令的文件,使用前请先更新数据库。
# 查询指令所属包 (使用通配符 *) apt-file search /usr/bin/git # 或者直接搜索指令名 apt-file search git
输出示例:
git: /usr/bin/git
RHEL/CentOS/Fedora 系列
对于基于 RHEL 的系统(如 CentOS, RHEL, Rocky Linux, Fedora),通常使用 rpm 或 yum/dnf。
使用 rpm -qf (需知道完整路径)
与 Debian 系类似,如果你有路径,可以直接查询。
rpm -qf /usr/bin/git
使用 yum provides 或 dnf provides (最推荐)
这是 RHEL 系中最直观的方法,你不需要知道文件路径,直接输入命令名称,系统会列出所有包含该命令的软件包。
# CentOS 6/7 yum provides */git # CentOS 8/9 或 Fedora dnf provides */git
输出示例:
git-2.43.0-1.el9.x86_64 : A fast distributed version control system Repo : @System Matched from: filename : /usr/bin/git
Arch Linux 系列
在 Arch Linux 及其衍生版(如 Manjaro)中,使用 pacman。
使用 pacman -Qo (需知道完整路径)
pacman -Qo /usr/bin/git
输出示例:
git /usr/bin/git
通用技巧:快速获取路径
上述命令大多需要你提供该指令的完整路径(如 /usr/bin/git),如果你只知道指令名称(如 git),可以使用以下命令快速找到它的路径:
# 查找指令位置 which git # 或者查看指令类型 type git
找到路径后,将其复制并粘贴到上述的 dpkg -S、rpm -qf 或 pacman -Qo 命令中即可。
在 Linux 中查找指令所属的

