web-dev-qa-db-fra.com

Beaucoup de fichiers dans / var / lib / dpkg / info / corrupted; comment récupérer

Lorsque je lance Sudo apt-get (anything), j'obtiens invariablement cette erreur:

dpkg: unrecoverable fatal error, aborting:
 files list file for package 'Thunderbird-gnome-support' is missing final newline
E: Sub-process /usr/bin/dpkg returned an error code (2)

Après quelques recherches sur Google, j'apprends que c'est parce que /var/lib/dpkg/info/Thunderbird-gnome-support.list est corrompu. Je cat ce fichier, et il est très certainement corrompu - ce devrait être un fichier texte contenant une liste de chemins de fichiers absolus, mais plutôt un fichier binaire.

Maintenant, j'inspecte les autres fichiers du même répertoire et il semble que beaucoup d'entre eux soient corrompus de la même manière. Cela indique que quelque chose s'est mal passé dans mon système de fichiers, ce qui a provoqué la corruption de nombreux fichiers. Malheureusement, cela a eu une incidence sur les fichiers système.

Comment puis-je récupérer de cela?


Plus de détails:

Juste avant cela, j'ai installé une mise à jour de routine lorsque Ubuntu me l'a demandé. C'était un nouveau noyau Linux et quelques en-têtes de fichiers système.

Après avoir redémarré, voici mes spécifications:

Spécifications du système d'exploitation:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 13.10
Release:    13.10
Codename:   saucy
$ uname -a
Linux brendang-linux 3.11.0-24-generic #41-Ubuntu SMP Mon Jun 9 20:36:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Immédiatement après le premier redémarrage, l’ensemble du système de fichiers semblait être monté en lecture seule (ce qui n’était pas le cas auparavant). Par la suite, j'ai dû redémarrer plusieurs fois avant que le système fonctionne. J'ai fait touch /forcefsck entre eux pour m'assurer que fsck s'exécute et je ne suis pas sûr de ce qu'il reste à faire.

4
bguiz

Dans mon cas, beaucoup de fichiers * .list ont été corrompus. Si tu fais

file /var/lib/dpkg/info/<package_name>.list

vous devriez normalement avoir:

/var/lib/dpkg/info/<package_name>.list: ASCII text

mais si vos fichiers de liste sont corrompus, vous obtiendrez:

/var/lib/dpkg/info/<package_name>.list: data

J'ai fait deux scripts pour résoudre ce problème.

Le premier script vérifie cela et renomme chaque fichier .list corrompu en * .list.broken

move_broken_list_files.sh

Le deuxième cycle de script pour chaque fichier * .list.broken et force la réinstallation du package.

install_missing_list.sh

parfois, l'installation échoue à cause de problèmes de déclencheurs:

fgets gave an empty string from '/var/lib/dpkg/info/libnih1:AMD64.triggers'

dans ce cas, vous devez déplacer/renommer ce fichier comme suit:

mv /var/lib/dpkg/info/libnih1:AMD64.triggers /var/lib/dpkg/info/libnih1:AMD64.triggers.broken

J'espère que cela aidera quelqu'un confronté au même gâchis.

1
Zen

Sauvegardez votre liste endommagée (vous pouvez déplacer tous les fichiers .list)

mkdir /tmp/damaged && mv /var/lib/dpkg/info/*.list /tmp/damaged

Ensuite, vous pouvez installer votre nouveau paquet

apt install Thunderbird-gnome-support
0
user2459835

J'ai résolu ceci comme suit:

  • supprimer le fichier incriminé (dans le cas OP /var/lib/dpkg/info/Thunderbird-gnome-support.list)
  • réinstallez le paquet incriminé en utilisant apt-get install --reinstall Thunderbird-gnome-support

Cette recréé la liste des fichiers supprimés pour moi aussi.

Bien sûr, cela peut s'avérer fastidieux si de nombreux fichiers sont corrompus, mais dans mon cas, il ne s'agissait que d'un seul fichier et la solution était relativement simple dans ce cas.

0
Stefan Winkler