Mi trovo spesso a mancare un programma, una pagina man o un altro file quando lavoro sul mio sistema Ubuntu 8.04. C'è un modo semplice per cercare quale pacchetto contiene un dato file (se è già installato o meno)? Forse qualche opzione oscura per apt o dpkg?
apt-file search filename
o
apt-file search /path/to/file
Per installare apt-file
, utilizzare:
Sudo apt-get install apt-file
Dovrai aggiornare il suo database prima di poterlo usare:
Sudo apt-file update
(Debian/Ubuntu) Scopri a quale pacchetto appartiene un file :
dpkg -S /usr/bin/ls
'dpkg -S' corrisponde semplicemente alla stringa che gli viene fornita, quindi basta usare 'ls' come argomento corrispondente a qualsiasi file di qualsiasi pacchetto che abbia 'ls' ovunque nel nome file. Quindi di solito è una buona idea usare un percorso assoluto. Nel secondo esempio è possibile vedere che 12 mila file noti a dpkg corrispondono alla stringa "ls".
packages.debian.org è quello che uso sempre per portare a termine questo compito. È superiore a apt-file perché può trovare anche parti di nomi di file. È anche collegato alla lista dei pacchetti principali che elencherà descrizioni, bug, ecc. Tutto sommato un buon sito web. Non altrettanto utile dalla riga di comando, ma comunque abbastanza utile.
Per velocità, ho aggiunto un segnalibro all'URL:
http://packages.debian.org/search?searchon=contents&keywords=%s&mode=filename&suite=unstable&Arch=any
in Firefox, e ha aggiunto "debfind" come parola chiave (fai clic su "altro" nel gestore di segnalibri con Hilighted), quindi posso semplicemente digitare "debfind" e funzionerà. Puoi cambiare 'suite' da unstable a stable o testare se vuoi, per altre versioni della distribuzione.
Puoi anche usare dlocate. Dalla pagina man;
$ dlocate [ PATTERN ]
List all records where either the package name or the filename matches PATTERN.
Ho trovato Wajig ...
wajig whichpackage /path/to/file
per esempio.
wajig whichpackage /etc/apt/sources.list
Wajig è un pratico strumento da riga di comando o console che racchiude tutta la bontà di apt-get, dpkg che non avresti mai voluto imparare. .
Per installare wajig utilizzare:
apt-get install wajig
Quel comando 'whichpackage' stesso dipende da apt-file
sarà comunque necessario aggiornare il suo database prima di poterlo utilizzare: - Non so ancora se l'aggiornamento di wajig che fa un aggiornamento apt-get aggiorni anche la cache dei file, ma mi aspetto che ciò accada.
Sudo wajig update
Sudo apt-file update
(e Super Cow, Easter egss?!)
Simmilar alla risposta di jamuraa per Debian, puoi anche andare su http://packages.ubuntu.com/ per Ubuntu. Dovrai scorrere verso il basso un po 'per trovare il "Cerca il contenuto dei pacchetti" searchbox dove puoi inserire il percorso di un file.
Prova a cercare i file usando http://www.kodkast.com/applications/find-which-package-file-belongs-to
Questa è un'applicazione per cercare file che sono contenuti in diversi pacchetti rpms/linux, ed è molto utile quando non hai nemmeno il rpm installato sul tuo computer.
Il pacchetto command-not-found fornisce suggerimenti sui potenziali comandi e sul nome del pacchetto debian. Funziona digitando il comando nella bash Shell e osservando il suo output.
Ad esempio, se il nome del comando è noto:
[email protected]:~ 10:45 $ zsh5
The program 'zsh5' is currently not installed. To run 'zsh5' please ask
your administrator to install the package 'zsh'
zsh5: command not found
e se il comando non è noto, vengono applicate alcune ipotesi:
[email protected]:~ 09:46 $ zsh
No command 'zsh' found, did you mean:
Command 'lsh' from package 'lsh-client' (main)
Command 'osh' from package 'omake' (main)
Command 'ysh' from package 'libyaml-Shell-Perl' (main)
Command 'ssh' from package 'openssh-client' (main)
Command 'vsh' from package 'crystalspace' (main)
Command 'dsh' from package 'dsh' (main)
Command 'ash' from package 'ash' (main)
Command 'msh' from package 'nmh' (main)
Command 'zssh' from package 'zssh' (main)
Command 'qsh' from package 'gridengine-client' (main)
Command 'sh' from package 'dash' (main)
Command 'bsh' from package 'bsh' (main)
zsh: command not found