Encontrando pacotes em vários estados via aptitude

2

Estou procurando pacotes que tenham as seguintes situações:

  1. Excluído, mas não eliminado
  2. Instalado, mas não configurado

Eu tentei coisas como

aptitude search '~id'

e

aptitude search "~iuA"

mas não funcionou.

Alguma idéia?

Atualizar - um dos comandos não funciona -

[$] dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | grep ^i[^i]

zsh: no matches found: ^i[^i]

alguma idéia se é culpa do zsh ou algo mais?

    
por shirish 25.09.2016 / 21:58

2 respostas

2

Para as suas aptitude tentativas, é importante observar que ~ não significa "procure os seguintes sinalizadores no status de um pacote". ~i é a abreviação de ~installed e, em seguida, o d é interpretado como um literal d , ou seja, pacotes cujos nomes contêm a letra d . Analisei a documentação de aptitude ( /usr/share/doc/aptitude/html/en/index.html no meu sistema) para um padrão de pesquisa que satisfaria sua pergunta, mas não tenho certeza se é possível. ~action pode chegar até lá no meio do caminho, mas também não tenho certeza se estou conseguindo o status.

Uma alternativa ao uso de aptitude é usar dpkg-query com grep .

dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | grep ^r

Isso irá procurar pacotes que estão no estado removido , mas não eliminados.

dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | grep ^i[^i]

Isto irá procurar pacotes marcados como instalados , mas não estão completamente instalados. Se você não quiser incluir pacotes pendentes em gatilhos, use ^i[ncHUF] .

Para obter apenas a segunda coluna de saída (o nome do pacote), você pode usar sed :

dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | sed -n 's/^r.R\?\s*//p'

para encontrar pacotes removidos e

dpkg-query -Wf '${db:Status-Abbrev} ${Package}\n' | sed -n 's/^i[^i]R\?\s*//p'

para encontrar pacotes a serem instalados, mas não completamente instalados.

Para expandir isso um pouco, os pacotes Debian têm duas partes para o seu 'status':

  • A ação destina-se a ser executada em um pacote. Isto pode ser para instalar um pacote, para remover um pacote, para reter um pacote, ou para eliminar um pacote pacakge.

  • O status do pacote , que descreve o estado atual do pacote no seu sistema.

A chamada dpkg-query acima lista a ação e o status de um pacote, um caractere cada, procedendo ao nome do pacote no início de cada linha.

Para encontrar pacotes que são removidos, mas não eliminados, apenas procuramos por pacotes com a ação 'remover': grep ^r . Para encontrar pacotes instalados ou destinados a serem instalados, mas ainda não configurados, procuramos por pacotes cuja ação é install , mas cujo status é diferente de > instalado : grep ^i[^i] .

    
por 25.09.2016 / 22:50
1

Excluído, mas não eliminado, é ~c ( ?config-files ).

Instalado, mas não configurado, não é rastreado pelo apt, somente pelo dpkg. Um pacote tem dois estados: real e desejado. Apt só se preocupa com o estado desejado. O estado desejado de um pacote instalado mas não configurado está instalado.

Veja a resposta de Dylan Frese para as consultas do dpkg.

    
por 26.09.2016 / 01:25