Google Earth 7 sous Debian Sid 64 bits (multiarch)

Bonjour,

Je viens de m’inscrire sur le forum car j’aurais besoin d’aide pour installer la dernière version de GE.

Bon déjà je suis désolé de parler d’un logiciel propriétaire mais même NASA World Wind que j’aime beaucoup (projet opensource en Java) ne peut lui arriver la cheville, surtout au niveau des données en elles-mêmes (qui sont souvent propriétaires et très coûteuses donc merci Google).

Notez qu’il existe un paquet Debian google-earth-package (permettant de télécharger GE puis de construire son propre deb) mais il semble obsolète car il télécharge une vieille version de GE (6.0.x).

Sur le site de Google on peut télécharger un deb de la version 7.0 en 32 bits ou en 64 bits. Mais avec les 2 versions il y a des problème pour l’installer sous une Debian Sid 64 bits à cause de la transition vers multiarch… transition que j’ai commencée sur mon poste mais que je ne maîtrise vraiment pas tout, d’où ce thread !

Dans un autre thread récemment posté sur ce même forum lol avait visiblement réussi à l’installer “fingers in the noise” :

[quote=“lol”]Bon…
J’ai viré ia32 et cie.

Un petit hack sur le deb google-earth pour virer la dépendance, et ça roule.
Skype n’a pas bronché non plus.

Tout fonctionne très bien sans ces bibliothèques à la c… Merci Mr. multiarch! :023[/quote]
Bon n’étant pas un expert Debian j’ai quand même voulu me lancer car cela fait des mois que je n’arrive pas à installer GE7 sur mon laptop, cela commence à bien faire ! :blush:

J’ai d’abord dépaqueté le deb 64 bits téléchargé sur le site de Google (7.0.3.x je crois).

J’ai ensuite édité le fichier DEBIAN/control afin de virer la dépendance vers ia32-libs. Car maintenant qu’on est passé en multiarch, le paquet ia32-libs n’a plus de raison d’être, c’est tout de moins ce que j’ai compris.

J’ai reconstruit le paquet et là génial je peux enfin l’installer sans problème ! :041

Sauf qu’évidemment à l’exécution, il manquait plein de dépendances non satisfaites.

J’ai alors installé au fur et à mesure les versions i386 des différents libs linkées à googleearh-bin. J’ai vraiment du mal à comprendre pourquoi devoir installer les versions i386 des libs alors que justement c’est censé être le paquet 64 bits ! Mais bref cela marchait plutôt bien, en faisant des ldd sur googleearh-bin il y avait de moins en moins de dépendances non satisfaites (cf. plus bas).

Jusqu’à ce que j’arrive à libGL. J’installe la version i386 et au lieu de me sortir le fait que la lib est manquante il me sort :

./googleearth-bin: error while loading shared libraries: libGL.so.1: wrong ELF class: ELFCLASS64

J’imagine qu’il doit essayer de charger la version 64 bits au lieu de la 32 bits (ou l’inverse?), cela serait donc un problème d’ordre des chemins pour LD ? J’avoue que cela fait des années que je n’ai plus tripatouiller ces histoires de chemins de libs système (et à l’époque il n’y avait même pas toute la problématique 32 vs 64 bits) et j’aurai besoin d’un peu d’aide…

Pour info l’état actuelle de ma config en est là (j’ai donc installé les versions i386 de certaines libs nécessaires à GE, mais pas encore toutes) :

root@entropy:~/software$ ldd /opt/google/earth/free/googleearth-bin linux-gate.so.1 => (0xf771a000) libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xf76d7000) libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xf76d3000) libgoogleearth_free.so => not found libglobalnew.so => not found libQtGui.so.4 => not found libQtNetwork.so.4 => not found libfontconfig.so.1 => /usr/lib/i386-linux-gnu/libfontconfig.so.1 (0xf769c000) libfreetype.so.6 => /usr/lib/i386-linux-gnu/libfreetype.so.6 (0xf75ff000) libcurl.so.4 => not found libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xf74c7000) libXrender.so.1 => /usr/lib/i386-linux-gnu/libXrender.so.1 (0xf74be000) libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xf74ac000) libGL.so.1 => not found libGLU.so.1 => not found librt.so.1 => /lib/i386-linux-gnu/i686/cmov/librt.so.1 (0xf74a2000) libQtCore.so.4 => not found libQtWebKit.so.4 => not found libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf73b5000) libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xf738f000) libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xf722c000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf720f000) /lib/ld-lsb.so.3 => /lib/ld-linux.so.2 (0xf771b000) libz.so.1 => /usr/lib32/libz.so.1 (0xf71f7000) libexpat.so.1 => /lib/i386-linux-gnu/libexpat.so.1 (0xf71cc000) libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xf71a9000) libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xf71a6000) libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xf71a0000)

Plus globalement j’aimerais comprendre pourquoi il est encore si difficile d’installer des programmes 64 bits, même si je comprends bien que le problème initial vient surtout du fait que c’est un programme propriétaire… et que Google ne fait pas forcément des paquets adaptés à la toute dernière version de Debian.

J’imagine aussi qu’à terme, multiarch permettra de faire cohabiter du 32 et 64 bits plus facilement, mais bon pour l’instant c’est pas vraiment facile…

Merci pour votre aide, Vincent.

pour le moment je tourne avec squeeze 32 bits,donc le multiarch ne me concerne pas encore,mais dans ton cas je commencerais par ajouter l’archi 32 bits pour DPKG:

http://wiki.debian.org/Multiarch/HOWTO

je pense que ça devrait résoudre ton histoire.

Salut marcastro,

En fait j’ai déjà rajouté l’architecture 32 bits :

turman@entropy:~$cat /var/lib/dpkg/arch amd64 i386
Et c’est d’ailleurs bien pour cela que j’ai pu installer les versions i386 de la plupart des librairies dont dépend googleearth-bin.

Mais là ça bloque avec libGL.

utilise apt-file pour savoir quel paquet peut fournir libGL.so.1 qui semble te manquer

Le paquet est déjà bien identifié, c’est libgl1-mesa-glx que j’ai installé avec un “apt-get install libgl1-mesa-glx:i386” (j’avais déjà la version 64 bits).

Mais le problème c’est que visiblement il doit d’abord essayer de charger la version 64 bits (et non la version 32 bits) puisqu’en exécutant GE j’ai ça :

La version i386 de libgl1-mesa-glx fournit /usr/lib/i386-linux-gnu/libGL.so.1.2.
La version amd64 de libgl1-mesa-glx fournit /usr/lib/x86_64-linux-gnu/libGL.so.1.2.

Or dans /etc/ld.so.conf.d/, le fichier i486-linux-gnu.conf (contenant le chemin /usr/lib/i386-linux-gnu) doit être chargé avant x86_64-linux-gnu.conf (contenant le chemin /usr/lib/x86_64-linux-gnu), puisqu’apparemment l’ordre du chargement se fait par rapport au nom du fichier de conf.

Du coup la version 32 bits devrait théoriquement être chargée avant celle en 64 bit… mais bon, il faut croire que je dis n’importe quoi :laughing:

Salut,
C’est “drôle” je n’ai pas eu ces problèmes du tout.
Mais… J’avais google-earth installé AVANT avec l’ancienne méthode (celle avec ia32libs), il doit peut-être me rester des bibliothèques utiles que tu n’as pas.

root@sidlol:/usr/lib32# cd /usr/lib; ls -la | grep GL
-rw-r–r-- 1 root root 654 mars 18 19:17 libGL.la
lrwxrwxrwx 1 root root 10 mars 18 19:17 libGL.so -> libGL.so.1
lrwxrwxrwx 1 root root 15 mars 18 19:17 libGL.so.1 -> libGL.so.313.26
-rwxr-xr-x 1 root root 1102096 mars 18 19:17 libGL.so.313.26
root@sidlol:/usr/lib# cd /usr/lib32; ls -la | grep GL
-rw-r–r-- 1 root root 656 mars 18 19:17 libGL.la
lrwxrwxrwx 1 root root 10 mars 18 19:17 libGL.so -> libGL.so.1
lrwxrwxrwx 1 root root 15 mars 18 19:17 libGL.so.1 -> libGL.so.313.26
-rwxr-xr-x 1 root root 855844 mars 18 19:17 libGL.so.313.26

et si tu essayais avec l’ancienne méthode,installer ia32-libs et ensuite installer le.deb 64 bits de google earth de chez google?As tu le paquet lsb-core indispensable pour google earth?

Salut lol,

Oui c’est peut-être pour ça… même si j’avais déjà installé à un moment donné ia32libs sur mon laptop (puisque j’utilisais à un moment GE 6.0 et d’autres trucs qui nécessitait des libs 32 bits).

Mais ce qui est surprenant c’est que /usr/lib32/libGL.so est introuvable, que ce soit avec apt-file ou directement sur packages.debian.org.

Visiblement toutes libs sont maintenant rangées dans /usr/lib/x86_64-linux-gnu ou /usr/lib/x86_64-linux-gnu ou dans /usr/lib/x86_64-linux-gnu. J’imagine que ce changement d’emplacement est complètement lié à la migration vers multiarch…

Mais houra car finalement j’ai installé libgl1-nvidia-glx:i386 et là ça passe enfin !! :041

Bon voila c’est donc un succès même si il y a pas mal de trucs qui m’échappent, notamment le fait de devoir installer toutes les libs en 32 bits alors que c’est un package censé fournir la version 64 bits.

A noter également pour les libs de Qt je n’ai pas installé les versions 32 bits (je ne les ai donc qu’en version 64 bits). D’ailleurs en faisant un ldd elles ne sont toujours pas résolus mais pourtant GE s’exécute parfaitement (!!) :

turman@entropy:~$ldd /opt/google/earth/free/googleearth-bin linux-gate.so.1 => (0xf773d000) libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xf76fa000) libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xf76f6000) libgoogleearth_free.so => not found libglobalnew.so => not found libQtGui.so.4 => not found libQtNetwork.so.4 => not found libfontconfig.so.1 => /usr/lib/i386-linux-gnu/libfontconfig.so.1 (0xf76bf000) libfreetype.so.6 => /usr/lib/i386-linux-gnu/libfreetype.so.6 (0xf7622000) libcurl.so.4 => not found libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xf74ea000) libXrender.so.1 => /usr/lib/i386-linux-gnu/libXrender.so.1 (0xf74e1000) libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xf74cf000) libGL.so.1 => /usr/lib/i386-linux-gnu/libGL.so.1 (0xf73f2000) libGLU.so.1 => not found librt.so.1 => /lib/i386-linux-gnu/i686/cmov/librt.so.1 (0xf73e9000) libQtCore.so.4 => not found libQtWebKit.so.4 => not found libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf72fc000) libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xf72d6000) libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xf7173000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7156000) /lib/ld-lsb.so.3 => /lib/ld-linux.so.2 (0xf773e000) libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf713d000) libexpat.so.1 => /lib/i386-linux-gnu/libexpat.so.1 (0xf7112000) libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xf70ef000) libnvidia-tls.so.304.84 => /usr/lib/i386-linux-gnu/tls/libnvidia-tls.so.304.84 (0xf70eb000) libnvidia-glcore.so.304.84 => /usr/lib/i386-linux-gnu/libnvidia-glcore.so.304.84 (0xf53e5000) libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xf53e2000) libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xf53db000)

Bon au final je suis heureux car GE7 tourne enfin sur mon laptop mais bon j’aimerais quand même un peu mieux comprendre tout ce joyeux bordel de multiarch et de 32 vs 64 bits :unamused:

Edit : @marcastro : ia32-libs n’est plus installable maintenant sous Sid ! Apparemment on est donc obligé d’utiliser la nouvelle méthode (multiarch).

je croyais moi aussi comprendre(un peu) le multiarch mais je vois que j’ai besoin d’explications supplémentaires,quand wheezy passera stable je vais en avoir besoin pour un certain nombre de logiciels comme skype et GE.Mais bon,pas de soucis à se faire,toutes les réponses se trouvent sur ce forum,c’est bien connu.