it-swarm.com.de

CentOS 64-Bit-ELF-Interpreter

Ich habe gerade die CentOS 6 64bit-Version installiert. Ich versuche, eine 32-Bit-Anwendung auf einem 64-Bit-Computer zu installieren, und habe folgende Fehlermeldung erhalten:

/lib/ld-linux.so.2: fehlerhafter ELF-Interpreter: Keine solche Datei oder Verzeichnis

Ich bin neu in Linux. Wie löse ich das?

168
c11ada

Sie befinden sich auf einem 64-Bit-System und haben keine 32-Bit-Bibliotheksunterstützung installiert.

Installation (Baseline) für ausführbare 32-Bit-Dateien

(Wenn Sie Sudo in Ihrem Setup nicht verwenden, lesen Sie den Hinweis unten.) 

Die meisten Desktop-Linux-Systeme der Fedora/Red Hat-Familie:

 pkcon install glibc.i686

Möglicherweise einige Desktop-Debian/Ubuntu-Systeme ?:

pkcon install ia32-libs

Fedora oder neuer Red Hat, CentOS:

 Sudo dnf install glibc.i686

Ältere RHEL, CentOS:

   Sudo yum install glibc.i686

Noch älterer RHEL, CentOS:

  Sudo yum install glibc.i386

Debian oder Ubuntu:

   Sudo apt-get install ia32-libs

sie sollten sich die (erste, Haupt-) Bibliothek holen, die Sie benötigen.

Sobald Sie das haben, werden Sie wahrscheinlich Unterstützungsbibliotheken benötigen

Jeder, der glibc.i686 oder glibc.i386 installieren muss, wird wahrscheinlich auch auf andere Bibliotheksabhängigkeiten stoßen. Um ein Paket zu identifizieren, das eine beliebige Bibliothek enthält, können Sie verwenden

 ldd /usr/bin/YOURAPPHERE

wenn Sie sich nicht sicher sind, ob es sich in /usr/bin befindet, können Sie auch darauf zurückgreifen

 ldd $(which YOURAPPNAME)

Die Ausgabe sieht folgendermaßen aus:

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

Suchen Sie nach fehlenden Bibliotheken (z. B. libSM.so.6 in der obigen Ausgabe), und für jede Bibliothek müssen Sie das Paket finden, das es bereitstellt.

Befehle zum Auffinden des Pakets pro Verteilerfamilie

Fedora/Red Hat Enterprise/CentOS:

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

oder bei älteren RHEL/CentOS:

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

oder unter Debian/Ubuntu:

installieren und laden Sie zunächst die Datenbank für apt-file.

 Sudo apt-get install apt-file && apt-file update

dann mit suchen

 apt-file find libSM.so.6

Beachten Sie den Präfixpfad /usr/lib im (üblichen) Fall; In seltenen Fällen leben einige Bibliotheken aus historischen Gründen noch unter /lib… Auf typischen 64-Bit-Systemen leben 32-Bit-Bibliotheken in /usr/lib und 64-Bit-Bibliotheken in /usr/lib64.

(Debian/Ubuntu organisieren Bibliotheken mit mehreren Architekturen unterschiedlich.)

Pakete für fehlende Bibliotheken installieren

Das obige sollte Ihnen einen Paketnamen geben, z. B .:

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

In diesem Beispiel lautet der Name des Pakets libSM und der Name der 32-Bit-Version des Pakets ist libSM.i686.

Sie können das Paket dann installieren, um die erforderliche Bibliothek zu verwenden, indem Sie pkcon in einer GUI oder Sudo dnf/yum/apt-get verwenden. ZB pkcon install libSM.i686. Bei Bedarf können Sie die Version vollständig angeben. ZB Sudo dnf install ibSM-1.2.0-2.fc15.i686.

Einige Bibliotheken werden vor ihrem Namen mit einem „Epoch“ gekennzeichnet. Dies kann weggelassen werden (der Neugierige kann die folgenden Hinweise lesen).

Anmerkungen

Warnung

Das Problem, mit dem Sie konfrontiert sind, impliziert entweder, dass Ihre RPM- (bzw. DPkg/DSelect) -Datenbank beschädigt ist oder dass die Anwendung, die Sie ausführen möchten, nicht über den Paketmanager installiert wurde. Wenn Sie noch nicht mit Linux vertraut sind, möchten Sie wahrscheinlich möglichst keine Software aus anderen Quellen als Ihrem Paketmanager verwenden ...

Wenn Sie in Ihrem Setup nicht "Sudo" verwenden

Art

su -c

jedes Mal, wenn Sie Sudo sehen, z.

su -c dnf install glibc.i686

Über den Epochenbezeichner in Bibliotheksnamen

Der Bezeichner „Epoche“ vor dem Namen ist ein Artefakt der Art und Weise, wie die zugrunde liegenden RPM-Bibliotheken Versionsnummern verarbeiten. z.B. 

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

Hier kann der 2: weggelassen werden; nur pkcon install libpng.i686 oder Sudo dnf install libpng-1.2.46-1.fc16.i686. (Dies deutet vage an etwas wie: Irgendwann wurde die Versionsnummer des libpng-Pakets rückwärts gerollt, und die "Epoche" musste inkrementiert werden, um sicherzustellen, dass die neuere Version bei Aktualisierungen als "neuere" angesehen wird). Zweimal.)


Aktualisiert, um die verschiedenen Paketverwaltungsoptionen vollständiger zu erläutern und abzudecken (März 2016)

337
BRPocock

Das gleiche Problem ist gerade auf einer neu installierten 64-Bit-Maschine von CentOS 6.4 aufgetreten. Ein einzelner yum-Befehl behebt dieses Problem plus 99% ähnlicher Probleme:

yum groupinstall "Kompatibilitätsbibliotheken"

Präfixieren Sie entweder "Sudo" oder führen Sie als root aus, je nachdem, was für Sie am besten funktioniert.

17
Phil Edwards

Wenn Sie eine solche Fehlermeldung erhalten, tun Sie dies in der Regel

yum provides ld-linux.so.2

dann siehst du etwas wie:

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

und dann führen Sie einfach folgendes aus, wie BRPocock geschrieben hat (falls Sie sich fragten, was die Logik war ...):

yum install glibc.i686
11
Moe Singh

Versuchen

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

Hoffe, das klärt sich.

3
The Bumpaster

Installieren Sie fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc ++. So.6

0
Nithin

Ich wollte nur einen Kommentar in BRPocock hinzufügen, aber ich habe keine ausreichenden Privilegien.

Mein Beitrag war also für alle, die IBM Integration Toolkit aus dem IBM Integration Bus-Paket installieren wollten.

Wenn Sie versuchen, den Befehl "Installation Manager" aus dem Ordner/Integration_Toolkit/IM_Linux auszuführen (die auszuführende Datei ist "install"), wird der in diesem Beitrag dargestellte Fehler angezeigt.

Weitere Anweisungen zur Behebung dieses Problems finden Sie auf der IBM-Website: https://www-304.ibm.com/support/docview.wss?uid=swg21459143

Ich hoffe, das hilft jedem, der versucht, das zu installieren.

0
mmarquezvacas

Ich würde für Debian hinzufügen, dass Sie mindestens einen Compiler im System benötigen (laut Debian Stretch und Jessie 32-Bit-Bibliotheken ).

Ich habe apt-get install -y gcc-multilib installiert, um eine ausführbare 32-Bit-Datei in meinem Docker-Container basierend auf debian: jessie auszuführen.

0
Vitaliy

Sie können stattdessen auch OpenJDK 32-Bit (.i686) installieren. Laut meinem Test wird es installiert und funktioniert ohne Probleme.

Sudo yum install Java-1.8.0-openjdk.i686

Hinweis:

Das Paket Java-1.8.0-openjdk enthält nur Java Runtime Environment. Wenn Sie Java-Programme entwickeln möchten, installieren Sie das Paket Java-1.8.0-openjdk-devel.

Siehe hier für weitere Details.

0
Mir-Ismaili