Localizando todos os pacotes de software no Debian que fornecem uma alternativa em particular

11

A distribuição Debian tem o Sistema de Alternativas Debian . Do Wiki:

The Debian alternatives system creates a way for several programs that fulfill the same or similar functions to be listed as alternative implementations that are installed simultaneously but with one particular implementation designated as the default. For example many systems have several text editors installed at the same time. The vi program is a classic example of an editor that has many implementations such as nvi, elvis, vim, etc. but which one should be designated as the default?

Em geral, existem vários pacotes no Debian que fornecem uma alternativa em particular. Como se obtém uma lista completa de todos os pacotes que existem nos repositórios do Debian? Vamos usar a alternativa vi como exemplo.

NOTA: Fazer essa consulta na lista de pacotes instalados é fácil, mas não é isso que essa pergunta faz.

    
por Faheem Mitha 17.09.2014 / 18:04

5 respostas

8

Eu sei que isso é um pouco tarde, mas este post é atualmente um dos principais resultados de pesquisa relacionados a encontrar alternativas no Debian.

O problema com o uso do update-alternatives aqui é que ele mostrará apenas as opções instaladas até onde eu saiba (sua página de manual é bastante esparsa).

Para responder à pergunta colocada no título, ou seja, encontrar todos os pacotes disponíveis que fornecem uma alternativa (instalada ou não), você pode usar:

aptitude search '?provides(pattern)'

que também pode ser abreviado para:

aptitude search '~Ppattern'

em que pattern é todo ou parte da alternativa que você está procurando. No caso específico de vi , isso não funciona realmente. Se você inspecionar os pacotes nvi e vim com aptitude show ou apt-cache show , verá que nenhum deles lista "vi" em sua seção "Fornece:". Na verdade, a descrição do nvi está perdendo completamente essa seção.

No entanto, funciona razoavelmente bem para outras alternativas, como editor :

$ aptitude search '~Peditor'
p   deutex                         - composition tool for doom-style WAD files
p   edbrowse                       - /bin/ed-alike webbrowser written in C    
p   emacs24                        - GNU Emacs editor (with GTK+ GUI support) 
p   emacs24-lucid                  - GNU Emacs editor (with Lucid GUI support)
p   emacs24-nox                    - GNU Emacs editor (without GUI support)   
p   fte-console                    - Text editor for programmers - console edi
p   fte-terminal                   - Text editor for programmers - version for
p   fte-xwindow                    - Text editor for programmers - X Window Sy
p   jed                            - editor for programmers (textmode version)
p   jove                           - Jonathan's Own Version of Emacs - a compa
p   jupp                           - user friendly full screen text editor    
p   le                             - Text editor with block and binary operati
p   ledit                          - line editor for interactive programs     
p   levee                          - very small vi clone                      
p   mg                             - microscopic GNU Emacs-style editor       
p   nano                           - small, friendly text editor inspired by P
p   nano-tiny                      - small, friendly text editor inspired by P
p   ne                             - easy-to-use and powerful text editor     
p   pluma                          - official text editor of the MATE desktop 
p   rlfe                           - Front-end using readline to "cook" input 
p   rlwrap                         - readline feature command line wrapper    
p   scite                          - Lightweight GTK-based Programming Editor 
p   vigor                          - nvi with the evil paperclip              
p   vile                           - VI Like Emacs - vi work-alike            
p   vim                            - Vi IMproved - enhanced vi editor         
p   vim-athena                     - Vi IMproved - enhanced vi editor - with A
p   vim-gnome                      - Vi IMproved - enhanced vi editor - with G
i   vim-gtk                        - Vi IMproved - enhanced vi editor - with G
p   vim-nox                        - Vi IMproved - enhanced vi editor - with s
i   vim-tiny                       - Vi IMproved - enhanced vi editor - compac
p   xjed                           - editor for programmers (x11 version)     
p   xul-ext-password-editor        - edit password manager entries in Mozilla 
p   xvile                          - VI Like Emacs - vi work-alike (X11) 

Mesmo que isso não seja perfeito, aptitude tem recursos de pesquisa incrivelmente flexíveis que muitas vezes permite que você contorne o problema de pacotes não listando corretamente quais alternativas eles fornecem - por exemplo, usando "~seditors ~dvi\s" como um padrão de pesquisa listará todos os pacotes na seção "editores" cuja descrição contenha a string "vi". / p>

Outra opção é usar o site de pacotes Debian , onde pacotes semelhantes são listados na seção à direita. p>     

por 19.07.2015 / 09:44
5

Isso depende. Existem algumas alternativas, como x-www-browser, não usam um pacote e são adicionadas via scripts de manutenção às update-alternatives:

/var/lib/dpkg/info/iceweasel.postinst:    update-alternatives --install /usr/bin/x-www-browser \
/var/lib/dpkg/info/iceweasel.postinst:    update-alternatives --remove mozilla /usr/bin/iceweasel
/var/lib/dpkg/info/iceweasel.postinst:    update-alternatives --install /usr/bin/gnome-www-browser \
/var/lib/dpkg/info/iceweasel.prerm:    update-alternatives --remove x-www-browser /usr/bin/iceweasel
/var/lib/dpkg/info/iceweasel.prerm:    update-alternatives --remove gnome-www-browser /usr/bin/iceweasel
/var/lib/dpkg/info/chromium.postinst:    update-alternatives --install /usr/bin/x-www-browser \
/var/lib/dpkg/info/chromium.postinst:    update-alternatives --install /usr/bin/gnome-www-browser \
/var/lib/dpkg/info/chromium.prerm:    update-alternatives --remove x-www-browser /usr/bin/chromium
/var/lib/dpkg/info/chromium.prerm:    update-alternatives --remove gnome-www-browser /usr/bin/chromium

Existem outros que usam um único meta-pacote para instalar qualquer versão do mesmo binário (pacotes Java / OpenJRE vêm à mente, também init ). Outros usam um pacote virtual preenchendo as "Fornece" ( isso normalmente vem com uma atualização do banco de dados de DPKGs alternativas. Nesse caso, qualquer um desses pacotes deve fornecer o mesmo binário.

Então, como encontrar todos os pacotes que fornecem um arquivo específico? Eu usaria o Provides se você conhece um pacote que faz, e apt-file search file para todo o resto.

    
por 17.09.2014 / 18:36
3

Pacotes virtuais e o sistema de alternativas do Debian (que é onde os binários entram em ação) estão relacionados, mas não são os mesmos. Para pacotes virtuais, você pode usar apt-cache para descobrir quais pacotes (reais) "fornecem":

$ apt-cache showpkg awk
Package: awk
Versions: 

Reverse Depends: 
  base-files,awk
  base-files,awk
Dependencies: 
Provides: 
Reverse Provides: 
mawk:i386 1.3.3-17ubuntu2
gawk:i386 1:4.0.1+dfsg-2.1ubuntu2
original-awk 2012-12-20-1
mawk 1.3.3-17ubuntu2
gawk 1:4.0.1+dfsg-2.1ubuntu2

Para gerentes de exibição, o pacote virtual é x-display-manager :

$ apt-cache showpkg x-display-manager
Package: x-display-manager
Versions: 

Reverse Depends: 
  utf8-migration-tool,x-display-manager
  razorqt,x-display-manager
  lxde,x-display-manager
  numlockx,x-display-manager
  ltsp-client-core,x-display-manager
Dependencies: 
Provides: 
Reverse Provides: 
gdm 3.10.0.1-0ubuntu3.1
lightdm 1.10.6-0ubuntu1
kdm 4:4.11.11-0ubuntu0.2
xdm 1:1.1.11-1ubuntu1
wdm 1.28-16
slim 1.3.4-2.1
lxdm 0.4.1-0ubuntu6
kdm 4:4.11.8-0ubuntu6
gdm 3.10.0.1-0ubuntu3
lightdm 1.10.0-0ubuntu3

O sistema de alternativas é tratado por chamadas para update-alternatives nos scripts do mantenedor, como mostra a resposta da Braiam, e o resto do sistema de empacotamento não está ciente disso. O campo Provides também é mais geral que as alternativas, já que um pacote pode fornecer outro em termos de serviços ou bibliotecas oferecidas, não apenas via binários.

Sem os mantenedores de pacotes adicionando informações sobre alternativas ao campo Provides (e criando pacotes virtuais para todos os pontos finais de alternativas - como vi ) e sem inspecionar os pacotes propriamente ditos, não há um modo geral atual para saber qual pacote pode fornecer uma alternativa.

    
por 09.02.2016 / 14:54
2

Estritamente relacionado com a questão, para encontrar vi alternativa:

 update-alternatives --list editor

Saída:

/bin/ed
/bin/nano
/usr/bin/mcedit
/usr/bin/vim.basic
/usr/bin/vim.tiny

Ou:

update-alternatives --config vi

Saída:

There are 2 choices for the alternative vi (providing /usr/bin/vi).



Selection    Path                Priority   Status

------------------------------------------------------------

* 0            /usr/bin/vim.basic   30        auto mode

  1            /usr/bin/vim.basic   30        manual mode

  2            /usr/bin/vim.tiny    10        manual mode

Press enter to keep the current choice[*], or type selection number:
    
por 17.09.2014 / 18:22
1

No Ubuntu , o pacote command-not-found contém um banco de dados contendo também muitas alternativas. Após a instalação, ele pode ser consultado com /usr/lib/command-not-found --no-failure-msg --ignore-installed mail (para listar as alternativas para mail ).
Cuidado, quando você não quiser as sugestões automáticas de comandos ausentes no bash, escreva unset -f command_not_found_handle em seu ~ / .bashrc ou remova a definição globalmente em /etc/bash.bashrc . (Faça similar para zsh.)

Em Debian , esta ferramenta usa apenas apt-file para criar o banco de dados, portanto nenhuma alternativa é conhecida (não testada). Lá diz o mesmo que apt-file search ... .

Fonte do Ubuntu: link

    
por 19.07.2017 / 00:51