GNU/Linux >> Linux Esercitazione >  >> Linux

CentOS 64 bit cattivo interprete ELF

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.


Linux
  1. Come installare ASSP v.2 su CentOS 7 a 64 bit

  2. Installa Apache su CentOS 8

  3. Installa Auter su CentOS 6

  4. Installa GitLab su CentOS 7

  5. Installa Nginx su CentOS 6

Come installare Nginx su CentOS 7?

Come installare Jenkins su CentOS 7?

Come installare phpMyAdmin su CentOS 7?

Come installare Codeignetor centos 7?

Come installare Mongodb in CentOS?

Come installare VirtualBox su CentOS 8