Restaurer votre base apt / dpkg

Houlala bad Karma

Quand je fais un apt-get update apt me reponds :

Reading Package Lists... Error !
Unable to parse package file /var/lib/dpkg/status (1)
The package lists or status file could not be parsed or opened.

Malheureusement, le message est clair non ? Le fichier status n’est plus lisible, j’ai plus de base dkpg et j’ai donc perdu la liste des paquets installés et leur version.

Bon je fais tout de meme les verifications d’usage : df -h. Histoire de voir si un fs est a 100 %, rien tout est normal.

status-old

Il y a normalement un fichier /var/lib/dpkg/status-old qui contient l’etat de ton systeme avant la derniere mise a jour. Je fonce dessus et j’en fais immédiatement une copie dans un coin avant de me lancer dans le bricolage.

Si vraiment le fichier status a degagé, il est possible de faire une copie de status-old en status puis reinstaller les paquets que tu avais installes en dernier pour mettre la base plus ou moins à jour. C’est pas garanti a 100 % mais ca devrait tout de meme faire l’affaire. Y’a aussi plein de fichier status.yesterday.0,1.gz,2.gz,etc…. ils correspondent aux fichiers status-old des jours précédent. La encore il est possible de les utiliser sachant qu’a chaque fois on perd plusieur jour de d’upgrade.

De toute facons, j’ai pas le choix, c’est ca ou une reinstallation from scratch.

Hack

Bon si c’est vraimment impossible de retrouver un version valable de /var/lib/dpkg/status il est toujours possible de retrouver la liste des paquets installés et de les installer de nouveau

# ls /usr/share/doc | \ grep -v [A-Z] | \ grep -v '^texmf$' | \ grep -v '^debian$' | \ awk 'print $1 " install"' | \ dpkg --set-selections

A la suite de cela lancer la ré-installation avec dselect : # dselect --expert

Choisir l’option d’installation. Attention chez moi sur mom portable cela représente plus de 1G0 de paquet à télécharger.