Forum général.cherche-logiciel glibc effacé par erreur: comment réparer ?

Posté par  .
Étiquettes : aucune
0
19
sept.
2007
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 ...
  • # Oups, mauvais forum ...

    Posté par  . É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  . É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
    ;-)
    • [^] # Re: le plus simplement du monde...

      Posté par  (site web personnel) . É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
  • # statique ? busybox ?

    Posté par  (site web personnel) . É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 ?

    "La première sécurité est la liberté"

    • [^] # Re: statique ? busybox ?

      Posté par  . É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 !
  • # ça se complique ...

    Posté par  . É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  . É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  . É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  . É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  . É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  (site web personnel) . É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.

            "La première sécurité est la liberté"

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

              Posté par  . É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  . É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  . É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 !!
  • # Commentaire supprimé

    Posté par  . Évalué à 2.

    Ce commentaire a été supprimé par l’équipe de modération.

Suivre le flux des commentaires

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