Retourner aux forums || Retourner au forum general.cherche-logiciel

general.cherche-logiciel : glibc effacé par erreur: comment réparer ?

Posté par Cédric Hammer (page perso, ) le 19 septembre 2007
0
Hello tout le monde,

Par une commande malencontreuse (rpm -e --nodeps glibc), l'un de mes collègues a effacé cette librairie sur un de nos serveurs (RHEL 3), librairie qui est utile pour de nombreux autres programmes ...

J'ai tenté de la réinstaller, mais rien n'y fait, on dirait que tout en dépend !! :

# ls
-bash: /bin/ls: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory


# rpm -ivh glibc-2.3.4
-bash: /bin/rpm: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory


# tar xvzf glibc-2.3.4.tar.gz
-bash: /bin/tar: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory


Quelqu'un a une idée de comment faire pour me sortir de ce pétrin ?
Merci d'avance ...

> Lire le message (21 commentaires, moyenne: 1,7).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

Oups, mauvais forum ...

Posté par Cédric Hammer (page perso, ) le 19/09/2007 à 14:06. (lien). Évalué à 1.

Hmmpf !
J'ai oublié de changer le forum ... comment je fais pour le mettre dans Linux.general ??

Dsl messieurs les modérateurs, c'est une erreur ... (encore :) )

le plus simplement du monde...

Posté par NeoX () le 19/09/2007 à 14:14. (lien). Évalué à 6.

libc etant VITALE
si elle est absente plus grand chose ne fonctionne, tu l'auras constaté.

une seule solution (ou peut-etre 2)

1°) booter sur un livecd
2°) monter la partition devant contenir les fichiers le la glibc
3°) decompresser les fichiers qui vont bien aux endroits qui vont bien.


une autre solution :
1°) demonter le disque dur
2°) le monter sur une machine qui fonctione
3°) monter la partition du disque qui doit contenir la glibc
4°) decompresser les fichiers qui vont bien aux bons endroits.


enfin,
virer l'admin qui a fait le
rpm -e --nodeps glibc

car il ne merite pas sa place
;-)

--
Apprendre par les autres, c'est bien.
Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux
  • [^]Re: le plus simplement du monde...

    Posté par jimee (page perso, ) le 19/09/2007 à 14:29. (lien). Évalué à 2.

    Si tu as le rpm, tu dois aussi pouvoir l'installer (toujours depuis le live cd, ou un autre système) avec l'option --root :
    Si tu as monté ton disque dans /target
    rpm --root /target -ivh /target/root/glibc-2.3.4.rpm

    --
    C'est la lutte finale
    Groupons-nous et demain...
    • [^]Re: le plus simplement du monde...

      Posté par jc (Jabber id, ) le 19/09/2007 à 15:01. (lien). Évalué à 1.

      Normalement les serveurs sont backupés. Tu peux également remonter une sauvegarde.

      • [^]Re: le plus simplement du monde...

        Posté par gnumdk (page perso, ) le 19/09/2007 à 23:27. (lien). Évalué à 1.

        Mwai, souvent, les données (utilisateurs, ldap, conf, ...) sont sauvegardées, pas le reste...

        • [^]Re: le plus simplement du monde...

          Posté par jc (Jabber id, ) le 20/09/2007 à 10:08. (lien). Évalué à 1.

          Apres installation et tuning de la machine, un backup full du systeme ne fait pas de mal (la preuve) et ca permet de remonter facilement la machine en cas de crash.

statique ? busybox ?

Posté par Nicolas Boulay () le 19/09/2007 à 16:02. (lien). Évalué à 3.

Il faut trouver les quelques binaires statique que tu peux avoir.

Le mieux serait d'avoir busybox quelques part. Peut-être que tu peux le mettre sur un disque visible depuis ce serveur ?

  • [^]Re: statique ? busybox ?

    Posté par Tonton Benoit (Jabber id, ) le 19/09/2007 à 18:34. (lien). Évalué à 2.

    Sous Gentoo Busybox est installé par défaut, je trouve que ça devrait être le cas sur toutes les distribs !

    Surtout que busybox fournis une version de rpm je crois, pratique pour une RHEL !

    • [^]Re: statique ? busybox ?

      Posté par GeneralZod () le 20/09/2007 à 07:45. (lien). Évalué à 2.

      Busybox est *déjà* empaqueté dans RHEL/CentOS ...

ça se complique ...

Posté par Cédric Hammer (page perso, ) le 20/09/2007 à 09:00. (lien). Évalué à 1.

Merci de votre aide, voici quelques réponses :

- concernant un liveCD, ça va être dur ... ici c'est super segmenté au niveau des exploitants, et les gens qui installent les serveurs ne sont pas les même que ceux qui les exploitent ! D'ailleurs, je n'ai pas accès au serveur de façon physique, vu qu'il est à environ 800km de moi :) (comprenez par là que je n'y accède que par ssh ...)

- pour mon collègue, l'expliquation est qu'il voulait faire un rpm -f ... :/

- pour les backups des serveurs, je vais voir, mais vu que ce sont des serveurs de dev, j'en doute ... (bon le fait que ce soit des serveurs de dev m'arrange aussi quelque part, vu que la conséquence du problème est moins grave)

- pour ce qui est de la busybox, je ne connais pas, vous pourriez m'en dire un peu plus ?

  • [^]Re: ça se complique ...

    Posté par Cédric Hammer (page perso, ) le 20/09/2007 à 09:05. (lien). Évalué à 1.

    Je pense à autre chose (peut-être très bête ...) : y'aurait pas moyen d'installer glibc à la main ?
    Si je "détar" sur mon pc (ou "dé-rpmise"), je devrais retrouver les bibliothèques non ? Donc si je les copie au bon endroit ça ne suffira pas ?

    • [^]Re: ça se complique ...

      Posté par _seb_ () le 20/09/2007 à 13:12. (lien). Évalué à 1.

      J'ai eu ce genre de problème également (un remplacement de la lib sans supression).

      Si tu peux copier le fichier ld-linux.so.2 sur le serveur, il y a de chance de réussite.

      1- copier ld-linux.so.2 dans /tmp
      2- ensuite


      LD_PRELOAD=/tmp/ld-linux.so.2:$LD_PRELOAD ls

      Si ca marche, une grosse épine du pied est retirée et avec un peu de chance

      LD_PRELOAD=/tmp/ld-linux.so.2:$LD_PRELOAD rpm -ivh glibcXXX.rpm

      • [^]Re: ça se complique ...

        Posté par Cédric Hammer (page perso, ) le 20/09/2007 à 14:07. (lien). Évalué à 1.

        Merci de l'aide, j'ai tenté, et voilà où j'en suis:

        -- Copie de ld-linux.so.2 dans /tmp


        # LD_PRELOAD=/tmp/ld-linux.so.2:$LD_PRELOAD ls
        -bash: /bin/ls: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory


        -- je tente en copiant dans /lib/

        ]# LD_PRELOAD=/tmp/ld-linux.so.2:$LD_PRELOAD ls
        -bash: /bin/ls: Permission denied


        -- je passe le fichier en 755 grâce à WinSCP encore connecté

        # LD_PRELOAD=/tmp/ld-linux.so.2:$LD_PRELOAD ls
        -bash: /bin/ls: Input/output error


        ça fait pareil avec rpm -iVH etc. ; du coup je sèche ... autre chose _seb_ ?

        • [^]Re: ça se complique ...

          Posté par _seb_ () le 20/09/2007 à 15:04. (lien). Évalué à 1.


          -- je passe le fichier en 755 grâce à WinSCP encore connecté


          Si tu te déconnectes, je pourrais plus rien pour toi.

          Ca devient compliqué.

          Une de possibilité (un peu babarre tout de même):

          Reprendre le package rpm glibc-2.3.4 et l'extraire (sur une autre machine) comme suit:


          mkdir rep_travail
          cd rep_travail
          rpm2cpio glibc-XXXX.rpm | cpio --extract --make-directories


          On a alors le contenu du fichier rpm et l'on peut installer à la mano les libs (à commencer par ld-linux.so.2, puis libc, libpthread, etc dans le répertoire /tmp). A chaque copie de fichier (en 777), on essaye la commande ls avec .

          LD_PRELOAD=/tmp/ld-linux.so.2:/tmp/libc-2.3.4.so ls

          Si ça marche, on réinstalle la glibc via rpm.

          Et si ça a vraiment marché, on clique sur le lien suivant: http://linuxfr.org/dons/
          Et on dit au collègue de signer le chèque.

        • [^]Re: ça se complique ...

          Posté par Nicolas Boulay () le 20/09/2007 à 15:06. (lien). Évalué à 2.

          d'ou l'interet d'avoir busybox. C'est un binaire qui propose tous les binaire unix en petit taille. en gros on fait "busybox ls" ou "busybox cat ...".

          http://www.busybox.net/about.html

          Cela permet d'éviter de se mordre la queue en voulant utiliser cp qui a besoin lui même de la libc.

          • [^]Re: ça se complique ...

            Posté par Cédric Hammer (page perso, ) le 21/09/2007 à 09:45. (lien). Évalué à 1.

            Hello,

            Après avoir vainement testé les solutions de copie des librairies à la main, je me suis mis en quête de la solution busybox ; j'ai donc installé ça sur un serveur équivalent, récupéré le binaire, et l'ai copié sur le serveur défaillant.

            Ca fonctionne donc pour pas mal de choses (je peux maintenant faire un ls, etc.).

            Ceci dit, je n'arrive pas à résoudre mon problème encore :
            - l'applet rpm n'existe pas (par défaut en tout cas) ; j'ai cherché un applet à part, mais rien de fructueux de ce côté là sur notre ami google ...

            - je ne sais pas comment compiler avec busybox:


            # busybox tar xvzf glibc-2.3.4.tar.gz
            # cd glibc-2.3.4
            # ./configure
            -bash: ./configure: /bin/sh: bad interpreter: Input/output error

            # busybox sh ./configure
            Segmentation fault

            # busybox ./configure
            configure: applet not found


            Donc still need help please ! Les pros de busybox sont toujours là ?

            • [^]Re: ça se complique ...

              Posté par Cédric Hammer (page perso, ) le 21/09/2007 à 09:55. (lien). Évalué à 1.

              mea culpa, la version installée par défaut sur l'autre serveur était la 0.60 ... et on en est à la 1.7.1, sur laquelle rpm est implémentée, je vais donc mettre celle là, et réessayer ; je vous tiens au courant :)

              • [^]Re: ça se complique ...

                Posté par Cédric Hammer (page perso, ) le 21/09/2007 à 15:01. (lien). Évalué à 2.

                A y'est ! Après moults essais, j'ai enfin réussi ! Pour info, busybox est la bonne méthode ...

                J'ai donc utilisé un deuxième serveur (identique) pour compiler la dernière version de busybox (1.7.1).

                J'ai eu quelques erreurs du à ma version de glibc, mais j'ai corrigé ça, lancé la création d'un build static malgré le warning (a priori, les buils static fait avec glibc sont "buggy" ; chez moi ça marche très bien avec ce qu'en fait en tout cas !), que j'ai donc viré.

                J'ai ensuite copié le binaire sur l'autre serveur, et relancé un busybox rpm -i glib-2.3.4-2.rpm et là miracle, tout remarche !

                Alléluia ! :D

                Merci à tous pour votre aide !!

                • [^]Re: ça se complique ...

                  Posté par Nicolas Boulay () le 23/09/2007 à 14:33. (lien). Évalué à 2.

                  ouha, j'aurais pas cru que l'on puisse se sortir dans un truc pareil...

Oh oh oh :)

Posté par L () le 21/09/2007 à 05:39. (lien). Évalué à 2.

Ton copain a lu le GLibC uninstall Howto :)

http://www.pafoo.net/uninstallglibc/uninstglibc.html

  • [^]Re: Oh oh oh :)

    Posté par Cédric Hammer (page perso, ) le 21/09/2007 à 07:45. (lien). Évalué à 1.

    huhu ! j'aime bien, je vais lui faire passer :)

Revenir en haut de page || Retourner aux forums || Retourner au forum general.cherche-logiciel