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.
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
Le deuxième cycle de script pour chaque fichier * .list.broken et force la réinstallation du package.
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.
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
J'ai résolu ceci comme suit:
/var/lib/dpkg/info/Thunderbird-gnome-support.list
)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.