バイナリのソースパッケージを見つけるコマンド?


33

whichバイナリの完全な名前(例:)をエコーするコマンドがあることは知っていwhich shます。ただし、特定のバイナリを提供するパッケージをエコーするコマンドがあると確信しています。そのようなコマンドはありますか?もしそうなら、それは何ですか?これを実行できるようにしたい:

commandName ls

そして得る

coreutils

例えば。

回答:


36

dpkg -Sコマンドを探していると思います(dpkgで頻繁に使用されるオプションも参照してください)。


4
ありがとうございました!dpkg -S `which COMMANDHERE`私のために働いた。
デランアザバニ

Gentoo:qfile <名前>
セルゲイ

dpkg -Sバイナリパッケージ名の名前を検索します。これは、ソース(コード)パッケージの名前とは異なる場合があります。
ティノ

完全を-S--searchdpkg-querydpkg
期す

10

インストールしていないパッケージ内のファイルを検索する場合は、apt-fileを使用します

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

次に、何かを見つけるには:

apt-file search /usr/bin/file

または

apt-find search file

ここで、「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パラメータを使用するのは危険です。多くのことに対してyesと言うことができます。スクリプトでは大丈夫かもしれませんが、最初のコマンドはユーザーのシステムがどのように見えるかわからないのでapt-get install apt-file、実際にそれなしで読む必要があります-y
jmiserez
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.