GNU/Linux >> Tutoriels Linux >  >> Linux

CentOS 64 bits mauvais interpréteur ELF

En général, lorsque vous obtenez une erreur comme celle-ci, faites simplement

yum provides ld-linux.so.2

alors vous verrez quelque chose comme :

glibc-2.20-5.fc21.i686 : The GNU libc libraries
Repo        : fedora
Matched from:
Provides    : ld-linux.so.2

et ensuite vous exécutez simplement ce qui suit comme l'a écrit BRPocock (au cas où vous vous demanderiez quelle était la logique...) :

yum install glibc.i686

Essayez

$ yum provides ld-linux.so.2
$ yum update
$ yum install glibc.i686 libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6

J'espère que ça s'éclaircira.


Vous êtes sur un système 64 bits et la prise en charge de la bibliothèque 32 bits n'est pas installée.

Pour installer la prise en charge (de base) des exécutables 32 bits

(si vous n'utilisez pas sudo dans votre configuration, lisez la note ci-dessous)

La plupart des systèmes Linux de bureau de la famille Fedora/Red Hat :

 pkcon install glibc.i686

Peut-être certains systèmes de bureau Debian/Ubuntu ? :

pkcon install ia32-libs

Fedora ou Red Hat plus récent, CentOS :

 sudo dnf install glibc.i686

Ancien RHEL, CentOS :

   sudo yum install glibc.i686

Encore plus ancien RHEL, CentOS :

  sudo yum install glibc.i386

Debian ou Ubuntu :

   sudo apt-get install ia32-libs

devrait vous fournir la bibliothèque (première, principale) dont vous avez besoin.

Une fois que vous l'aurez, vous aurez probablement besoin de bibliothèques de support

Toute personne ayant besoin d'installer glibc.i686 ou glibc.i386 se heurtera probablement à d'autres dépendances de bibliothèque également. Pour identifier un package fournissant une bibliothèque arbitraire, vous pouvez utiliser

 ldd /usr/bin/YOURAPPHERE

si vous n'êtes pas sûr que ce soit dans /usr/bin vous pouvez également vous rabattre sur

 ldd $(which YOURAPPNAME)

La sortie ressemblera à ceci :

    linux-gate.so.1 =>  (0xf7760000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xf773e000)
    libSM.so.6 => not found

Recherchez les bibliothèques manquantes (par exemple, libSM.so.6 dans la sortie ci-dessus), et pour chacun, vous devez trouver le package qui le fournit.

Commandes pour trouver le package par famille de distribution

Fedora/Red Hat Enterprise/CentOS :

 dnf provides /usr/lib/libSM.so.6

ou, sur les anciens RHEL/CentOS :

 yum provides /usr/lib/libSM.so.6

ou, sur Debian/Ubuntu :

d'abord, installez et téléchargez la base de données pour apt-file

 sudo apt-get install apt-file && apt-file update

puis chercher avec

 apt-file find libSM.so.6

Notez le chemin du préfixe /usr/lib dans le cas (habituel); rarement, certaines bibliothèques vivent encore sous /lib pour des raisons historiques… Sur les systèmes 64 bits typiques, les bibliothèques 32 bits vivent en /usr/lib et les bibliothèques 64 bits vivent dans /usr/lib64 .

(Debian/Ubuntu organisent différemment les bibliothèques multi-architectures.)

Installation des packages pour les bibliothèques manquantes

Ce qui précède devrait vous donner un nom de package, par exemple :

libSM-1.2.0-2.fc15.i686 : X.Org X11 SM runtime library
Repo        : fedora
Matched from:
Filename    : /usr/lib/libSM.so.6

Dans cet exemple, le nom du package est libSM et le nom de la version 32 bits du package est libSM.i686 .

Vous pouvez ensuite installer le package pour récupérer la bibliothèque requise en utilisant pkcon dans une interface graphique, ou sudo dnf/yum/apt-get le cas échéant…. Par exemple pkcon install libSM.i686 . Si nécessaire, vous pouvez spécifier la version entièrement. Par exemple sudo dnf install ibSM-1.2.0-2.fc15.i686 .

Certaines bibliothèques auront un désignateur « époque » avant leur nom; cela peut être omis (les curieux peuvent lire les notes ci-dessous).

Remarques

Avertissement

Incidemment, le problème auquel vous êtes confronté implique soit que votre base de données RPM (resp. DPkg/DSelect) est corrompue, soit que l'application que vous essayez d'exécuter n'a pas été installée via le gestionnaire de packages. Si vous débutez avec Linux, vous voudrez probablement éviter d'utiliser des logiciels provenant de sources autres que votre gestionnaire de paquets, dans la mesure du possible...

Si vous n'utilisez pas "sudo" dans votre configuration

Saisissez

su -c

chaque fois que vous voyez sudo , par exemple,

su -c dnf install glibc.i686

À propos de l'indicateur d'époque dans les noms de bibliothèque

L'indicateur "epoch" avant le nom est un artefact de la manière dont les bibliothèques RPM sous-jacentes gèrent les numéros de version ; par exemple.

2:libpng-1.2.46-1.fc16.i686 : A library of functions for manipulating PNG image format files
Repo        : fedora
Matched from:
Filename    : /usr/lib/libpng.so.3

Ici, le 2: peut être omis ; juste pkcon install libpng.i686 ou sudo dnf install libpng-1.2.46-1.fc16.i686 . (Cela implique vaguement quelque chose comme :à un moment donné, le numéro de version du libpng le paquet a été restauré et "l'époque" a dû être incrémentée pour s'assurer que la version la plus récente serait considérée comme "la plus récente" lors des mises à jour. Ou quelque chose de similaire s'est produit. Deux fois.)

Mise à jour pour clarifier et couvrir plus complètement les différentes options du gestionnaire de packages (mars 2016)


Je viens de rencontrer le même problème sur une machine CentOS 6.4 64 bits fraîchement installée. Une seule commande yum résoudra ce problème ainsi que 99 % des problèmes similaires :

yum groupinstall "Bibliothèques de compatibilité"

Préfixez-le avec 'sudo' ou exécutez-le en tant que root, selon ce qui vous convient le mieux.


Linux
  1. Comment installer ASSP v.2 sur CentOS 7 64 bits

  2. Installer Apache sur CentOS 8

  3. Installer Auter sur CentOS 6

  4. Installer GitLab sur CentOS 7

  5. Installer Nginx sur CentOS 6

Comment installer Nginx sur CentOS 7 ?

Comment installer Jenkins sur CentOS 7 ?

Comment installer phpMyAdmin sur CentOS 7 ?

Comment installer Codeignetor centos 7 ?

Comment installer Mongodb dans CentOS ?

Comment installer VirtualBox sur CentOS 8