¿Dónde almacena Debian la lista de paquetes instalados?

¿Dónde almacena Debian la lista de paquetes instalados?

Necesito encontrar una lista de los paquetes que se instalaron en un servidor Debian (Armbian) antes de que muriera. Como está desconectado, no puedo usar aptni dpkg(ni ningún otro comando). necesito saberqué archivo(s)contienen la lista (incluso si son binarios). Intenté buscar, pero todo solo dice que ejecute los comandos anteriores, lo cual no es una opción.

Respuesta1

¿Cómo aproximar `dpkg --get-selections` a partir de una copia de seguridad de/etc y/var?aborda su preocupación subyacente.

La lista de paquetes instalados se almacena en /var/lib/dpkg/status. Busque Status: install ok installedlíneas; esto indica que el paquete está instalado correctamente.

La siguiente invocación de AWK extraerá los nombres de los paquetes instalados de un statusarchivo:

awk '/^Package:/ { package = $2 }
     /^Status: install ok installed/ { print package }' /path/to/status

Si el sistema admitía varias arquitecturas, también deberá realizar un seguimiento de ello:

awk '/^Package:/ { p = $2; i = 0 }
     /^Status: install ok installed/ { i = 1 }
     i && /^Architecture: all/ { print p; next }
     i && /^Architecture/ { printf "%s:%s\n", p, $2 }' /path/to/status

Otro archivo interesante es /var/lib/apt/extended_statesel que registra el indicador de “instalación automática” para los paquetes instalados. Puedes restaurar las banderas ejecutando algo como

awk '/^Package:/ { p = $2 }
     /^Architecture/ { a = $2 }
     /^Auto-Installed: 1/ { printf "%s:%s\n", p, a }' /path/to/extended_states |
xargs sudo apt-mark auto

Puede combinar ambos archivos para enumerar los paquetes que se instalaron manualmente y confiar en la administración de dependencias para instalar los paquetes instalados automáticamente (aunque esto no necesariamente dará como resultado que se instale el mismo conjunto de paquetes):

awk 'FNR == NR && /^Package:/ { p = $2 }
     /^Status: install ok installed/ { i = 1 }
     FNR == NR && i && /^Architecture: all/ { ps[p] = 1; next }
     FNR == NR && i && /^Architecture/ { ps[p ":" $2] = 1}
     FNR != NR && /^Package:/ { p = $2 }
     FNR != NR && /^Architecture:/ { a = $2 }
     /^Auto-Installed: 1/ { delete ps[p ":" a] }
     END { for (p in ps) print p }' /path/to/status /path/to/extended_states

Consulte la sección “ARCHIVOS” enman dpkg:

/var/lib/dpkg/status
Estados de los paquetes disponibles. Este archivo contiene información sobre si un paquete está marcado para eliminarse o no, si está instalado o no, etc.

información relacionada