获取包含给定二进制文件的包的名称

获取包含给定二进制文件的包的名称

给定二进制文件(或任何其他程序)的名称。如何找出哪个包提供了这个二进制文件?

笔记:假设使用apt/dpkg进行包管理。

编辑

除了下面的正确答案之外,我还想添加一些进一步的信息:在上面的问题中,我假设已经安装了对应的包。如果这是不是在这种情况下,有一个名为的包apt-file无论如何都可以完成这项工作。

搜索该mysqldump工具可以通过

$ apt-file --regexp search .*mysqldump$

导致:

mariadb-client-10.0: /usr/bin/mysqldump
mysql-client-5.5: /usr/bin/mysqldump

找到了这个解决方案这里但我认为在这里提及它可能会有用。

答案1

你要包装袋。具体来说,该-S选项将查找哪个包拥有一个文件。

一个例子:

$ dpkg -S /usr/bin/whereis
util-linux: /usr/bin/whereis

该示例显示该util-linux包包含/usr/bin/whereis.

答案2

dpkg --search /usr/bin/mysqldump
dpkg -S /usr/bin/mysqldump

的参数dpkg --search是 shell 通配符模式,因此您可以执行诸如 之类的操作dpkg -S bin/*dump

或者,您可以手动搜索数据库 - 它只是文本文件。

grep mysqldump /var/lib/dpkg/info/*.list

在安装了很多软件包的系统上,速度dpkg -S可能会很慢,因为它必须读取/var/lib/dpkg/info.您可以安装定位它以与索引所有文件相同的方式索引通过 deb 包安装的文件locate:信息有点陈旧(默认情况下,数据库每晚更新),但查询操作更快。

相关内容