web-dev-qa-db-fra.com

xgterm ne peut pas localiser la bibliothèque installée

J'installe IRAF sur une nouvelle machine et lorsque j'essaie de lancer xgterm, le message d'erreur suivant s'affiche:

xgterm: error while loading shared libraries: libXmu.so.6: cannot open shared object file: No such file or directory

Cependant, le paquet contenant cette bibliothèque, libXmu6, est à la fois installé et à jour.

Toute aide serait appréciée.

1
user134711

Vous pouvez essayer deux choses: (i) installer le paquetage -dev de la bibliothèque - par exemple. Sudo apt-get install libxmu-dev ou (ii) si vous utilisez une installation IRAF 32 bits sur un ordinateur 64 bits, installez la bibliothèque 32 bits, par exemple. Sudo apt-get install libxmu6:i386

2
evandromr

Si l'installation du package dev ne fonctionne pas, vous devrez peut-être l'exporter vers la variable LD_LIBRARY_PATH.

Vous pouvez le trouver avec find / -iname libXmu.so.6 -print 2>/dev/null, dans mon cas c'était dans /usr/lib/x86_64-linux-gnu/libXmu.so.6

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/libXmu.so.6/lib:${LD_LIBRARY_PATH}

NB Si la variable $LD_LIBRARY_PATH est vide au début, vous devez omettre le lib....

Cela n'a pas changé la situation pour moi, et sur ce conseil j'ai lancé Sudo apt-get install ia32-libs qui fonctionnait, dans une certaine mesure, changeant maintenant mon message d'erreur en

error while loading shared libraries: libXm.so.4: cannot open shared object file: No such file or directory

(c'est-à-dire le numéro 4 et non pas 6)

Ceci peut être installé avec Sudo apt-get install libxm4, l’emplacement résultant trouvé avec find / -iname libXm.so.4 -print 2>/dev/null, et ajouté au $LD_LIBRARY_PATH avec (par exemple, pour mon résultat).

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/libXm.so.4/lib:${LD_LIBRARY_PATH}

Ce qui signifie que mon LD_LIBRARY_PATH était /usr/lib/x86_64-linux-gnu/libXm.so.4/lib:/usr/lib/x86_64-linux-gnu/libXmu.so.6

Cela n'a pas changé le message d'erreur demandant libXm.so.4 cependant. Pour cette bibliothèque (que je peux voir est là avec Locate ...), j'ai installé OpenMotif (je ne sais pas si cela est nécessaire)

Sudo apt-get install libmotif-dev

Et finalement, la configuration requise pour le package 32 bits fonctionnera avec les bibliothèques libXmu.so.6 après l’installation de ia32-libs, mais pour libXm.so.4, une déclaration explicite du statut 32 bits est nécessaire à l’aide de liens dans le répertoire/usr /. dossier lib/i386-linx-gnu. C'était clair quand j'ai couru:

/usr/lib/i386-linux-gnu $ ls ../*/libXm*

(montrant notamment uniquement ../i386-linux-gnu/libXmu.so.6), j'ai donc créé un lien de ce type avec:

Sudo ln -s /usr/lib/x86_64-linux-gnu/libXm.so.4.0.4 /usr/lib/i386-linux-gnu/libXm.so.4

J'ai ensuite réussi à passer au message d'erreur suivant (woohoo!) Mentionné sur autres pages d'aide :

error while loading shared libraries: libXm.so.4: wrong ELF class: ELFCLASS64

... ce qui était étrange puisque c’est là que je viens de mettre le lien ... Cette page suggère une solution de contournement mais je ne peux pas installer libx3motif.deb car AMD64 rompt une dépendance ( et je n'allais pas désinstaller des composants cruciaux comme celui-là).

Cette réponse souligne la nécessité d'avoir le paquet 32 ​​bits plus tôt dans le $LD_LIBRARY_PATH que les 64 bits.

export LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/libXm.so.4/lib:/usr/lib/x86_64-linux-gnu/libXmu.so.6.2.0/lib:/usr/lib/x86_64-linux-gnu/libXmu.so.6

Cela n'a rien changé. J'ai essayé de copier le fichier dans le dossier i386 et de rediriger le lien

Sudo cp /usr/lib/x86_64-linux-gnu/libXm.so.4.0.4 /usr/lib/i386-linux-gnu/libXm.so.4.0.4
Sudo ln -fs /usr/lib/i386-linux-gnu/libXm.so.4.0.4 /usr/lib/i386-linux-gnu/libXm.so.4

(L’indicateur -f force le reciblage, c’est-à-dire que vous n’aurez pas à rm ni à refaire)

J'ai lutté avec cela pendant un peu de temps (je ne savais pas trop quelle était la goutte d'eau qui restait) jusqu'à ce que cela réussisse dans mon .bashrc:

export LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/libXm.so.4/lib:/usr/lib/x86_64-linux-gnu/libXmu.so.6.2.0/lib:/usr/lib/x86_64-linux-gnu/libXmu.so.6

Donc, cela prouve que vous n'avez pas besoin de packages 32 bits installés, il vous suffit de pointer des liens symboliques dans le dossier lib 32 bits vers les packages 64 bits ... Désolé pour le TMI mais juste pourrait être utile pour quelqu'un coincé à l'avenir

0
Louis Maddox