如何在 Linux 中找到提供特定文件的包

这个简短的教程解释了几种在 Linux 中查找提供特定文件的包的不同方法。 当您手动编译和安装软件包时,这可能很有用。 当您从源代码编译包时,您可能会收到类似的错误 “没有规则来制作目标 ‘‘,这是 ‘‘ 所需要的。停止。”. 您可能不确切知道哪些软件包提供了丢失的文件。 在这种情况下,您可以轻松找到提供这些缺失文件的软件包,并将它们安装在您的 Linux 机器中,如本指南中所述。

在 Linux 中查找提供特定文件的包

Arch Linux、Antergos、Manjaro Linux:

基于 Arch,有一个小的命令行工具叫做 包文件,用于从包中搜索文件。

Pkgfile 预装在 Arch Linux 中。 如果不是,您可以使用以下命令进行安装:

$ sudo pacman -S pkgfile

然后,运行以下命令与 pkgfile 数据库同步:

$ sudo pkgfile -u

现在,您可以找到提供特定文件的包,例如 example 别名文件,使用命令:

$ pkgfile alisp.h
extra/alsa-lib

正如您在上面的输出中看到的, alsa-lib 包提供 别名文件 文件。 而且,该软件包可从 额外的 存储库。 您现在可以安装此软件包,如下所示。

$ sudo pacman -S alsa-lib

要列出 alsa-lib 包提供的所有文件,请运行:

$ pkgfile -l alsa-lib

RHEL、CentOS、 Fedora:

在基于 YUM 的系统(例如 RHEL 及其克隆(例如 CentOS、Scientific Linux)中)中,您可以使用以下命令找到拥有特定文件的软件包:

$ yum whatprovides '*filename'

在 Fedora,请改用以下命令:

$ dnf provides '*filename'

如果该文件已在您的系统中可用,请说 example /bin/ls,然后您可以使用以下命令找到拥有该文件的包:

# rpm -qf /bin/ls
coreutils-8.22-18.el7.x86_64

您还可以使用 回购 命令如下:

$ repoquery -f /bin/ls

如果您的系统中没有 repoquery 命令,请安装 百胜工具 包裹。

$ sudo yum install yum-utils

或者,

$ sudo dnf install yum-utils

Debian、Ubuntu、Linux Mint:

在任何基于 DEB 的系统中,您都可以使用以下命令找到提供特定文件的包 apt文件 工具。

如果尚未安装 apt-file,请按如下所示安装:

$ sudo apt-get install apt-file

如果你刚刚安装了 apt-file,系统范围的缓存可能是空的。 您需要以 root 身份运行“apt-file update”来更新缓存。 您还可以以普通用户身份运行“apt-file update”以使用用户主目录中的缓存。

让我们使用命令更新数据库缓存:

$ sudo apt-file update

然后搜索包含特定文件的包,比如说 别名文件,使用命令:

$ apt-file find alisp.h

或者,

$ apt-file search alisp.h

样本将是:

libasound2-dev: /usr/include/alsa/alisp.h

好, libasound2-dev 它是! 您可以使用以下命令安装此软件包:

$ sudo apt-get install libasound2-dev

如果您已经拥有该文件,并且只想知道它属于哪个包,则可以使用 磅数 命令如下图。

$ dpkg -S $(which alisp.h)

或者,

$ dpkg -S `which alisp.h`

如果您知道文件的完整路径,请说 example /bin/ls,您可以使用以下命令搜索它所属的包:

$ dpkg -S /bin/ls
coreutils: /bin/ls

SUSE / openSUSE:

在 SUSE 和 openSUSE 上,运行以下命令来找出某个文件属于哪个包。

$ zypper wp alisp.h

或者,

$ zypper se --provides --match-exact alisp.h

建议阅读:

  • 如何在 Linux 中列出某个存储库中已安装的软件包
  • 如何在 CentOS 中查找特定软件包的依赖项

就这样。 希望这可以帮助。 如果您知道任何其他方法来查找包含特定文件的包,请随时在下面的评论部分告诉我们。 我将相应地检查并更新指南。

感谢您的光临!

帮助我们帮助您:

祝你有美好的一天!!