更新数据库

admin

Linux 实用指南:如何根据指令查找出自哪个软件包

在 Linux 系统的使用过程中,我们经常会遇到这样一个问题:在终端输入一个命令(nginxdockergit)后成功执行,但当你想要卸载、更新或了解这个命令的详细信息时,却忘记了它是由哪个软件包安装的。

为了解决这个常见的困扰,本文将详细介绍几种在主流 Linux 发行版中,根据指令(或二进制文件)反查其所属软件包的方法。

更新数据库

Debian/Ubuntu 系列

对于基于 Debian 的系统(如 Ubuntu, Debian, Kali Linux 等),最常用的工具有 dpkgapt-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),通常使用 rpmyum/dnf

使用 rpm -qf (需知道完整路径)

与 Debian 系类似,如果你有路径,可以直接查询。

rpm -qf /usr/bin/git

使用 yum providesdnf 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 -Srpm -qfpacman -Qo 命令中即可。

在 Linux 中查找指令所属的

文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码