
Estou procurando pacotes que tenham as seguintes situações:
- Excluído, mas não eliminado
- 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 aptitude
tentativas, é 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.html
no meu sistema) um padrão de pesquisa que satisfizesse sua pergunta, mas não tenho certeza se é possível. ~action
pode levar você a meio caminho, mas não tenho certeza se conseguirá o status também.
Uma alternativa ao using aptitude
é usar dpkg-query
with 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-query
lista 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.