命令找到二进制的源包?


33

我知道有一个which命令会回显二进制文件的全名(例如which sh)。但是,我相当确定有一个命令可以回显提供特定二进制文件的软件包。有这样的命令吗?如果是这样,那是什么?我希望能够运行以下命令:

commandName ls

并得到

coreutils

例如。

Answers:



10

如果要在尚未安装的软件包中查找文件,请使用apt-file

apt-get install -y apt-file
apt-file update

然后,找到一些东西:

apt-file search /usr/bin/file

要么

apt-find search file

其中“文件”是您要搜索的名称。

如果您不想在每个Debian系统上都进行此操作,则可以使用以下脚本:

#!/bin/bash
which apt-get >/dev/null || { echo apt-get not found >&2; exit 1; }
which apt-file >/dev/null || { apt-get install -y apt-file;  apt-file update; }
unset i; IFS=$'\x0a'; select i in $( apt-file search "/$@" ); do 
    test -n "$i" || break; apt-get install "${i%% *}"; done

那时我只是把它搅了一下,但似乎效果很好。

注意:“ dpkg -S”仅查找已经安装的内容。


3
使用该-y参数很危险,它可能对很多事情都说是。在脚本中可能没问题,但是第一个命令应该真正apt-get install apt-file不带读取,-y因为您不知道用户系统的外观。
jmiserez 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.