Para re-crear un /var/lib/dpkg/status tengo esto:

#!/usr/bin/awk -f
FNR == 1 { argind++ }
argind == 1 { list[$0] = 1 }
argind == 2 {
  if ($0 ~ "^Package:") {
    print $0
    if ($2 in list) {
      installed = 1
      print "Status: install ok installed"
    }
    else {
      installed = 0
      print "Status: purge ok not-installed"
      print ""
    }
  }
  else {
    if (installed) {
      if ($0 !~ "^Filename:" && $0 !~ "^Size:" && $0 !~ "^MD5sum:") {
        print $0
      }
    }
  }
}

Se usa así:

lista2status lista /var/lib/dpkg/available

donde "lista" es la lista de paquetes instalados, que puedes obtener
de forma semi-chapucera así:

#!/bin/sh
set -e
cd /var/lib/dpkg/info
ls *.list | sed -e 's/\.list//' | sort

Puede que tengas que cambiar alguna cosa, porque hace mucho que no lo pruebo.
Este script te lo doy sin ninguna garantía etc. etc.

Si consigues algo te recomiendo que reinstales todo para completar
el fichero status con la información sobre los conffiles, cosa
que el script no hace:

apt-get --reinstall install `cat lista`

[ Por cierto, no hace falta preguntar las cosas tres veces... ]

Responder a