Apakah mungkin untuk memiliki perpustakaan 32 bit yang diinstal pada sistem 64 bit?

8

Saya memiliki 32 bit shared library yang diinstal, namun saya masih mendapatkan kesalahan ini ketika mencoba menginstal pogoplug:

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

Apakah ada hal lain yang perlu saya lakukan untuk mendapatkan program untuk memuat dari perpustakaan 32 bit?

Pertanyaan serupa diajukan awal tahun ini, tetapi tidak diberi jawaban.

Tikar
sumber

Jawaban:

9

Untuk beberapa perpustakaan, dimungkinkan untuk memiliki perpustakaan 32-bit dan 64-bit yang diinstal pada sistem 64-bit. Ini tersedia melalui ia32-libspaket di Ubuntu 10.04 dan sebelumnya. Menurut daftar fileia32-libs , tidak ada libfuse.so.2file yang disertakan. Itu berarti Anda tidak dapat menginstal kedua arsitektur sekaligus.

Sejak Ubuntu 11.10 Oneiric, paket-paket dimungkinkan untuk memungkinkan instalasi simultan untuk berbagai arsitektur yang disebut "Multi-Arch". Sayangnya, jika saya percaya pada daftar libfuse2di Oneiric , paket ini belum ditransisikan. Itu dapat ditentukan dari dependensi paket: jika suatu paket bergantung pada multiarch-support(seperti libdrm2 ), ia memiliki dukungan untuk dukungan multi-lengkungan. Namun, ini bukan jaminan bahwa paket tersebut dapat diinstal untuk beberapa arsitektur secara bersamaan.

Untuk meminta cache lokal Anda untuk kapabilitas multi-lengkungan suatu paket, katakanlah libc6, jalankan:

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

Untuk perintah ini, outputnya adalah Multi-Arch: same. Itu berarti bahwa versi paket 32-bit dan 64-bit dapat diinstal pada satu waktu. Jika tidak ada output, paket tidak siap untuk dukungan multi-lengkungan. Nilai - nilai lain yang mungkinforeign (tidak dapat dipasang bersama, tetapi dapat digunakan untuk memenuhi dependensi arsitektur lain) dan allowed(iirc, hanya satu paket yang boleh dipasang pada satu waktu, tetapi paket tersebut dapat digunakan untuk memenuhi dependensi yang lain paket)

Anda harus dapat menginstal paket 32-bit pada sistem 64-bit dengan:

sudo apt-get install packagename:i386

Membangun libfuse 32-bit untuk mesin 64-bit

Karena perpustakaan sekering 32-bit tidak disertakan ia32-libs, Anda tidak punya pilihan lain selain membangunnya sendiri.

  1. Instal dependensi build untuk sekering dan dapatkan kode sumber:

    sudo apt-get install ia32-libs libc6-i386
    sudo apt-get build-dep fuse
    apt-get source fuse
    
  2. Konfigurasikan pohon sumber dan bangun sekering (sesuaikan nama direktori jika perlu):

    cd fuse-2.8.4
    CFLAGS=-m32 ./configure --host=i386-linux-gnu
    make -j 50
    
  3. Instal perpustakaan sekering 32-bit (sesuaikan versinya):

    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. Perbarui cache tautan:

    sudo ldconfig
    
  5. (opsional) Hapus file sumber:

    cd ..
    rm -r fuse-2.8.4
    
Lekensteyn
sumber
0

Ya ada. Instal ia32. Setelah selesai, Anda sekarang dapat menginstal program berbasis 32bit di platform 64bit.

Imo Ekpo
sumber
Saya telah ia32 diinstal (itulah yang saya bicarakan dengan perpustakaan bersama). Ini hanya membawa kesalahan dengan libfuse.so.2
Mat
1
ia32-libstidak mengandung semua perpustakaan 32-bit.
Lekensteyn