命令来查找二进制文件的源包?

Del*_*ani 36 linux packages ubuntu

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

commandName ls

并得到

coreutils

例如。

nik*_*nik 41

我猜您正在寻找dpkg -S命令(另请参阅dpkg 的常用选项)。

  • 谢谢!`dpkg -S \`which COMMANDHERE\`` 为我工作。 (4认同)
  • `dpkg -S` 查找二进制包名称,该名称可以与源(代码)包的名称不同。 (2认同)

Orw*_*ile 11

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

apt-get install -y apt-file
apt-file update
Run Code Online (Sandbox Code Playgroud)

然后,找到一些东西:

apt-file search /usr/bin/file
Run Code Online (Sandbox Code Playgroud)

或者

apt-find search file
Run Code Online (Sandbox Code Playgroud)

其中“文件”是您要搜索的任何内容的名称。

如果你不想在每个 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
Run Code Online (Sandbox Code Playgroud)

我当时只是想了一下,但它似乎工作得很好。

注意:“dpkg -S”只能找到你已经安装的东西。

  • 使用 `-y` 参数是危险的,它可以对任何数量的事情说“是”。在脚本中它可能没问题,但是第一个命令应该真正读取不带 `-y` 的 `apt-get install apt-file`,因为你无法知道用户的系统是什么样的。 (3认同)