Eu sei que isso é um pouco tarde, mas este post é atualmente um dos principais hits de pesquisa relacionados à busca de alternativas no Debian.
O problema com o uso update-alternatives
aqui é que ele mostra apenas as opções instaladas até onde eu sei (a página de manual é bastante esparsa).
Para responder à pergunta apresentada no título, ou seja, localizando todos os pacotes disponíveis que oferecem uma alternativa (instalada ou não), você pode usar:
aptitude search '?provides(pattern)'
que também pode ser abreviado para:
aptitude search '~Ppattern'
onde pattern
está toda ou parte da alternativa que você está procurando. No caso específico de vi
, isso realmente não funciona. Se você inspecionar os pacotes nvi
e vim
com aptitude show
ou apt-cache show
, verá que nenhum deles lista "vi" na seção "Fornece:". De fato, a descrição do nvi está faltando nessa seção completamente.
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
possui recursos de pesquisa incrivelmente flexíveis que geralmente permitem solucionar o problema de pacotes que não listam corretamente quais alternativas eles fornecem - por exemplo, usar "~seditors ~dvi\s"
como padrão de pesquisa listará todos os pacotes na seção "editores" cujos description contém a sequência "vi".
Outra opção é usar o site de pacotes do Debian , onde pacotes semelhantes estão listados na seção à direita.
aps ~Peditor
? Seaps
pretende ser um atalho para a aptidão, tudo bem, mas por favor não use isso em uma resposta, isso apenas confundirá todos. Além disso, se você achar que há suprimentos ausentes, poderá registrar um relatório de bug nos pacotes correspondentes.aps
deve representaraptitude search
. Mas você deve usar isso explicitamente. No entanto, não acho que seja uma resposta viável, independentemente - talvez funcione com algum refinamento.aptitude search -Pvi
dá uma carga de coisas irrelevantes. Suponho que ele pesquisa a descrição completa do pacote.aptitude search ~P
(observe o til) pesquisa apenas emProvides
, masvi
corresponde a outrasProvides
entradas; você precisa especificar uma correspondência exata comaptitude search '~P^vi$'
. Este exemplo evidencia uma limitação fundamental com esta abordagem, porém: enquanto há umavi
alternativa, não há nenhumvi
pacote virtual ...Isso depende Existem algumas alternativas, como x-www-browser, não usam um pacote e são adicionadas por meio de scripts de manutenção às alternativas de atualização:
Existem outros que usam um único metapacote para instalar qualquer versão do mesmo binário (os pacotes Java / OpenJRE também vêm à mente
init
). Outros usam um pacote virtual preenchendo o "Fornece" (normalmente vem com uma atualização do banco de dados alternativo do DPKG); 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 Fornece se você conhece um pacote que possui e
apt-file search file
para todo o resto.fonte
editor
.Pacotes virtuais e o sistema de alternativas Debian (que é onde os binários entram em jogo) estão relacionados, mas não são os mesmos. Para pacotes virtuais, você pode usar
apt-cache
para encontrar quais pacotes (reais) "fornecem":Para gerenciadores de exibição, o pacote virtual é
x-display-manager
:O sistema de alternativas é tratado por chamadas
update-alternatives
em scripts de mantenedor, como mostra a resposta de Braiam, e o restante do sistema de empacotamento não os conhece. OProvides
campo também é mais geral do que alternativas, pois um pacote pode fornecer outro em termos de serviços ou bibliotecas oferecidos, não apenas via binários.Sem os mantenedores de pacotes adicionando informações sobre alternativas ao
Provides
campo (e criando pacotes virtuais para todos os pontos de extremidade das alternativas - comovi
) e sem inspecionar os próprios pacotes, não há atualmente uma maneira geral de determinar qual pacote pode oferecer uma alternativa.fonte
Estritamente relacionado à questão, para encontrar vi alternativa:
Resultado:
Ou:
Resultado:
fonte
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 alternativas paramail
).Cuidado, quando você não desejar as sugestões automáticas sobre comandos ausentes no bash, escreva
unset -f command_not_found_handle
no seu ~ / .bashrc ou remova a definição globalmente em/etc/bash.bashrc
. (Faça o mesmo para zsh.)No Debian , esta ferramenta usa apenas o 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: https://launchpad.net/command-not-found
fonte
/usr/lib/command-not-found /usr/bin/mail
parece algum tipo de receita, mas não entendo o que é suposto fazer. Uma explicação seria útil./usr/bin/
do comando, pois isso não funciona.# /usr/lib/command-not-found mail Command 'mail' is available in '/usr/bin/mail' mail: command not found
.mail
já está instalado. Esta verificação pode ser ignorado com a opção--ignore-installed
. Mas também depois disso, você não obterá mais informações (no debian) do que a partir deapt-file search mail
.