Polecenie znalezienia pakietu źródłowego pliku binarnego?


33

Wiem, że istnieje whichpolecenie, które odzwierciedla pełną nazwę pliku binarnego (np which sh.). Jestem jednak całkiem pewien, że istnieje polecenie, które powtarza pakiet, który udostępnia określony plik binarny. Czy istnieje takie polecenie? Jeśli tak, co to jest? Chciałbym móc uruchomić to:

commandName ls

i dostać

coreutils

na przykład.

Odpowiedzi:


36

Wydaje mi się, że szukasz dpkg -Spolecenia (zobacz także często używane opcje dpkg ).


4
Dziękuję Ci! dpkg -S `which COMMANDHERE`pracował dla mnie.
Delan Azabani

Gentoo: qfile <nazwa>
Siergiej

dpkg -Sznajduje nazwę nazwy pakietu binarnego, która może różnić się od nazwy pakietu źródłowego (kodu).
Tino

Dla kompletności, -Sjest to krótka forma --searchopcji, która jest właściwie opcją dla dpkg-querypolecenia (ale zwykła dpkgteż działa)
waldyrious

10

Jeśli chcesz znaleźć pliki w pakiecie, który nie został jeszcze zainstalowany, użyj apt-file

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

Następnie, aby znaleźć coś:

apt-file search /usr/bin/file

lub

apt-find search file

Gdzie „plik” to nazwa tego, czego szukasz.

Jeśli nie masz ochoty przechodzić przez to na każdym systemie Debian, możesz użyć tego skryptu:

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

Właśnie wtedy to podkręciłem, ale wydaje się, że działa dobrze.

Uwaga: „dpkg -S” znajduje tylko rzeczy, które już zainstalowałeś.


3
Używanie tego -yparametru jest niebezpieczne, może powiedzieć „tak” dowolnej liczbie rzeczy. W skrypcie może to być w porządku, ale pierwsze polecenie powinno naprawdę czytać apt-get install apt-filebez, -yponieważ nie możesz wiedzieć, jak wygląda system użytkownika.
jmiserez
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.