Befehl, um das Quellpaket einer Binärdatei zu finden?

33

Ich weiß which, dass es einen Befehl gibt, der den vollständigen Namen einer Binärdatei wiedergibt (z which sh. B. ). Ich bin mir jedoch ziemlich sicher, dass es einen Befehl gibt, der das Paket wiedergibt, das eine bestimmte Binärdatei bereitstellt. Gibt es so einen Befehl? Wenn ja, was ist das? Ich möchte Folgendes ausführen können:

commandName ls

und bekomme

coreutils

beispielsweise.

Delan Azabani
quelle

Antworten:

36

Ich vermute, Sie suchen nach dem dpkg -SBefehl (siehe auch häufig verwendete Optionen für dpkg ).

nik
quelle
4
Vielen Dank! dpkg -S `which COMMANDHERE`arbeitete für mich.
Delan Azabani
Gentoo: qfile <Name>
Sergei
dpkg -SFindet den Namen des Binärpakets, der sich vom Namen des Quellpakets (Code) unterscheiden kann.
Tino
Der Vollständigkeit -S--searchdpkg-querydpkg
halber
10

Wenn Sie Dateien in einem Paket suchen möchten, das Sie nicht installiert haben, verwenden Sie apt-file

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

Dann, um etwas zu finden:

apt-file search /usr/bin/file

oder

apt-find search file

Wobei "Datei" der Name von allem ist, wonach Sie suchen.

Wenn Sie dies nicht auf jedem Debian-System durchgehen möchten, können Sie dieses Skript verwenden:

#!/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

Ich habe das damals nur hochgepeitscht, aber es scheint gut zu funktionieren.

Hinweis: "dpkg -S" findet nur Dinge, die Sie bereits installiert haben.

Orwellophile
quelle
3
Die Verwendung des -yParameters ist gefährlich. Er kann zu einer beliebigen Anzahl von Dingen Ja sagen. Im Skript mag es in Ordnung sein, aber der erste Befehl sollte wirklich apt-get install apt-fileohne das lesen, -yda Sie nicht wissen können, wie das System des Benutzers aussieht.
JMISEREZ