这个简短的教程解释了几种在 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 中查找特定软件包的依赖项
就这样。 希望这可以帮助。 如果您知道任何其他方法来查找包含特定文件的包,请随时在下面的评论部分告诉我们。 我将相应地检查并更新指南。
感谢您的光临!
帮助我们帮助您:
- 订阅我们的电子邮件通讯: 立即注册
- 支持 OSTechNix: 通过贝宝捐款
- 下载免费的电子书和视频: TradePub 上的 OSTechNix
- 联系我们: 红迪网 | Facebook | Twitter | 领英 | RSS订阅
祝你有美好的一天!!