On compare souvent l'installation d'un binaire sur un système ouvert et sur un système fermé. Sur Linux, le parcours est exigeant mais permet de maîtriser les risques. Sur Windows, l'installation est simple, mais la maîtrise des risques est limitée. Installer Google Earth Pro sur openSUSE Tumbleweed devient le début d'une enquête méthodique, du premier crash jusqu'à la solution stable.
Rappel des faits
Google Earth Pro reste un outil apprécié : imagerie satellite, mesures, vues 3D, données historiques. Sur Linux, Google le distribue toujours sous la forme d'un paquet .rpm (ou .deb) autonome. Le hic : ce paquet est figé sur des bibliothèques d'une autre époque — un Qt 5.5Bibliothèque graphique sortie en 2015. Google Earth la fournit en interne, sans suivre les versions modernes du système (Qt 5.15 ou Qt 6). de 2015 et un OpenSSL 1.0Bibliothèque cryptographique en fin de vie (EOL). Les distributions actuelles sont passées à OpenSSL 3.x, dont l'interface binaire est incompatible. en fin de vie.
Sur une distribution stableCycle de publication lent, privilégiant la fiabilité et les tests approfondis plutôt que les versions les plus récentes. et conservatrice, ça passe encore. Mais sur une rolling releaseModèle de mise à jour continue où les logiciels sont livrés dès qu'ils sont prêts, sans versions majeures figées. à jour comme openSUSE Tumbleweed, durcie avec SELinux enforcingMode de SELinux où les règles de sécurité sont activement appliquées et bloquent toute action non autorisée. et une session WaylandProtocole d'affichage moderne qui remplace X11. Les applications anciennes prévues pour X11 y fonctionnent via une couche de compatibilité, XWayland., le décalage devient frontal : le paquet s'installe, mais l'application ne s'ouvre pas.
google-earth-pro-stable 7.3.7. C'est précisément ce contexte « durci + à jour » qui fait surgir les blocages.
Le point de départ : un clic, puis rien
Premier réflexe après l'installation : cliquer sur l'icône. Rien ne s'ouvre. Pas de fenêtre, pas de message. Quand une application graphique reste muette, la règle d'or est de la relancer depuis un terminalInterface texte permettant d'exécuter des commandes et de visualiser les messages d'erreur bruts des applications. : c'est là que les vrais messages d'erreur apparaissent.
/opt/google/earth/pro/googleearth-bin
Copié
Et là, le premier indice tombe. Le voyage commence.
Premier obstacle — la pile exécutableZone mémoire de la pile marquée comme exécutable, pratique risquée que les systèmes durcis interdisent. refusée
libcrypto.so.1.0.0: cannot enable executable stack
as shared object requires: Permission denied
Copié
Traduction : la vieille bibliothèqueFichier contenant du code réutilisable (.so sous Linux) que les programmes chargent pour fonctionner. libcrypto embarquée réclame une pile exécutable, et le système refuse. Plutôt que de deviner, on demande à SELinux ce qu'il a bloqué :
sudo ausearch -m avc -ts recent | grep execstack
# avc: denied { execstack } for comm="googleearth-bin" ... permissive=0
Copié
Le verdict est sans appel : un AVC« Access Vector Cache » — la ligne de journal SELinux qui indique précisément quelle action a été refusée, par quel processus et sur quelle ressource. denied { execstack } en mode permissive=0 (donc réellement bloqué). Avant de corriger, une question : est-ce la seule bibliothèque fautive ? On inspecte tous les binaires du dossier pour repérer le drapeau de pile exécutable (RWE) avec la commande for f in; do readelf ; grep -qBoucle shell combinant readelf (lecture des en-têtes ELF) et grep (recherche silencieuse) pour inspecter plusieurs fichiers. :
for f in /opt/google/earth/pro/lib*.so*; do
readelf -l "$f" 2>/dev/null | grep -q 'GNU_STACK.*RWE' && echo "$f"
done
# -> /opt/google/earth/pro/libcrypto.so.1.0.0
Copié
Une seule. Le problème est donc circonscrit : inutile de prendre un marteau pour écraser une mouche.
La bonne porte (et la mauvaise)
🚫 La fausse bonne idée
Face à ce crash, la tentation est grande de prendre un raccourci. Imaginez un interrupteur géant qui éteindrait toutes les caméras de surveillance de votre immeuble, juste pour que vous puissiez ouvrir la porte de votre placard sans être filmé. C'est exactement ce que propose la solution facile (à écarter) :
setsebool -P selinuxuser_execstack on
Cette commande dit à SELinux : « Autorise tous mes programmes à exécuter du code depuis la pile mémoire ». D'un coup, Google Earth tourne, mais vous venez d'offrir un boulevard à n'importe quel virus ou processus malveillant qui passerait par là. À écarter absolument.
🧑⚕️ La méthode chirurgicale
Plutôt que d'affaiblir tout l'organisme, on va opérer une seule cellule : le fichier libcrypto.so qui pose problème. On ne touche pas à la sécurité globale, on retire juste un petit "drapeau" PF_X (un flag) collé sur cette bibliothèque spécifique.
⚠️ Pourquoi SELinux bloque ?
Ici, ce drapeau dit au noyau de Linux : « Cette bibliothèque se réserve le droit d'exécuter du code depuis la zone de la pile mémoire ».
Si le noyau voit ce drapeau PF_X activé, il est obligé de désactiver cette protection pour l'ensemble du processus, car le code lui a promis qu'il en aurait besoin. Or, Google Earth est lancé dans un environnement SELinux strict. En voyant cette demande d'exécution de pile, SELinux dit « Non, pas de compromis » et tue l'application. D'où notre crash.
✅ La sécurité préservée
En retirant ce drapeau, on ne modifie aucun code de la bibliothèque. On efface juste l'étiquette. On dit au noyau : « Rassure-toi, cette bibliothèque n'a pas vraiment besoin d'exécuter sa pile, c'est un résidu de compilation, une vieille habitude des développeurs ». Et dans 99 % des cas, c'est vrai : le code de libcrypto.so tourne très bien sans cette autorisation. En l'effaçant, SELinux cesse de s'alarmer, la protection NX reste active, et la machine reste protégée. On a gagné la bataille sans sacrifier la guerre de la sécurité.
Script Python — l'outil maison
Sur les distributions classiques, on utiliserait l'outil execstack pour nettoyer ce drapeau. Mais sur openSUSE Tumbleweed, cet outil n'est plus maintenu et n'est plus packagé.
Bonne nouvelle : on va se passer de lui. Pour retirer ce fameux drapeau, on n'a besoin de rien d'autre qu'un mini-script Python. Pas de paquet externe à chercher, pas de dépendance à ajouter : Python est déjà installé sur votre système.
Le script à copier
Voici ce petit outil maison. Copiez ce code dans un fichier (par exemple fix_stack.py) et exécutez-le avec python3 fix_stack.py :
#!/usr/bin/env python3
import struct
f = "/opt/google/earth/pro/libcrypto.so.1.0.0"
d = bytearray(open(f, "rb").read())
phoff = struct.unpack_from("<Q", d, 0x20)[0]
phentsize = struct.unpack_from("<H", d, 0x36)[0]
phnum = struct.unpack_from("<H", d, 0x38)[0]
for i in range(phnum):
o = phoff + i * phentsize
if struct.unpack_from("<I", d, o)[0] == 0x6474E551: # PT_GNU_STACK
fl = struct.unpack_from("<I", d, o + 4)[0]
struct.pack_into("<I", d, o + 4, fl & ~0x1) # retire PF_X
open(f, "wb").write(d); print("PF_X retire"); break
Copié
🛠️ Sauvegarde et vérification
Passons à la pratique. Avant toute manipulation, on sauvegarde le fichier :
sudo cp -a /opt/google/earth/pro/libcrypto.so.1.0.0 \
/opt/google/earth/pro/libcrypto.so.1.0.0.bak
Copié
Une fois le script exécuté, on confirme que le drapeau est tombé (le segment doit afficher RW, plus RWE) :
readelf -l /opt/google/earth/pro/libcrypto.so.1.0.0 | grep -A1 GNU_STACK
Copié
🔍 Et pourtant…
On relance. L'erreur a disparu. Victoire ?
Deuxième mur — le crash « signal 6 »
Google Earth has caught signal 6.
Copié
Un signal 6 (SIGABRT)Signal d'« abandon » : le programme s'auto-termine après avoir détecté une condition fatale, souvent via une assertion interne. survient quasi instantanément. Le journal de crash, dans ~/.googleearth/crashlogs/, pointe vers l'initialisation de QtFramework graphique utilisé pour créer des interfaces utilisateur, dont Google Earth embarque une version spécifique. :
QGuiApplicationPrivate::createEventDispatcher
-> QMessageLogger::fatal -> abort
Copié
Le pluginModule externe chargeable à la volée qui étend les fonctionnalités d'un logiciel (ex: plugin xcb de Qt). xcb de ce vieux Qt s'effondre à l'initialisation. Détail crucial : toutes les bibliothèques se chargent correctement — ce n'est donc pas une dépendance manquante, mais l'initialisation graphique elle-même qui échoue, probablement du côté de l'intégration GLXLa couche qui relie OpenGL au serveur X. Le vieux plugin xcb tente d'y accéder en mode matériel et abandonne sur la pile graphique moderne. matérielle.
Par élimination : tester, écarter, recommencer
C'est ici que le dépannage devient un vrai parcours. On émet une hypothèse — « c'est l'OpenGL matérielRendu 3D accéléré par le GPU (carte graphique), rapide mais parfois incompatible avec les vieilles librairies. qui coince » — et on la teste par paliers, en notant ce qui échoue.
Voici les trois commandes (ou variations) que nous avons testées pour isoler le coupable, avec leurs résultats réels (testés sur openSUSE Tumbleweed, session Wayland) :
Option A — La solution (GPU conservé)
QT_QPA_PLATFORM=xcb QT_XCB_GL_INTEGRATION=none /opt/google/earth/pro/googleearth
Résultat : ✅ L'application démarre.
Ce que ça prouve : La cause du crash n'était pas l'OpenGL matériel. Désactiver l'intégration GL du plugin xcb suffit. Le GPU est conservé → 3D fluide.
Option B — L'impasse
QT_QUICK_BACKEND=software QT_XCB_GL_INTEGRATION=none /opt/google/earth/pro/googleearth
Résultat : ❌ Échoue (signal 6).
Pourquoi : Le Qt 5.5 embarqué ne contient aucun plugin Wayland (seuls libqxcb, libqminimal, libqoffscreen et libqlinuxfb sont présents dans plugins/platforms/). Sans QT_QPA_PLATFORM=xcb, l'initialisation de la plateforme échoue. Le crashlog de B s'arrête exactement au même point que le crash d'origine (createEventDispatcher).
Option C — Le repli (rendu logiciel)
QT_QPA_PLATFORM=xcb QT_XCB_GL_INTEGRATION=none LIBGL_ALWAYS_SOFTWARE=1 /opt/google/earth/pro/googleearth
Résultat : ✅ L'application démarre.
Statut : Fonctionne mais force le rendu logiciel (llvmpipe). À réserver si l'option A échoue sur un pilote spécifique, car elle sacrifie inutilement les performances GPU.
La combinaison gagnante est donc la option A : elle isole exactement le point de rupture — l'intégration OpenGL du plugin xcb — et le contourne sans toucher aux performances GPU.
QT_QPA_PLATFORM=xcb QT_XCB_GL_INTEGRATION=none /opt/google/earth/pro/googleearth
Copié
La solution pérenne
Lancer cette variable à la main à chaque fois n'est pas tenable. On confine donc le correctif à Google Earth, via des fichiers utilisateur (qui survivent aux mises à jour du paquet).
Un wrapper dans ~/.local/bin
Placé en tête du PATH, il intercepte le lancement en terminal :
cat > ~/.local/bin/google-earth-pro <<'EOF'
#!/bin/sh
# Le crash venait de l'intégration GL du plugin xcb (Qt 5.5), PAS du GPU.
# Fix retenu (option A, testé 2026-06-20) : forcer la plateforme xcb + désactiver
# l'intégration GL du plugin. L'accélération GPU est CONSERVÉE (3D fluide).
# Repli si A échoue sur un pilote : décommenter la ligne ci-dessous pour
# forcer le rendu logiciel (LIBGL_ALWAYS_SOFTWARE=1).
export QT_QPA_PLATFORM=xcb
export QT_XCB_GL_INTEGRATION=none
# export LIBGL_ALWAYS_SOFTWARE=1 # décommenter pour le repli logiciel
exec /opt/google/earth/pro/googleearth "$@"
EOF
chmod +x ~/.local/bin/google-earth-pro
Copié
Une entrée de menu utilisateur
Pour que le lancement depuis le menu applique aussi les bonnes variables, on crée un raccourci utilisateur appelant le wrapper (remplacez UTILISATEUR par votre login) :
cat > ~/.local/share/applications/google-earth-pro.desktop <<'EOF'
[Desktop Entry]
Version=1.0
Name=Google Earth Pro
Comment=Explore, search and discover the planet
Exec=/home/UTILISATEUR/.local/bin/google-earth-pro %f
Terminal=false
Icon=google-earth-pro
Type=Application
Categories=Application;Network;
EOF
update-desktop-database ~/.local/share/applications
Copié
Terminal ou menu : le contournement s'applique désormais tout seul.
Le parcours en un coup d'œil
| Étape | Symptôme | Cause | Correctif |
|---|---|---|---|
| Installation | Dépendance mesa-libGLU introuvable | Nom de paquet hérité de Fedora | opi mesa |
| Obstacle 1 | cannot enable | libcrypto embarqué refusé par SELinux | Retirer le drapeau PF_X |
| Obstacle 2 | caught signal 6 | Intégration GL du plugin xcb (Qt 5.5) | QT_QPA_PLATFORM=xcb + QT_XCB_GL_INTEGRATION=none |
| Pérennité | Variables à retaper | Lancement non scripté | Wrapper + entrée de menu |
Conclusion : méthode de dépannage et état des lieux du binaire
Au-delà de Google Earth, ce parcours illustre une méthode de résolution applicable à n'importe quel bug :
Rendre l'erreur visible
Relancer depuis un terminal plutôt que de subir un échec silencieux.
Interroger la source
Utiliser SELinux (ausearch) et le journal de crash, au lieu de deviner.
Circonscrire
Vérifier l'étendue réelle du problème (une seule lib ?) avant de corriger.
Tester par élimination
Avancer hypothèse par hypothèse, garder ce qui marche.
Corriger au plus juste
Préférer un correctif ciblé à un interrupteur global qui dégrade tout le système.
Vérifier la correction
Valider en terminal et en graphique.
Commencer par la solution la plus légère
Ne pas ajouter de couches (ex: rendu logiciel) si la solution simple fonctionne déjà avec le GPU.
google-earth-pro 7.3.7 (RPM 64 bits)
Le paquet est en pratique en maintenance minimale. Il embarque sa propre copie de Qt 5.5 (2015) et d'OpenSSL 1.0 (EOL), via un mécanisme de RPATHChemin de recherche de bibliothèques inscrit dans le binaire, qui le force à charger en priorité ses libs internes plutôt que celles du système. qui le fige dans son passé. Packagé pour Fedora/LSB, il fait des suppositions — pile exécutable tolérée, intégration OpenGL matérielle via X11 — que les distributions modernes durcies rejettent par défaut. Conséquence : sur une rolling release, on sera toujours à colmater un décalage. C'est le prix d'un logiciel propriétaire que l'éditeur pousse désormais vers sa version web.
La leçon est plus large que Google Earth : un binaire propriétaire figé sur un instantané de système vieillit mal face à un OS qui, lui, avance. Le contournement présenté ici (option A) est propre, réversible, confiné et conserve l'accélération matérielle — exactement ce qu'on attend d'un correctif sur un poste qu'on tient à garder sûr et performant.
Sources et références
Documentation et discussions
Discussion autour des problèmes de lancement de Google Earth sur openSUSE.
Page officielle de téléchargement des versions de Google Earth Pro.
Page de manuel officielle : le drapeau -c et le bit PF_X que manipule le script Python.
Documentation officielle Qt sur QT_QPA_PLATFORM et l'intérêt de forcer xcb.
Lectures Recommandées SafeITExperts
Si ce dépannage vous a plu, ces articles prolongent la réflexion sur Linux, openSUSE et la résolution de problèmes :
La méthode pour diagnostiquer sans aggraver la situation — l'état d'esprit derrière cet article.
Un autre cas concret de bug openSUSE décortiqué pas à pas.
Quand les dépôts et l'infrastructure d'une distribution vacillent.
Pour aller plus loin dans la compréhension fine d'un système Linux.
