Je viens d'installer la version CentOS 6 64 bits, j'essaie d'installer une application 32 bits sur un ordinateur 64 bits et j'ai l'erreur suivante:
/lib/ld-linux.so.2: interpréteur ELF incorrect: aucun fichier ou répertoire de ce type
Je suis nouveau sur Linux. Comment résoudre ça?
Vous êtes sur un système 64 bits et aucune prise en charge de bibliothèque 32 bits n'est installée.
(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 des systèmes de bureau Debian/Ubuntu ?:
pkcon install ia32-libs
Fedora ou plus récent Red Hat, CentOS:
Sudo dnf install glibc.i686
RHEL ancien, CentOS:
Sudo yum install glibc.i686
Encore plus vieux RHEL, CentOS:
Sudo yum install glibc.i386
Debian ou Ubuntu:
Sudo apt-get install ia32-libs
devrait vous saisir la (première, principale) bibliothèque dont vous avez besoin.
Quiconque ayant besoin d'installer glibc.i686
ou glibc.i386
se heurtera probablement à d'autres dépendances de la bibliothèque. Pour identifier un paquet fournissant une bibliothèque arbitraire, vous pouvez utiliser
ldd /usr/bin/YOURAPPHERE
si vous n'êtes pas sûr qu'il soit en /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 chacune d’elles, vous devez rechercher le paquet qui les fournit.
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:
tout 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 de préfixe /usr/lib
dans le cas (habituel); il est rare que certaines bibliothèques conservent toujours /lib
pour des raisons historiques… Sur les systèmes 64 bits classiques, les bibliothèques 32 bits résident dans /usr/lib
et les bibliothèques 64 bits, dans /usr/lib64
.
(Debian/Ubuntu organise les bibliothèques multi-architectures différemment.)
Ce qui précède devrait vous donner un nom de paquet, 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
selon le cas…. E.g pkcon install libSM.i686
. Si nécessaire, vous pouvez spécifier complètement la version. E.g Sudo dnf install ibSM-1.2.0-2.fc15.i686
.
Certaines bibliothèques auront un identifiant «Epoch» avant leur nom; ceci peut être omis (les curieux peuvent lire les notes ci-dessous).
Incidemment, le problème que vous rencontrez implique soit que votre base de données RPM (ou 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 dans Linux, vous voudrez probablement éviter d'utiliser des logiciels provenant de sources autres que votre gestionnaire de paquets, dans la mesure du possible ...
Type
su -c
chaque fois que vous voyez Sudo
, par exemple,
su -c dnf install glibc.i686
Le désignateur «Epoch» avant le nom est un artefact de la manière dont les bibliothèques RPM sous-jacentes traitent 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 du genre: à un moment donné, le numéro de version du paquet libpng
est passé à l’arrière et l’époque a dû être incrémentée pour que la version la plus récente soit considérée comme «plus récente» lors des mises à jour. Ou quelque chose de similaire. Deux fois.)
Mise à jour pour clarifier et couvrir davantage 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, plus 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.
En général, quand vous obtenez une erreur comme celle-ci, faites juste
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 lancez ce qui suit, comme l’a écrit BRPocock (au cas où vous vous demanderiez quelle était la logique ...):
yum install glibc.i686
Essayer
$ 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'efface.
Vous devez installer fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc +
Je voulais juste ajouter un commentaire dans BRPocock, mais je n'ai pas les privilèges suffisants.
Ma contribution était donc destinée à tous ceux qui essayaient d'installer IBM Integration Toolkit à partir du bundle IBM Integration Bus.
Lorsque vous essayez d'exécuter la commande "Installation Manager" à partir du dossier/Integration_Toolkit/IM_Linux (le fichier à exécuter est "install"), vous obtenez l'erreur indiquée dans cet article.
Vous trouverez d'autres instructions pour résoudre ce problème dans la page Web d'IBM suivante: https://www-304.ibm.com/support/docview.wss?uid=swg21459143
J'espère que cela aidera tous ceux qui essaient d'installer ça.
J'ajouterais pour Debian que vous avez besoin d'au moins un compilateur dans le système (selon Les bibliothèques Debian Stretch et Jessie 32 bits ).
J'ai installé apt-get install -y gcc-multilib
afin de pouvoir exécuter un fichier exécutable 32 bits dans mon conteneur Docker basé sur debian: jessie.
Vous pouvez également installer OpenJDK 32 bits (.i686
) à la place. Selon mon test, il sera installé et fonctionne sans problèmes.
Sudo yum install Java-1.8.0-openjdk.i686
Remarque:
Le package Java-1.8.0-openjdk contient uniquement l'environnement d'exécution Java. Si vous souhaitez développer des programmes Java, installez le package Java-1.8.0-openjdk-devel.
Voir ici pour plus de détails.