GNU/Linux >> LINUX-Kenntnisse >  >> Linux

CentOS 64 Bit schlechter ELF-Interpreter

Im Allgemeinen, wenn Sie einen solchen Fehler erhalten, tun Sie es einfach

yum provides ld-linux.so.2

dann sehen Sie 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 fragen, was die Logik war ...):

yum install glibc.i686

Versuchen Sie es

$ 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 auf.


Sie verwenden ein 64-Bit-System und haben keine 32-Bit-Bibliotheksunterstützung installiert.

So installieren Sie die (Baseline-)Unterstützung für ausführbare 32-Bit-Dateien

(Wenn Sie sudo nicht in Ihrem Setup 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 neueres Red Hat, CentOS:

 sudo dnf install glibc.i686

Älteres RHEL, CentOS:

   sudo yum install glibc.i686

Noch älteres RHEL, CentOS:

  sudo yum install glibc.i386

Debian oder Ubuntu:

   sudo apt-get install ia32-libs

sollte Ihnen die (erste Haupt-)Bibliothek holen, die Sie brauchen.

Sobald Sie das haben, brauchen Sie wahrscheinlich Unterstützungsbibliotheken

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

verwenden
 ldd /usr/bin/YOURAPPHERE

wenn Sie sich nicht sicher sind, ob es sich um /usr/bin handelt Sie können auch auf

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 jedes müssen Sie das Paket finden, das es bereitstellt.

Befehle zum Suchen des Pakets pro Distributionsfamilie

Fedora/Red Hat Enterprise/CentOS:

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

oder unter älterem RHEL/CentOS:

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

oder unter Debian/Ubuntu:

installieren und laden Sie zuerst die Datenbank für apt-file herunter

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

dann suchen mit

 apt-file find libSM.so.6

Beachten Sie den Präfixpfad /usr/lib im (normalen) Fall; selten leben einige Bibliotheken noch unter /lib aus historischen Gründen … Auf typischen 64-Bit-Systemen leben 32-Bit-Bibliotheken in /usr/lib und 64-Bit-Bibliotheken leben 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 .

Anschließend können Sie das Paket installieren, um die erforderliche Bibliothek mit pkcon abzurufen in einer GUI oder sudo dnf/yum/apt-get wie angemessen…. Beispiel:pkcon install libSM.i686 . Bei Bedarf können Sie die Version vollständig angeben. Beispiel:sudo dnf install ibSM-1.2.0-2.fc15.i686 .

Einige Bibliotheken haben eine „Epochen“-Bezeichnung vor ihrem Namen; dies kann weggelassen werden (Wissende können die Anmerkungen unten lesen).

Notizen

Warnung

Übrigens bedeutet das Problem, mit dem Sie konfrontiert sind, entweder, dass Ihre RPM-Datenbank (bzw. DPkg/DSelect) beschädigt ist oder dass die Anwendung, die Sie auszuführen versuchen, nicht über den Paketmanager installiert wurde. Wenn Sie neu bei Linux sind, möchten Sie wahrscheinlich vermeiden, Software aus anderen Quellen als Ihrem Paketmanager zu verwenden, wann immer dies möglich ist ...

Wenn Sie "sudo" nicht in Ihrem Setup verwenden

Geben Sie

ein
su -c

jedes Mal, wenn Sie sudo sehen , zB

su -c dnf install glibc.i686

Über die Epochenbezeichnung in Bibliotheksnamen

Die Bezeichnung „Epoche“ vor dem Namen ist ein Artefakt der Art und Weise, wie die zugrunde liegenden RPM-Bibliotheken mit Versionsnummern umgehen; 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 die 2: kann ausgelassen werden; nur pkcon install libpng.i686 oder sudo dnf install libpng-1.2.46-1.fc16.i686 . (Es impliziert vage etwas wie:Irgendwann wird die Versionsnummer des libpng Das Paket wurde rückwärts gerollt, und die „Epoche“ musste erhöht werden, um sicherzustellen, dass die neuere Version bei Aktualisierungen als „neuer“ betrachtet wurde. Oder es ist etwas ähnliches passiert. Zweimal.)

Aktualisiert um die verschiedenen Optionen des Paketmanagers ausführlicher zu erläutern und abzudecken (März 2016)


Ich bin gerade auf das gleiche Problem auf einem frisch installierten CentOS 6.4 64-Bit-Computer gestoßen. Ein einziger yum-Befehl behebt dieses und 99 % ähnlicher Probleme:

yum groupinstall "Kompatibilitätsbibliotheken"

Stellen Sie diesem entweder 'sudo' voran oder führen Sie es als root aus, je nachdem, was für Sie am besten funktioniert.


Linux
  1. So installieren Sie ASSP v.2 auf CentOS 7 64-Bit

  2. Installieren Sie Apache unter CentOS 8

  3. Installieren Sie Auter auf CentOS 6

  4. Installieren Sie GitLab unter CentOS 7

  5. Installieren Sie Nginx unter CentOS 6

Wie installiere ich Nginx unter CentOS 7?

Wie installiere ich Jenkins unter CentOS 7?

Wie installiere ich phpMyAdmin unter CentOS 7?

Wie installiere ich Codeignetor Centos 7?

Wie installiere ich Mongodb in CentOS?

So installieren Sie VirtualBox auf CentOS 8