GNU/Linux >> Linux Esercitazione >  >> Ubuntu

È possibile avere librerie a 32 bit installate su un sistema a 64 bit?

Ho installato le librerie condivise a 32 bit, ma ricevo ancora questo errore durante il tentativo di installare pogoplug:

./pogoplugfs: error while loading shared libraries: libfuse.so.2: wrong ELF class: ELFCLASS64

C'è qualcos'altro che devo fare per caricare il programma dalle librerie a 32 bit?

Una domanda simile è stata posta all'inizio di quest'anno, ma non è stata data alcuna risposta.

Risposta accettata:

Per alcune librerie, è possibile avere sia le librerie a 32 bit che a 64 bit installate su un sistema a 64 bit. Questo è disponibile tramite ia32-libs pacchetto su Ubuntu 10.04 e precedenti. Secondo l'elenco di file di ia32-libs , non esiste libfuse.so.2 file incluso. Ciò significa che non puoi avere entrambe le architetture installate contemporaneamente.

Da Ubuntu 11.10 Oneiric, è possibile che i pacchetti consentano l'installazione simultanea per diverse architetture che viene chiamata "Multi-Arch". Sfortunatamente, se posso credere alla lista dei file di libfuse2 su Oneiric, questo pacchetto non è stato ancora trasferito. Questo può essere determinato dalle dipendenze del pacchetto:se un pacchetto dipende da multiarch-support (come libdrm2), ha il supporto per il supporto multi-arch. Tuttavia, questo non una garanzia che il pacchetto può essere installato per più architetture contemporaneamente.

Per interrogare la tua cache locale per le capacità multi-arch di un pacchetto, pronuncia libc6 , esegui:

apt-cache show libc6 | grep ^Multi-Arch:

Per questo comando, l'output è Multi-Arch: same . Ciò significa che è possibile installare contemporaneamente sia la versione a 32 bit che quella a 64 bit di un pacchetto. Se non è presente alcun output, il pacchetto non è pronto per il supporto multi-arch. Altri possibili valori sono foreign (non coinstallabile, ma può essere utilizzato per soddisfare le dipendenze di altre architetture) e allowed (iirc, è consentito installare un solo pacchetto alla volta, ma il pacchetto può essere utilizzato per soddisfare le dipendenze di altri pacchetti)

Dovresti essere in grado di installare pacchetti a 32 bit su un sistema a 64 bit con:

sudo apt-get install packagename:i386

Creazione di libfuse a 32 bit per macchine a 64 bit

Poiché la libreria dei fusibili a 32 bit non è fornita con ia32-libs , non hai altra scelta che costruirlo da solo.

  1. Installa le dipendenze di build per fuse e ottieni il codice sorgente:

    sudo apt-get install ia32-libs libc6-i386
    sudo apt-get build-dep fuse
    apt-get source fuse
    
  2. Configura l'albero dei sorgenti e compila il fusibile (regola il nome della directory se necessario):

    cd fuse-2.8.4
    CFLAGS=-m32 ./configure --host=i386-linux-gnu
    make -j 50
    
  3. Installa la libreria dei fusibili a 32 bit (regola la versione di conseguenza):

    sudo ln -s libfuse.so.2.8.4 /usr/local/lib/libfuse.so.2
    sudo install -m644 lib/.libs/libfuse.so.2.8.4 /usr/local/lib/
    
  4. Aggiorna la cache del linker:

    sudo ldconfig
    
  5. (facoltativo) Rimuovere i file di origine:

    cd ..
    rm -r fuse-2.8.4
    

Ubuntu
  1. Debian:come replicare le selezioni di pacchetti installati da un sistema Debian a un altro? (Debian Wheezy)?

  2. Ubuntu può essere installato su sistemi senza una connessione Internet?

  3. Come installare la termite?

  4. Non riesci a installare più librerie di sviluppo?

  5. Come posso determinare se Apache è installato su un sistema?

Come installare Minecraft su Ubuntu 20.04

Installa Synaptic Package Manager su Linux

Come installare Django su Ubuntu 20.04

Come installare Notepadqq su Ubuntu 20.04

Installa Redis su Ubuntu 20.04

Come installare e gestire i pacchetti RPM sul sistema Ubuntu/Debian