Encontrar paquetes en varios estados a través de aptitude

Encontrar paquetes en varios estados a través de aptitude

Estoy buscando paquetes que tengan las siguientes situaciones:

  1. Eliminado pero no purgado
  2. Instalado pero no configurado

Probé cosas como

aptitude search '~id'

y

aptitude search "~iuA"

pero ninguno funcionó.

¿Algunas ideas?

Actualización: uno de los comandos no funciona.

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

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

¿Alguna idea si la culpa es de zsh o de algo más?

Respuesta1

Para sus aptitudeintentos, es importante tener en cuenta que eso ~no significa "buscar las siguientes marcas en el estado de un paquete". ~ies una abreviatura de ~installed, y luego eldse interpreta como literald, es decir, paquetes cuyos nombres contienen la letrad. Busqué en la documentación aptitude( /usr/share/doc/aptitude/html/en/index.htmlen mi sistema) un patrón de búsqueda que satisficiera su pregunta, pero no estoy seguro de que sea posible. ~actionPodría llevarte a la mitad del camino, pero no estoy seguro de obtener el estado también.


Una alternativa al uso aptitudees utilizar dpkg-querycon grep.

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

Esto buscará paquetes que estén en elremotoestado, pero no purgado.

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

Esto buscará paquetes que estén marcados para serinstalado, pero no están completamente instalados. Si no desea incluir paquetes pendientes de activadores, puede utilizarlos ^i[ncHUF]en su lugar.


Para obtener solo la segunda columna de salida (el nombre del paquete), puede usar sed:

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

para encontrar paquetes eliminados, y

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

para encontrar paquetes que se instalarán pero que no se instalarán por completo.


Para ampliar un poco esto, los paquetes de Debian tienen dos partes en su 'estado':

  • Elaccióndestinado a ser realizado en un paquete. Esto puede ser parainstalarun paquete, aeliminarun paquete, asostenerun paquete, o apurgaun paquete.

  • Elestado del paquete, que describe el estado real del paquete en su sistema.

La invocación anterior dpkg-queryenumera la acción y el estado de un paquete, un carácter cada uno, antes del nombre del paquete al principio de cada línea.

Para encontrar paquetes que se eliminan pero no se eliminan, simplemente buscamos paquetes con la acción 'eliminar': grep ^r. Para encontrar paquetes que están instalados, o que se pretende instalar, pero que aún no están configurados, buscamos paquetes cuyosacciónesinstalar, pero cuyo estatus es diferente alinstalado: grep ^i[^i].

Respuesta2

Eliminado pero no purgado es ~c( ?config-files).

Instalado pero no configurado no es rastreado por apt, solo por dpkg. Un paquete tiene dos estados: real y deseado. Apt sólo se preocupa por el estado deseado. El estado deseado de un paquete que está instalado pero no configurado es instalado.

VerLa respuesta de Dylan Fresepara las consultas de dpkg.

información relacionada