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.

Antworten:



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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.