C'est un problème étrange et je ne trouve pas de solution directe.
J'ai couru Sudo apt-get update && Sudo apt-get upgrade -y
(Je ne l'ai jamais exécuté sur cette machine mais c'est le serveur Ubuntu 12.04 comme tous les autres).
Il passe par les mises à jour et passe par la mise à niveau, puis je reçois cette erreur
(Reading database ... 80%dpkg: unrecoverable fatal error, aborting:
files list file for package 'mysql-common' is missing final newline
E: Sub-process /usr/bin/dpkg returned an error code (2)
Maintenant, je reçois cette même erreur lorsque j'essaie d'exécuter une commande apt-get.
J'ai essayé:
apt-get clean
apt-get autoremove
apt-get install -f mysql-common
apt-get install --reinstall mysql-common
Et peut-être quelques autres auxquels je ne peux pas penser maintenant.
La plupart du temps, pas toujours, et je me souviens exactement sur quelles commandes cela se produit (j'ai piraté cela depuis un moment maintenant), cela se termine avec cette erreur. Je ne parviens toujours pas à mettre à jour.
Des idées?
Modifier
La réponse de Rehatcc m'a amené à vérifier les mysql-common.files par l'erreur files list file for package 'mysql-common' is missing final newline
Le fichier est juste du texte poubelle.
Est-ce comme un fichier modèle générique sur tous les systèmes? Puis-je simplement coller le texte d'un autre système?
Aller à:
cd /var/lib/dpkg/info
Type
ls -l mysql*
Si un fichier apparaît tel que "mysql-common.list" ou "mysql-common.md5sums" ou quoi que ce soit, procédez comme suit:
Sudo mv ./mysql-common.list ~/mysql-common.list
et si cela existe
Sudo mv ./mysql-common.md5sum ~/mysql-common.md5sum
Redémarrez le système. Ensuite, faites-nous savoir quel est votre statut par la suite (ne travaille pas ... travaille ... travaille semi ...)
Remarque: S'ils sont là dans ce répertoire, ouvrez-les et voyez s'il y a une ligne vide à la fin ou des caractères cachés etc. (cat ./mysql-common.md5sum
). Si vous ne pouvez pas dire s'il y a des caractères cachés dans ces fichiers qui les gâchent, faites-le (cela supprime toutes les lettres et les chiffres et les barres obliques qui se trouveraient dans ces fichiers):
cat ./mysql-common.list | egrep -v [[:alpha:]]
Tout ce qui apparaît après cela sauf /. ou/.. est votre problème.
J'ai récemment eu le même problème avec un autre package (linux-libc-dev).
Voici la solution qui a fonctionné pour moi (en s'appuyant en partie sur la réponse de RedHatcc):
Vérifiez que le fichier de liste n'est pas valide
cd /var/lib/dpkg/info
cat linux-libc-dev\:armhf.list` (insert your package name here!)
Un fichier invalide apparaîtra vide ou contiendra des caractères non alphanumériques.
Une liste de packages valide comprendra des chemins d'accès en texte brut comme celui-ci:
/.
/usr
/usr/include
/usr/include/sound
/usr/include/sound/asequencer.h
/usr/include/sound/asound.h
/usr/include/sound/sfnt_info.h
Supprimer la liste des packages invalides
Sudo rm linux-libc-dev\:armhf.list
(insérez le nom de votre package ici!)
Forcer APT pour réinstaller le package, recréer la liste des packages supprimés
Sudo apt-get install linux-libc-dev --reinstall
(insérez le nom de votre package ici!)
Vérifiez que le fichier de liste est valide
Une liste de packages valide comprendra des chemins d'accès en texte brut comme celui-ci:
/.
/usr
/usr/include
/usr/include/sound
/usr/include/sound/asequencer.h
/usr/include/sound/asound.h
/usr/include/sound/sfnt_info.h
Un fichier invalide apparaîtra vide ou contiendra des caractères non alphanumériques.