Risposte:
Sei su un sistema a 64 bit e non hai il supporto della libreria a 32 bit installato.
(se non usi sudo nella tua installazione leggi la nota sotto)
La maggior parte dei sistemi Linux desktop nella famiglia Fedora / Red Hat:
pkcon install glibc.i686
Forse alcuni sistemi desktop Debian / Ubuntu ?:
pkcon install ia32-libs
Fedora o Red Hat più recente, 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
dovresti prenderti la (prima, principale) libreria di cui hai bisogno.
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, è possibile utilizzare
ldd /usr/bin/YOURAPPHERE
se non sei sicuro che sia dentro /usr/bin
puoi anche ripiegare
ldd $(which YOURAPPNAME)
L'output sarà simile al seguente:
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 ognuna devi trovare il pacchetto che lo fornisce.
Fedora / Red Hat Enterprise / CentOS:
dnf provides /usr/lib/libSM.so.6
o, su RHEL / CentOS precedenti:
yum provides /usr/lib/libSM.so.6
oppure, su Debian / Ubuntu:
Innanzitutto, 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 caso (normale); raramente, alcune librerie vivono ancora /lib
per ragioni storiche ... Sui sistemi tipici a 64 bit, vivono le librerie a 32 bit e le librerie a /usr/lib
64 bit /usr/lib64
.
(Debian / Ubuntu organizzano le librerie multiarchitettura in modo diverso.)
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 afferrare la libreria richiesta usando pkcon
in una GUI, o sudo dnf/yum/apt-get
come appropriato…. Es pkcon install libSM.i686
. Se necessario, è possibile specificare la versione completamente. Es sudo dnf install ibSM-1.2.0-2.fc15.i686
.
Alcune biblioteche avranno un designatore di "epoca" prima del loro nome; questo può essere omesso (i curiosi possono leggere le note in basso).
Per inciso, il problema che stai affrontando implica che il tuo database RPM (resp. DPkg / DSelect) è danneggiato o che l'applicazione che stai cercando di eseguire non è stata installata tramite il gestore pacchetti. Se non conosci Linux, probabilmente vorrai evitare di utilizzare software proveniente da fonti diverse dal gestore dei pacchetti, quando possibile ...
genere
su -c
ogni volta che vedi sudo
, ad es.
su -c dnf install glibc.i686
Il designatore "epoca" prima del nome è un artefatto del modo in cui le librerie RPM sottostanti 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, si 2:
può omettere; giusto pkcon install libpng.i686
o sudo dnf install libpng-1.2.46-1.fc16.i686
. (Implica vagamente qualcosa del genere: ad un certo punto, il numero di versione del libpng
pacchetto è stato spostato all'indietro e "epoca" ha dovuto essere incrementata per assicurarsi che la versione più recente fosse considerata "più recente" durante gli aggiornamenti. O qualcosa di simile è successo. Due volte .)
Aggiornato per chiarire e coprire le varie opzioni di gestione dei 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 oltre al 99% di problemi simili:
yum groupinstall "Librerie di compatibilità"
Prefisso con 'sudo' o esegui come root, a seconda di quale funziona meglio per te.
In generale, quando ricevi un errore del genere, fallo
yum provides ld-linux.so.2
quindi vedrai qualcosa di simile:
glibc-2.20-5.fc21.i686 : The GNU libc libraries
Repo : fedora
Matched from:
Provides : ld-linux.so.2
e poi esegui semplicemente quanto segue come ha scritto BRPocock (nel caso ti stavi chiedendo quale fosse la logica ...):
yum install glibc.i686
Provare
$ yum provides ld-linux.so.2
$ yum update
$ yum install glibc.i686 libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6
Spero che questo chiarisca.
Volevo solo aggiungere un commento in BRPocock, ma non ho i privilegi sufficienti.
Quindi il mio contributo è stato per tutti coloro che cercavano di installare IBM Integration Toolkit dal pacchetto IBM Integration Bus.
Quando si tenta di eseguire il comando "Installation Manager" dalla cartella / Integration_Toolkit / IM_Linux (il file da eseguire è "installa") si ottiene l'errore mostrato in questo post.
Ulteriori istruzioni per risolvere questo problema sono disponibili nella pagina Web di IBM: https://www-304.ibm.com/support/docview.wss?uid=swg21459143
Spero che questo aiuti a chiunque cerchi di installarlo.
Vorrei aggiungere per Debian è necessario almeno un compilatore nel sistema (secondo le librerie Debian Stretch e Jessie a 32 bit ).
Ho installato apt-get install -y gcc-multilib
per eseguire il file eseguibile a 32 bit nel mio contenitore docker basato su debian: jessie.
Puoi anche installare OpenJDK 32-bit ( .i686
) invece. Secondo il mio test, verrà installato e funzionerà senza problemi.
sudo yum install java-1.8.0-openjdk.i686
Nota:
Il pacchetto java-1.8.0-openjdk contiene solo Java Runtime Environment . Se si desidera sviluppare programmi Java, installare il pacchetto java-1.8.0-openjdk-devel .
Vedi qui per maggiori dettagli.