In generale, quando ricevi un errore come questo, fallo
yum provides ld-linux.so.2
allora vedrai qualcosa come:
glibc-2.20-5.fc21.i686 : The GNU libc libraries
Repo : fedora
Matched from:
Provides : ld-linux.so.2
e poi esegui quanto segue come ha scritto BRPocock (nel caso ti stavi chiedendo quale fosse la logica...):
yum install glibc.i686
Prova
$ yum provides ld-linux.so.2
$ yum update
$ yum install glibc.i686 libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6
Spero che questo si risolva.
Sei su un sistema a 64 bit e non hai installato il supporto della libreria a 32 bit.
Per installare il supporto (di base) per eseguibili a 32 bit
(se non usi sudo nella tua configurazione leggi la nota sotto)
La maggior parte dei sistemi desktop Linux della famiglia Fedora/Red Hat:
pkcon install glibc.i686
Possibilmente alcuni sistemi desktop Debian/Ubuntu?:
pkcon install ia32-libs
Fedora o più recente Red Hat, CentOS:
sudo dnf install glibc.i686
RHEL precedente, CentOS:
sudo yum install glibc.i686
Ancora più vecchio RHEL, CentOS:
sudo yum install glibc.i386
Debian o Ubuntu:
sudo apt-get install ia32-libs
dovrebbe procurarti la (prima, principale) libreria di cui hai bisogno.
Una volta ottenuto ciò, probabilmente avrai bisogno di librerie di supporto
Chiunque abbia bisogno di installare glibc.i686
o glibc.i386
probabilmente si imbatterà anche in altre dipendenze della libreria. Per identificare un pacchetto che fornisce una libreria arbitraria, puoi usare
ldd /usr/bin/YOURAPPHERE
se non sei sicuro che sia in /usr/bin
puoi anche ripiegare su
ldd $(which YOURAPPNAME)
L'output sarà simile a questo:
linux-gate.so.1 => (0xf7760000)
libpthread.so.0 => /lib/libpthread.so.0 (0xf773e000)
libSM.so.6 => not found
Controlla le librerie mancanti (ad es. libSM.so.6
nell'output sopra), e per ognuno devi trovare il pacchetto che lo fornisce.
Comandi per trovare il pacchetto per famiglia di distribuzione
Fedora/Red Hat Enterprise/CentOS:
dnf provides /usr/lib/libSM.so.6
oppure, su RHEL/CentOS precedente:
yum provides /usr/lib/libSM.so.6
oppure, su Debian/Ubuntu:
per prima cosa, installa e scarica il database per apt-file
sudo apt-get install apt-file && apt-file update
quindi cerca con
apt-file find libSM.so.6
Nota il percorso del prefisso /usr/lib
nel (normale) caso; raramente, alcune biblioteche vivono ancora sotto /lib
per ragioni storiche... Sui tipici sistemi a 64 bit, le librerie a 32 bit risiedono in /usr/lib
e le librerie a 64 bit risiedono in /usr/lib64
.
(Debian/Ubuntu organizzano le librerie multi-architettura in modo diverso.)
Installazione dei pacchetti per le librerie mancanti
Quanto sopra dovrebbe darti un nome di pacchetto, ad esempio:
libSM-1.2.0-2.fc15.i686 : X.Org X11 SM runtime library
Repo : fedora
Matched from:
Filename : /usr/lib/libSM.so.6
In questo esempio il nome del pacchetto è libSM
e il nome della versione a 32 bit del pacchetto è libSM.i686
.
È quindi possibile installare il pacchetto per acquisire la libreria richiesta utilizzando pkcon
in una GUI, o sudo dnf/yum/apt-get
a seconda dei casi…. Ad esempio pkcon install libSM.i686
. Se necessario è possibile specificare completamente la versione. Ad esempio sudo dnf install ibSM-1.2.0-2.fc15.i686
.
Alcune biblioteche avranno un indicatore di "epoca" prima del loro nome; questo può essere omesso (i curiosi possono leggere le note sottostanti).
Note
Avviso
Per inciso, il problema che stai affrontando implica che il tuo database RPM (risp. DPkg/DSelection) è danneggiato o che l'applicazione che stai tentando di eseguire non è stata installata tramite il gestore pacchetti. Se non conosci Linux, probabilmente vorrai evitare di utilizzare software da fonti diverse dal tuo gestore di pacchetti, quando possibile...
Se non usi "sudo" nella tua configurazione
Digita
su -c
ogni volta che vedi sudo
, ad esempio,
su -c dnf install glibc.i686
Informazioni sul designatore di epoca nei nomi delle librerie
Il designatore "epoca" prima del nome è un artefatto del modo in cui le sottostanti librerie RPM gestiscono i numeri di versione; per esempio.
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
Qui, il 2:
può essere omesso; solo pkcon install libpng.i686
o sudo dnf install libpng-1.2.46-1.fc16.i686
. (Implica vagamente qualcosa del tipo:a un certo punto, il numero di versione del file libpng
pacchetto è stato eseguito il rollback all'indietro e l'"epoca" doveva essere incrementata per assicurarsi che la versione più recente fosse considerata "più recente" durante gli aggiornamenti. O è successo qualcosa di simile. Due volte.)
Aggiornato per chiarire e coprire le varie opzioni del gestore di pacchetti in modo più completo (marzo 2016)
Ho appena riscontrato lo stesso problema su una macchina CentOS 6.4 a 64 bit appena installata. Un singolo comando yum risolverà questo problema più il 99% di problemi simili:
yum groupinstall "Librerie di compatibilità"
O prefisso questo con 'sudo' o esegui come root, qualunque cosa funzioni meglio per te.