给定二进制文件(或任何其他程序)的名称。如何找出哪个包提供了这个二进制文件?
笔记:假设使用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
:信息有点陈旧(默认情况下,数据库每晚更新),但查询操作更快。