Encontrar pacotes em vários estados via aptitude

Encontrar pacotes em vários estados via aptitude

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 nenhum dos dois funcionou.

Alguma ideia?

Atualização - 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 a culpa é do zsh ou algo mais?

Responder1

Para suas aptitudetentativas, é importante observar que ~isso não significa 'procurar os seguintes sinalizadores no status de um pacote'. ~ié uma abreviação de ~installed, e então odé interpretado como um literald, ou seja, pacotes cujos nomes contêm a letrad. Procurei na documentação aptitude( /usr/share/doc/aptitude/html/en/index.htmlno meu sistema) um padrão de pesquisa que satisfizesse sua pergunta, mas não tenho certeza se é possível. ~actionpode levar você a meio caminho, mas não tenho certeza se conseguirá o status também.


Uma alternativa ao using aptitudeé usar dpkg-querywith grep.

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

Isto irá procurar por pacotes que estão noremovidoestado, mas não expurgado.

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

Isto irá procurar por pacotes que estão marcados para sereminstalado, mas não estão completamente instalados. Se você não quiser incluir pacotes pendentes nos gatilhos, você pode usar ^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 um pouco isso, os pacotes Debian têm duas partes em seu ‘status’:

  • OAçãodestinado a ser executado em um pacote. Isto pode serinstalarum pacote, pararemoverum pacote, parasegurarum pacote ou parapurgaum pacote.

  • Ostatus do pacote, que descreve o estado real do pacote em seu sistema.

A invocação acima dpkg-querylista a ação e o status de um pacote, com um caractere cada, precedendo o nome do pacote no início de cada linha.

Para encontrar pacotes que foram removidos, mas não eliminados, basta procurar por pacotes com a ação 'remove': grep ^r. Para encontrar pacotes que estão instalados ou que pretendem ser instalados, mas ainda não configurados, procuramos por pacotes cujosAçãoéinstalar, mas cujo status é algo diferente deinstalado: grep ^i[^i].

Responder2

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

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

VerA resposta de Dylan Fresepara as consultas do dpkg.

informação relacionada