Forum Linux.debian/ubuntu Problème E: Erreur de lecture - read (21 est un répertoire)

Posté par  .
Étiquettes :
0
23
août
2010
Bonjour à tous,
Après avoir fait un aptitude pour un paquet j'ai eu une succession d'erreurs car je n'avais plus d'espace dispo, j'ai agrandi ma partition et voilà les messages que j'obtiens lors de:

apt-get install
apt-get upgrade
aptitude update
....


Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Erreur !
E: Erreur de lecture - read (21 est un répertoire)
E: Erreur de lecture - read (21 est un répertoire)
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Erreur !
Lecture de l'information d'état étendu
Initialisation de l'état des paquets... Erreur !
E: Erreur de lecture - read (21 est un répertoire)
E: Erreur de lecture - read (21 est un répertoire)



Merci d'avance pour votre aide. :-)

Pour info:

ls -l /etc/apt/
total 30
drwxr-xr-x 2 root root 4096 aoû 4 11:05 apt.conf.d
-rw------- 1 root root 0 jui 26 09:58 secring.gpg
-rw-r--r-- 1 root root 99 aoû 13 16:26 sources.list
drwxr-xr-x 2 root root 4096 jui 28 14:26 sources.list.d
-rw------- 1 root root 1200 jui 26 09:58 trustdb.gpg
-rw------- 1 root root 7012 jui 28 14:26 trusted.gpg
-rw------- 1 root root 5801 jui 26 09:58 trusted.gpg~

cat /etc/apt/sources.list
deb http://ftp.fr.debian.org/debian/ lenny main
deb http://security.debian.org/ lenny/updates main

ps: je n'ai rien touché dans le dossier /etc/apt/
ps2: je suis sous DEBIAN LIVE (clef usb) mais cela ne change rien :-)


Plus d'infos avec un find / -name 21

/live/cow/var/lib/scrollkeeper/TOC/21
/live/cow/var/lib/scrollkeeper/index/21
/var/lib/scrollkeeper/TOC/21
/var/lib/scrollkeeper/index/21
/proc/irq/21
/proc/3851/task/3851/fd/21
/proc/3851/task/3851/fdinfo/21
/proc/3851/fd/21
/proc/3851/fdinfo/21
/proc/3940/task/3940/fd/21
/proc/3940/task/3940/fdinfo/21
/proc/3940/fd/21
/proc/3940/fdinfo/21
/proc/4005/task/4005/fd/21
/proc/4005/task/4005/fdinfo/21
/proc/4005/fd/21
/proc/4005/fdinfo/21
/proc/4150/task/4150/fd/21
/proc/4150/task/4150/fdinfo/21
/proc/4150/fd/21
/proc/4150/fdinfo/21
/proc/4152/task/4152/fd/21
/proc/4152/task/4152/fdinfo/21
/proc/4152/fd/21
/proc/4152/fdinfo/21
/proc/4153/task/4153/fd/21
/proc/4153/task/4153/fdinfo/21
/proc/4153/task/4212/fd/21
/proc/4153/task/4212/fdinfo/21
/proc/4153/fd/21
/proc/4153/fdinfo/21
/proc/4229/task/4229/fd/21
/proc/4229/task/4229/fdinfo/21
/proc/4229/fd/21
/proc/4229/fdinfo/21
/proc/4231/task/4231/fd/21
/proc/4231/task/4231/fdinfo/21
/proc/4231/fd/21
/proc/4231/fdinfo/21
/proc/4384/task/4384/fd/21
/proc/4384/task/4384/fdinfo/21
/proc/4384/task/4388/fd/21
/proc/4384/task/4388/fdinfo/21
/proc/4384/fd/21
/proc/4384/fdinfo/21

Ensuite un strace :
strace -e trace=file -o /tmp/sortie apt-get update

execve("/usr/bin/apt-get", ["apt-get", "upgrade"], [/* 21 vars */]) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libapt-pkg-libc6.7-6.so.4.6", O_RDONLY) = 3
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libutil.so.1", O_RDONLY) = 3
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/libstdc++.so.6", O_RDONLY) = 3
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libm.so.6", O_RDONLY) = 3
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/libgcc_s.so.1", O_RDONLY) = 3
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i686/cmov/libc.so.6", O_RDONLY) = 3
open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 4
stat64("/var/lib/apt/.", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat64("/etc/apt/apt.conf.d/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/etc/apt/apt.conf.d/", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 4
stat64("/etc/apt/apt.conf.d/01autoremove", {st_mode=S_IFREG|0644, st_size=92, ...}) = 0
stat64("/etc/apt/apt.conf.d/70debconf", {st_mode=S_IFREG|0644, st_size=182, ...}) = 0
open("/etc/apt/apt.conf.d/01autoremove", O_RDONLY|O_LARGEFILE) = 4
open("/etc/apt/apt.conf.d/70debconf", O_RDONLY|O_LARGEFILE) = 4
stat64("/etc/apt/apt.conf", 0xbfffc5c4) = -1 ENOENT (No such file or directory)
stat64("/var/lib/dpkg/status", {st_mode=S_IFREG|0644, st_size=820487, ...}) = 0
stat64("/usr/bin/dpkg", {st_mode=S_IFREG|0755, st_size=365324, ...}) = 0
stat64("/etc/debian_version", {st_mode=S_IFREG|0644, st_size=6, ...}) = 0
open("/var/lib/dpkg/lock", O_RDWR|O_CREAT|O_NOFOLLOW, 0640) = 4
open("/var/lib/dpkg/updates/", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 5
stat64("/etc/apt/sources.list", {st_mode=S_IFREG|0644, st_size=99, ...}) = 0
open("/etc/apt/sources.list", O_RDONLY|O_LARGEFILE) = 5
stat64("/etc/apt/sources.list.d/", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/etc/apt/sources.list.d/", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 5
stat64("/etc/apt/sources.list.d/google-chrome.list", {st_mode=S_IFREG|0644, st_size=169, ...}) = 0
open("/etc/apt/sources.list.d/google-chrome.list", O_RDONLY|O_LARGEFILE) = 5
stat64("/var/lib/apt/lists/ftp.fr.debian.org_debian_dists_lenny_Release.gpg", {st_mode=S_IFREG|0644, st_size=1033, ...}) = 0
stat64("/var/lib/apt/lists/security.debian.org_dists_lenny_updates_Release.gpg", {st_mode=S_IFREG|0644, st_size=835, ...}) = 0
stat64("/var/lib/apt/lists/dl.google.com_linux_deb_dists_stable_Release.gpg", {st_mode=S_IFREG|0644, st_size=191, ...}) = 0
access("/var/cache/apt/", W_OK) = 0
open("/usr/share/locale/locale.alias", O_RDONLY) = 5
open("/usr/share/locale/fr_FR@euro/LC_MESSAGES/libapt-pkg4.6.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/fr@euro/LC_MESSAGES/libapt-pkg4.6.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/fr_FR/LC_MESSAGES/libapt-pkg4.6.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/fr/LC_MESSAGES/libapt-pkg4.6.mo", O_RDONLY) = 5
open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 5
open("/usr/lib/gconv/ISO8859-15.so", O_RDONLY) = 5
stat64("/var/cache/apt/pkgcache.bin", {st_mode=S_IFREG|0644, st_size=10082838, ...}) = 0
open("/var/cache/apt/pkgcache.bin", O_RDONLY) = 5
stat64("/var/lib/apt/lists/ftp.fr.debian.org_debian_dists_lenny_main_binary-i386_Packages", {st_mode=S_IFREG|0644, st_size=24334812, ...}) = 0
stat64("/var/lib/apt/lists/ftp.fr.debian.org_debian_dists_lenny_main_binary-i386_Packages", {st_mode=S_IFREG|0644, st_size=24334812, ...}) = 0
stat64("/var/lib/apt/lists/ftp.fr.debian.org_debian_dists_lenny_main_i18n_Translation-fr", {st_mode=S_IFREG|0644, st_size=2695118, ...}) = 0
stat64("/var/lib/apt/lists/ftp.fr.debian.org_debian_dists_lenny_main_i18n_Translation-fr", {st_mode=S_IFREG|0644, st_size=2695118, ...}) = 0
stat64("/var/lib/apt/lists/ftp.fr.debian.org_debian_dists_lenny_main_i18n_Translation-fr", {st_mode=S_IFREG|0644, st_size=2695118, ...}) = 0
stat64("/var/lib/apt/lists/security.debian.org_dists_lenny_updates_main_binary-i386_Packages", {st_mode=S_IFREG|0644, st_size=1972542, ...}) = 0
stat64("/var/lib/apt/lists/security.debian.org_dists_lenny_updates_main_binary-i386_Packages", {st_mode=S_IFREG|0644, st_size=1972542, ...}) = 0
stat64("/var/lib/apt/lists/security.debian.org_dists_lenny_updates_main_i18n_Translation-fr", 0xbfffc324) = -1 ENOENT (No such file or directory)
stat64("/var/lib/apt/lists/dl.google.com_linux_deb_dists_stable_main_binary-i386_Packages", {st_mode=S_IFREG|0644, st_size=3270, ...}) = 0
stat64("/var/lib/apt/lists/dl.google.com_linux_deb_dists_stable_main_binary-i386_Packages", {st_mode=S_IFREG|0644, st_size=3270, ...}) = 0
stat64("/var/lib/apt/lists/dl.google.com_linux_deb_dists_stable_main_i18n_Translation-fr", 0xbfffc324) = -1 ENOENT (No such file or directory)
stat64("/var/lib/dpkg/status", {st_mode=S_IFREG|0644, st_size=820487, ...}) = 0
stat64("/etc/apt/preferences", 0xbfffbc74) = -1 ENOENT (No such file or directory)
stat64("/var/lib/apt/extended_states", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
open("/var/lib/apt/extended_states", O_RDONLY) = 5
open("/usr/share/locale/fr_FR@euro/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/fr@euro/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/fr_FR/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/fr/LC_MESSAGES/libc.mo", O_RDONLY) = 6
open("/usr/lib/gconv/ISO8859-1.so", O_RDONLY) = 6

Bon je n'arrive pas trop à déchiffrer le strace.

J'espère que quelqu'un pourra m'aider parce que je commence à avoir marre des dpkg -i surtout quand il y a des dépendances -_-

Merci d'avance
  • # melanger les outils c'est pas bon

    Posté par  . Évalué à 3.

    aptitude ou apt mais pas les deux dans une succession de commande

    soit
    aptitude update
    aptitude upgrade


    soit
    apt-get update
    apt-get upgrade



    il me semble que l'un ou l'autre dispose de l'option --fix pour reparer quand y a eu un echec en cours de route
  • # fichier ou dossier absent

    Posté par  . Évalué à 2.

    d'apres ton strace
    access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
    access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)


    il semblerait qu'il lui manque deux fichiers
    /etc/ld.so.nohwcap
    /etc/ld.so.preload
    • [^] # Re: fichier ou dossier absent

      Posté par  . Évalué à 1.

      Merci pour tes réponses.
      J'ai une machine Debian virtuelle et ces 2 fichiers n'existent pas que ce soit dans /etc ou l'ensemble du système ... :/
      • [^] # Re: fichier ou dossier absent

        Posté par  . Évalué à 3.

        en effet cela ne vient pas de là
        puisque j'ai le meme comportement (avec strace) sur ma machine qui fonctionne

        j'ai aussi les NOENT sur ces fichiers
        de meme que sur les locales
  • # Faire le ménage

    Posté par  . Évalué à 1.

    Salut,

    S'il y a eu un plantage lors d'une mise à jour précédente en raison du manque d'espace, il peut il y avoir des fichiers corrompus.

    Essaie d'effacer tout le contenu de /var/lib/apt/lists/ (si tu as peur, déplace ce contenu ailleurs, mais normalement il n'y a pas de problème). Lors de l'update suivant, comme il n'existera aucun fichier, tout sera téléchargé depuis les dépôts déclarés (et pas seulement les différences).

    A+
    JJD
    • [^] # Re: Faire le ménage

      Posté par  . Évalué à 1.

      Merci mais ça n'a rien changé.
      Heureusement que j'ai sauvé avant parce que lors de l'update il me manquait le dossier /var/lib/apt/lists/partial
      Ensuite effectivement tout a été recréé mais toujours cette satané erreur 21 :/
      • [^] # Re: Faire le ménage

        Posté par  . Évalué à 1.

        Et bien apparemment, c'est autre chose.

        Tes messages d'erreur indiquent :
        Lecture des informations d'état... Erreur !

        Essaie donc de supprimer (déplacer, renommer) le fichier /var/lib/dpkg/status et de le remplacer par /var/lib/dpkg/status-old (ce sont des fichiers texte : essaie de regarder leur contenu et la date de modification). Si ça ne donne rien, essaie avec un fichier vide.
        • [^] # Re: Faire le ménage

          Posté par  (site web personnel) . Évalué à 2.

          La base status est une bonne piste ( cf mon post rédigé en même temps plus loin ) par contre j'éviterai le fichier vide vu que c'est censé décrire le status des paquets installé sauf erreur de ma part...

          status = etat E actuel ( si corrompu ben pas bien ! )
          staus.old = E - 1
          Partir du .old et refaire les niveaux vis à vis de l'état du systeme actuel...
          Prendre le /var/log/dpkg.log et voir ce qui a déjà été upgradé / installe au moment du blocage, et metre à niveau avec un apt-get install --reinstall à mon avis....
          Puis poursuivre la mise a jour du système...

          Fuse : j'en Use et Abuse !

          • [^] # Re: Faire le ménage

            Posté par  . Évalué à 1.

            Effectivement, il ne faut pas vider le fichier status, mais récupérer le fichier status-old.
            Au besoin, on peut également trouver des sauvegardes dans /var/backups/dpkg.status.*
    • [^] # Re: Faire le ménage

      Posté par  . Évalué à 1.

      Merci mais ça n'a rien changé.
      Heureusement que j'ai sauvé avant parce que lors de l'update il me manquait le dossier /var/lib/apt/lists/partial
      Ensuite effectivement tout a été recréé mais toujours cette satané erreur 21 :/
  • # Statut des paquets / Base corrompue ?

    Posté par  (site web personnel) . Évalué à 4.

    Hello,

    Vu que tu as un upgrade qui a foiré en cours de route moi je commencerai par me soucier de l'état du système en terme de paquets, d'états......

    $>apt-get check
    Ca mange pas de pain....

    $> dpkg -l | egrep -v '^ii|^rc'
    Ca devrait te donner une idée de ce qui est en état incorrecte....

    Command qui te sera utilise pour une reinstalle :
    $>apt-get install --reinstall [paquet_que_j'ai_explose]

    Il se peux si ton disk full était sur /var que tu ai corrompu ta base dpkg des status qui se trouve dans /var/lib/dpkg/ !
    J'y chercherais dans le fichiers status ton fameux 21...
    Il fait quelle taille par rapport au .old ? quelle diff ?

    Fuse : j'en Use et Abuse !

    • [^] # Re: Statut des paquets / Base corrompue ?

      Posté par  . Évalué à 1.

      Re,

      apt-get check renvoie la même erreur 21.

      dpkg -l | egrep -v '^ii | ^rc' me renvoie:


      Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
      | État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-installé/W=attend-traitement-déclenchements
      |/ Err?=(aucune)/H=à garder/besoin Réinstallation/X=les deux (État,Err: majuscule=mauvais)
      ||/ Nom Version Description
      +++-====================================-==========================-============================================
      ri bind9-host 1:9.6.ESV.R1+dfsg-0+lenny2 Version of 'host' bundled with BIND 9.X
      rF deskbar-applet 2.22.3.1-1 universal search and navigation bar for GNOM
      rc gnome-nettool 2.22.0-1 network information tool for GNOME
      iU libsvn1 1.5.1dfsg1-4 Shared libraries used by Subversion
      iU skype 2.1.0.81-1 Skype
      iU subversion 1.5.1dfsg1-4 Advanced version control system


      Apparemment il fait la même taille que le old.
      J'ai cherché le 21 dans le fichier status, j'ai seulement trouvé
      /usr/share/doc/libdjvulibre21/

      J'ai tout mv autre part et cela ne solutionne pas mon problème.
      • [^] # Re: Statut des paquets / Base corrompue ?

        Posté par  (site web personnel) . Évalué à 1.

        21 n'est pas le nom du fichier ou du répertoire, mais le numéro d'erreur (EISDIR).
        • [^] # Re: Statut des paquets / Base corrompue ?

          Posté par  . Évalué à 3.

          Problème résolu.
          En fait /var/lib/apt/extended_states était un répertoire, il devrait être un fichier.
          Le fichier existait bien mais sous la forme:
          /var/lib/apt/extended_states.tmp

          Ainsi un
          # mv /var/lib/apt/extended_states /var/lib/apt/extended_states.dir
          # mv /var/lib/apt/extended_states.tmp /var/lib/apt/extended_states

          M'a permis de résoudre tout ça.

          Merci pour votre aide.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.