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
ldd /usr/bin/YOURAPPHERE
wenn Sie sich nicht sicher sind, ob es sich um /usr/bin
handelt Sie können auch auf
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
einsu -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.