Vedo che dpkg ha un campo "Fornisce" per i pacchetti.
$ apt-cache show vim-tiny | grep Provides
Provides: editor
$
Come faccio a sapere quali pacchetti forniscono, ad esempio, "editor"?
Vedo che dpkg ha un campo "Fornisce" per i pacchetti.
$ apt-cache show vim-tiny | grep Provides
Provides: editor
$
Come faccio a sapere quali pacchetti forniscono, ad esempio, "editor"?
Risposte:
È possibile ottenere l'effetto desiderato senza aptitude
(che sembra essere scoraggiato in questi giorni) utilizzando apt-cache showpkg
, che include un elenco di Reverse Provides
. Il piping attraverso un piccolo sed
script eliminerà le altre cose:
apt-cache showpkg <package> | sed '/Reverse Provides/,$!d'
Un esempio leggermente più carino (ma più lungo da digitare) (elenca solo i nomi dei pacchetti, non le versioni e li ordina in ordine alfabetico) può essere ottenuto con awk
:
apt-cache showpkg httpd | awk '/Pa/, /Reverse P/ {next} {print $1 | "sort"}'
... e questo può essere reindirizzato uniq
per rimuovere i duplicati (che possono esistere a causa di versioni multiple del pacchetto fornite inverse). Si noti che l'uso di uniq
non aiuterà con la prima versione, poiché uniq
rimuove i duplicati solo se si trovano su linee adiacenti e la sed
versione non ordina l'output.
Infine, è possibile definire una funzione per un uso più semplice, come segue:
provides () { apt-cache showpkg $1 | awk '/Pa/, /Reverse P/ {next} {print $1 | "sort"}' | uniq;}
Inseriscilo (per esempio) .bashrc
, in modo che si carichi quando lo fa la shell, e diventa possibile eseguire provides <package>
per ottenere il reverse-fornisce un pacchetto.
sort -u
. Non lo sapevo. Mi chiedo perché non riprenda doom-wad-editor
...? Ciò è particolarmente interessante poiché lo apt-cache showpkg
dimostra come non avere alcuna dipendenza.
aptitude
la ricerca corrisponderà alle sottostringhe nel Provides:
campo (quindi raccogliendo deutex
), in cui il apt-cache showpkg
metodo utilizza nomi di pacchetti esatti. Entrambi, quindi, presumibilmente hanno il loro posto.
<package>
tratta di un pacchetto virtuale qui. Come editor
.
Provides:
riga nel repository. Allo stesso modo apt-cache search
, quindi, il risultato corretto quando non ce ne sono è una mancanza di output, che è ciò che offrono queste opzioni. Possono esserci versioni concrete e virtuali dello stesso pacchetto e suppongo che potremmo migliorarle per mostrare la versione concreta in cui esiste, ma è tutto.
Aptitude fornisce anche questa funzionalità. Quindi un comando come questo mostrerà tutti i pacchetti che forniscono un editor.
aptitude search '~Peditor'
Puoi anche aggiungere altri vincoli. Come mostra solo gli editor installati.
aptitude search '~i~Peditor'
$ dpkg-query -W -f='Package: ${Package}\nProvides: ${Provides}\n' \
| grep -B 1 -E "^Provides: .*editor"
Package: nano
Provides: editor
--
Package: vim-gnome
Provides: editor, gvim, vim, vim-perl, vim-python, vim-ruby, vim-tcl
--
Package: vim-tiny
Provides: editor
$
Lettura diretta del database:
#!/usr/bin/env python3
import sys
import shlex
def whichPkgsProvide(filter,l):
for pkg in l:
dic = {}
pairs = [x.split(": ") for x in pkg.split("\n")]
for j in pairs:
try:
dic[j[0]] = j[1]
except IndexError:
pass
try:
if filter in dic["Provides"]:
yield dic["Package"]
except KeyError:
pass
if __name__ == "__main__":
l = sys.stdin.read().split("\n\n")
print(list(whichPkgsProvide(sys.argv[1],l)))
Uso:
$ python3 whichPkgsProvide.py editor < /var/lib/dpkg/available
['vim-gnome', 'nano', 'vim-tiny']
$
basati sul tuo esempio. Posso elencare il pacchetto fornito editor
dall'usoapropos
hvn@lappy: ~ () $ apropos editor
atobm (1) - bitmap editor and converter utilities for the X W...
bitmap (1) - bitmap editor and converter utilities for the X W...
bmtoa (1) - bitmap editor and converter utilities for the X W...
ed (1) - text editor
editor (1) - Vi IMproved, a programmers text editor
editres (1) - a dynamic resource editor for X Toolkit applications
ex (1) - Vi IMproved, a programmers text editor
gedit (1) - text editor for the GNOME Desktop
gnome-text-editor (1) - text editor for the GNOME Desktop
gview (1) - Vi IMproved, a programmers text editor
gvim (1) - Vi IMproved, a programmers text editor
i3-sensible-editor (1) - launches $EDITOR with fallbacks
nano (1) - Nano's ANOther editor, an enhanced free Pico clone
notepad (1) - Wine text editor
pico (1) - Nano's ANOther editor, an enhanced free Pico clone
psed (1) - a stream editor
ptked (1p) - an editor in Perl/Tk
red (1) - text editor
regedit (1) - Wine registry editor
rgview (1) - Vi IMproved, a programmers text editor
rgvim (1) - Vi IMproved, a programmers text editor
rnano (1) - Restricted mode for Nano's ANOther editor, an enh...
rview (1) - Vi IMproved, a programmers text editor
rvim (1) - Vi IMproved, a programmers text editor
s2p (1) - a stream editor
sdlBasic (1) - sdlBasic program editor
sed (1) - stream editor for filtering and transforming text
select-editor (1) - select your default sensible-editor from all inst...
sensible-editor (1) - sensible editing, paging, and web browsing
software-properties-gtk (1) - Software Sources List editor
Tk::ColorEditor (3pm) - a general purpose Tk widget Color Editor
vi (1) - Vi IMproved, a programmers text editor
view (1) - Vi IMproved, a programmers text editor
vim (1) - Vi IMproved, a programmers text editor
winecfg (1) - Wine Configuration Editor
xedit (1) - simple text editor for X
zshzle (1) - zsh command line editor
apropos
cerca tra le pagine del manuale, quindi questo elencherà solo i comandi installati ... Inoltre, OP vuole un elenco di pacchetti .
sort -u
rimuoverà i duplicati, quindi la chiamata auniq
non è necessaria. Qualunque sia, bella soluzione, è molto più veloce.aptitude
corrisponderàdoom-wad-editor
anche, quindi non sono completamente equivalenti.