Comando per trovare il pacchetto sorgente di un binario?


33

So che c'è un whichcomando, che fa eco al nome completo di un binario (ad esempio which sh). Tuttavia, sono abbastanza sicuro che ci sia un comando che fa eco al pacchetto che fornisce un determinato binario. Esiste un tale comando? Se è così, che cosa è? Mi piacerebbe essere in grado di eseguire questo:

commandName ls

e prendi

coreutils

per esempio.

Risposte:


36

Suppongo che tu stia cercando il dpkg -Scomando (vedi anche le opzioni usate di frequente per dpkg ).


4
Grazie! dpkg -S `which COMMANDHERE`ha funzionato per me.
Delan Azabani,

Gentoo: qfile <name>
Sergei

dpkg -Strova il nome del nome del pacchetto binario, che può differire dal nome del pacchetto sorgente (codice).
Tino,

Solo per completezza, -Sè la forma abbreviata --searchdell'opzione, che in realtà è un'opzione per il dpkg-querycomando (ma dpkgfunziona anche in modo semplice)
waldyrious

10

Se vuoi trovare i file in un pacchetto che non hai installato, usa apt-file

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

Quindi, per trovare qualcosa:

apt-file search /usr/bin/file

o

apt-find search file

Dove "file" è il nome di qualunque cosa tu stia cercando.

Se non hai voglia di farlo su tutti i sistemi debian, puoi usare questo script:

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

L'ho appena montato, ma sembra funzionare bene.

Nota: "dpkg -S" trova solo le cose che hai già installato.


3
L'uso del -yparametro è pericoloso, potrebbe dire di sì a qualsiasi numero di cose. Nello script potrebbe andare bene, ma il primo comando dovrebbe davvero leggere apt-get install apt-filesenza il -ydato che non puoi sapere come appare il sistema dell'utente.
jmiserez,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.