Como obtenho uma lista de pacotes que “Fornece” alguma coisa ”usando o dpkg?

7

Eu vejo que o dpkg tem um campo "Fornece" para pacotes.

$ apt-cache show vim-tiny | grep Provides
Provides: editor
$

Como sei quais pacotes fornecem, por exemplo, "editor"?

    
por Janus Troelsen 28.02.2012 / 19:38

5 respostas

3

Você pode obter o efeito desejado sem aptitude (o que parece não ser recomendado atualmente) usando apt-cache showpkg , que inclui uma listagem de Reverse Provides . Pipá-lo através de um pequeno script sed irá se livrar das outras coisas:

apt-cache showpkg <package> | sed '/Reverse Provides/,$!d'

Um exemplo um pouco mais bonito (mas mais longo para o tipo) (lista somente nomes de pacotes, não versões, e os classifica em ordem alfabética) pode ser obtido com awk :

apt-cache showpkg httpd | awk '/Pa/, /Reverse P/ {next} {print $1 | "sort"}'

... e isso pode ser canalizado através de uniq para remover duplicatas (o que pode existir devido a várias versões do pacote sendo reversas). Observe que o uso de uniq não ajudará na primeira versão, já que uniq remove apenas duplicatas se elas estiverem em linhas adjacentes e a sed não classificar a saída.

Finalmente, pode-se definir uma função para facilitar o uso, como segue:

provides () { apt-cache showpkg $1 | awk '/Pa/, /Reverse P/ {next} {print $1 | "sort"}' | uniq;}

Cole isso em (por exemplo) .bashrc , para que ele seja carregado quando o shell aparecer, e será possível executar provides <package> para obter o fornecimento reverso de um pacote.

    
por 27.02.2013 / 22:18
5
$ 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
$
    
por 28.02.2012 / 19:39
5

O Aptitude também oferece essa funcionalidade. Então, um comando como esse mostrará todos os pacotes que fornecem um editor.

aptitude search '~Peditor'

Você pode até adicionar outras restrições. Como mostrar apenas editores instalados.

aptitude search '~i~Peditor'
    
por 28.02.2012 / 19:47
0

Lendo diretamente o banco de dados:

#!/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']
$
    
por 28.02.2012 / 20:09
0

base no seu exemplo. Eu posso listar o pacote que fornece editor usando apropos

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
    
por 17.03.2013 / 11:57