web-dev-qa-db-fra.com

Impossible d'exécuter une commande apt-get

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?

2
Dan

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.

5
RedHatcc

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.

1
GG Crew