GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Est-il possible d'avoir des bibliothèques 32 bits installées sur un système 64 bits ?

J'ai installé les bibliothèques partagées 32 bits, mais j'obtiens toujours cette erreur lorsque j'essaie d'installer pogoplug :

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

Dois-je faire autre chose pour charger le programme à partir des bibliothèques 32 bits ?

Une question similaire a été posée plus tôt cette année, mais n'a reçu aucune réponse.

Réponse acceptée :

Pour certaines bibliothèques, il est possible d'installer à la fois les bibliothèques 32 bits et 64 bits sur un système 64 bits. Ceci est disponible via ia32-libs package sur Ubuntu 10.04 et versions antérieures. Selon la liste de fichiers de ia32-libs , il n'y a pas de libfuse.so.2 fichier inclus. Cela signifie que vous ne pouvez pas installer les deux architectures en même temps.

Depuis Ubuntu 11.10 Oneiric, il est possible pour les packages d'autoriser l'installation simultanée de différentes architectures, ce qui s'appelle "Multi-Arch". Malheureusement, si j'en crois la liste de fichiers de libfuse2 sur Oneiric, ce package n'a pas encore été transféré. Cela peut être déterminé à partir des dépendances du package :si un package dépend de multiarch-support (comme libdrm2), il prend en charge le support multi-arch. Cependant, ce n'est pas une garantie que le package peut être installé pour plusieurs architectures simultanément.

Pour interroger votre cache local sur les fonctionnalités multi-arch d'un package, dites libc6 , exécutez :

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

Pour cette commande, la sortie est Multi-Arch: same . Cela signifie que les versions 32 bits et 64 bits d'un package peuvent être installées simultanément. S'il n'y a pas de sortie, le package n'est pas prêt pour la prise en charge multi-arch. Les autres valeurs possibles sont foreign (non co-installable, mais il peut être utilisé pour satisfaire les dépendances d'autres architectures) et allowed (iirc, un seul package peut être installé à la fois, mais le package peut être utilisé pour satisfaire les dépendances d'autres packages)

Vous devriez pouvoir installer des packages 32 bits sur un système 64 bits avec :

sudo apt-get install packagename:i386

Création de libfuse 32 bits pour les machines 64 bits

Étant donné que la bibliothèque de fusibles 32 bits n'est pas fournie avec ia32-libs , vous n'avez pas d'autre choix que de le construire vous-même.

  1. Installez les dépendances de build pour fuse et obtenez le code source :

    sudo apt-get install ia32-libs libc6-i386
    sudo apt-get build-dep fuse
    apt-get source fuse
    
  2. Configurez l'arborescence des sources et construisez le fusible (ajustez le nom du répertoire si nécessaire) :

    cd fuse-2.8.4
    CFLAGS=-m32 ./configure --host=i386-linux-gnu
    make -j 50
    
  3. Installez la bibliothèque de fusibles 32 bits (ajustez la version en conséquence) :

    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. Mettez à jour le cache de l'éditeur :

    sudo ldconfig
    
  5. (facultatif) Supprimez les fichiers sources :

    cd ..
    rm -r fuse-2.8.4
    

Ubuntu
  1. Debian – Comment répliquer les sélections de paquets installés d'un système Debian à un autre ? (debian Wheezy) ?

  2. Ubuntu peut-il être installé sur des systèmes sans connexion Internet ?

  3. Comment installer Termite ?

  4. Vous ne pouvez pas installer plusieurs bibliothèques de développement ?

  5. Comment puis-je déterminer si Apache est installé sur un système ?

Comment installer Minecraft sur Ubuntu 20.04

Installer le gestionnaire de paquets Synaptic sur Linux

Comment installer Django sur Ubuntu 20.04

Comment installer Notepadqq sur Ubuntu 20.04

Installer Redis sur Ubuntu 20.04

Comment installer et gérer les packages RPM sur le système Ubuntu/Debian