Estou usando o arch linux.
Existe uma maneira de listar dependências opcionais de todos os pacotes instalados? E se sim, posso filtrar esta lista para ver apenas os pacotes ausentes (não instalados)?
arch-linux
pacman
vonPetrushev
fonte
fonte
pacman -Qi | grep "Optional Deps" | grep -v None | grep -v installed
Respostas:
Você pode usar expac para consultar o
pacman
banco de dados.Algo como:
imprimirá uma lista de todos os pacotes instalados em sua máquina e o
optdepends
de cada (%O
) 1 em um arquivo chamadooptdeps
. Você pode classificar isso em uma lista de pacotes optdepends instalados.Veja
man expac
a lista completa de opções.1. Esse é um O maiúsculo, não um zero. Porque não podemos ter uma fonte que distingue entre os dois ...
fonte
Há um bom utilitário no repositório AUR (aur / pacdep).
O pacdep tem muitas opções - apenas um exemplo - encontre pacotes opcionais para "thunar-archive-plugin":
A saída acima significa que nenhum dos pacotes opcionais está instalado. Depois de instalar o "xarchiver", a saída se parece com
Encontrei (a primeira parte) esta resposta em
http://mywaytoarch.tumblr.com/post/34979742718/easily-list-package-dependencies
fonte
Isso não é exatamente eficiente, mas encontrará o que você deseja (em COLOR!):
fonte
||
, em vez de&&
depois dogrep
e, em seguida, entre parênteses ao redor do resto da linha?pacman -Qi xmms2 | sed -n '/^Optional/,$p' | sed '/^Required/q' | head -n -1 | cut -c19- | cut -d: -f1
Embora eu tenha percebido que a solução do @ DarkHeart realmente não funciona, isso me inspirou a fazer uma solução funcional. (sem cores, no entanto)
Estou usando o pacote-query , uma ferramenta semelhante ao invés do expac, sugerida pelo @jasonwryan, porque eu já o instalei (é uma dependência do yaourt). Deve ser trivial alterar isso para usar expac.
A listagem de todas as dependências opcionais é feita principalmente pela chamada para consulta de pacote. O primeiro loop for remove as explicações; portanto, apenas os nomes dos pacotes para as dependências opcionais permanecem; o segundo loop for remove as dependências já instaladas em sua primeira linha antes de imprimir os resultados na segunda.
fonte
Isso deve fazer o truque:
A primeira entrada para
comm
lista todas as dependências opcionais, a segunda entrada todos os pacotes instalados e seus atributos 'fornecer'. Ambas as listas são classificadas e contêm cada elemento apenas uma vez devido asort -u
. Em seguida, apenas as linhas são mostradas que estão contidas na primeira, mas não na segunda lista.(editado para incorporar a sugestão de @ Archemar)
fonte
Às vezes você tem que trabalhar para trás ... primeiro encontre todas as dependências não opcionais, depois faça referência cruzada com a lista completa e use o uniq. Isso irá gerar uma lista de dependências opcionais instaladas.
Encontre tudo instalado
Encontre todos os itens não opcionais:
As entradas exclusivas devem, portanto, ser opcionais:
Gerar lista de opções ausentes ausentes depende das descrições, não é bonito, mas funciona.
fonte
Eu tentei apenas no GNU sed, mas
funcionou (use sort / uniq como quiser).
fonte