Sur une vieille installation Ubuntu, une mise à jour ou une suppression de paquet peut échouer avec une erreur de ce type :
xulrunner-bin: error while loading shared libraries: libhunspell-1.2.so.0: cannot open shared object file: No such file or directoryLangage du code : CSS (css)
Cette erreur signifie qu’un programme lié à XULRunner essaie de démarrer, mais qu’il ne trouve plus une bibliothèque partagée nécessaire, ici libhunspell-1.2.so.0.
Le problème est surtout historique. XULRunner appartenait à l’écosystème Mozilla et servait à exécuter des applications basées sur XUL. Il a notamment accompagné d’anciennes versions de Firefox, Thunderbird ou d’applications construites avec la plateforme Mozilla. Aujourd’hui, il n’a plus vraiment de place sur une Ubuntu moderne.
Donc, si vous tombez encore sur cette erreur, vous êtes probablement face à un vieux paquet cassé, une mise à niveau ancienne, une dépendance orpheline ou une application Mozilla préhistorique qui refuse de partir dignement. Bref, un fossile qui mord encore.
Ce qu’était XULRunner
XULRunner était un environnement d’exécution Mozilla. Il permettait de lancer des applications utilisant XUL, le langage d’interface historiquement utilisé par Mozilla.
Dans les anciennes versions d’Ubuntu, XULRunner pouvait être installé comme paquet séparé. Il servait parfois à Firefox, Thunderbird, Songbird, KompoZer ou d’autres applications construites autour de technologies Mozilla.
Sur les distributions actuelles, vous ne devriez normalement plus avoir besoin de XULRunner. Si un vieux paquet xulrunner-1.9.2 traîne encore dans le système, l’objectif raisonnable est généralement de le supprimer proprement, pas de le ressusciter.
Pourquoi l’erreur libhunspell apparaît
Le message indique que xulrunner-bin cherche une bibliothèque précise :
libhunspell-1.2.so.0Langage du code : CSS (css)
Hunspell est une bibliothèque de correction orthographique. Les anciennes applications Mozilla pouvaient l’utiliser pour la correction dans les champs texte, les emails ou les éditeurs intégrés.
Le problème est que les versions de bibliothèques évoluent. Sur une Ubuntu plus récente, vous pouvez avoir une version moderne de Hunspell, mais plus l’ancienne bibliothèque exactement nommée libhunspell-1.2.so.0.
Résultat : quand le script de suppression du paquet tente d’exécuter xulrunner-bin, le binaire échoue avant même de faire son travail. Et comme ce script échoue, dpkg refuse de terminer la désinstallation. Le paquet est cassé, et il bloque sa propre sortie. Très élégant. Très Linux 2010.
Vérifier si XULRunner est encore installé
Commencez par vérifier les paquets liés à XULRunner :
dpkg -l | grep -i xulrunner
Vous pouvez aussi chercher les fichiers restants :
find /usr -iname '*xulrunner*' 2>/dev/null
find /var/lib/dpkg/info -iname '*xulrunner*' 2>/dev/nullLangage du code : JavaScript (javascript)
Si vous ne voyez rien, l’erreur vient peut-être d’une application Mozilla ancienne ou d’un binaire installé manuellement. Dans ce cas, cherchez le binaire concerné :
command -v xulrunner
command -v xulrunner-bin
Sur une Ubuntu moderne, ces commandes ne devraient généralement rien retourner.
Vérifier l’état de dpkg et apt
Si l’erreur apparaît pendant une mise à jour ou une suppression de paquet, vérifiez d’abord l’état du gestionnaire de paquets :
sudo dpkg --audit
Puis tentez une réparation classique :
Vos mises à jour vous font peur ?
PHP 8.x qui casse un plugin, un thème qui n'est plus maintenu, une mise à jour de WooCommerce qui change tout — je gère les montées de version proprement, avec environnement de staging et rollback prévu.
Mettons votre stack à jour sans risque →sudo apt --fix-broken install
sudo dpkg --configure -a
Si ces commandes échouent toujours à cause de xulrunner-bin, passez à la correction ciblée.
Solution historique : neutraliser le script prerm cassé
Si le paquet cassé est xulrunner-1.9.2, l’erreur peut venir du script de pré-suppression :
/var/lib/dpkg/info/xulrunner-1.9.2.prermLangage du code : JavaScript (javascript)
Ce script est exécuté par dpkg avant la suppression du paquet. S’il appelle un binaire qui ne peut plus démarrer, la suppression échoue.
Commencez par sauvegarder le fichier :
sudo cp /var/lib/dpkg/info/xulrunner-1.9.2.prerm /root/xulrunner-1.9.2.prerm.backupLangage du code : JavaScript (javascript)
Éditez-le ensuite :
sudo nano /var/lib/dpkg/info/xulrunner-1.9.2.prermLangage du code : JavaScript (javascript)
Remplacez son contenu par ce minimum :
#!/bin/sh
set -e
exit 0Langage du code : JavaScript (javascript)
Enregistrez, puis rendez le fichier exécutable si nécessaire :
sudo chmod 0755 /var/lib/dpkg/info/xulrunner-1.9.2.prermLangage du code : JavaScript (javascript)
Vous pouvez maintenant purger le paquet :
sudo dpkg -P xulrunner-1.9.2Langage du code : CSS (css)
Si dpkg refuse encore, utilisez seulement en dernier recours :
sudo dpkg -P --force-all xulrunner-1.9.2Langage du code : CSS (css)
La version --force-all doit rester une option de dépannage ciblée. Ne l’utilisez pas comme aspirateur universel à paquets cassés. Il aspire aussi les orteils.
Réparer apt après la purge
Une fois XULRunner supprimé, réparez l’état du système de paquets :
sudo dpkg --configure -a
sudo apt --fix-broken install
sudo apt update
sudo apt full-upgrade
Nettoyez ensuite les paquets inutiles :
sudo apt autoremove --purge
Vérifiez qu’il ne reste plus de paquet XULRunner :
dpkg -l | grep -i xulrunner
Si la commande ne retourne rien, le paquet est parti.
Pourquoi ne pas créer un lien symbolique vers une autre libhunspell ?
Vous trouverez parfois des “solutions” consistant à créer un lien symbolique :
sudo ln -s /usr/lib/.../libhunspell-1.7.so.0 /usr/lib/.../libhunspell-1.2.so.0
Je déconseille cette méthode sauf dépannage très temporaire et parfaitement compris. Deux bibliothèques avec des noms proches ne garantissent pas la même ABI. Le programme peut démarrer, puis planter plus loin, ou pire, mal se comporter silencieusement.
Pour un vieux paquet comme XULRunner, la bonne correction consiste à purger le paquet cassé, pas à tromper l’éditeur de liens avec une bibliothèque moderne déguisée en vieille dépendance.
Diagnostiquer une erreur “error while loading shared libraries”
L’erreur error while loading shared libraries n’est pas propre à XULRunner. Elle peut toucher n’importe quel binaire Linux.
Exemple :
./programme: error while loading shared libraries: libexample.so.1: cannot open shared object file: No such file or directoryLangage du code : JavaScript (javascript)
Pour diagnostiquer, commencez par localiser le binaire :
command -v programme
Puis listez ses dépendances :
ldd /chemin/vers/programme
Les bibliothèques manquantes apparaissent avec not found :
libexample.so.1 => not foundLangage du code : PHP (php)
Pour chercher quel paquet fournit une bibliothèque sur Ubuntu, installez apt-file :
sudo apt update
sudo apt install apt-file
sudo apt-file update
Puis cherchez la bibliothèque :
apt-file search libexample.so.1Langage du code : CSS (css)
Si la bibliothèque appartient à un paquet disponible pour votre version d’Ubuntu, installez ce paquet. Si elle n’existe plus, vous avez probablement un binaire trop ancien pour votre système.
Mettre à jour le cache des bibliothèques avec ldconfig
Si la bibliothèque existe bien sur le disque, mais que le programme ne la trouve pas, mettez à jour le cache de l’éditeur de liens :
sudo ldconfig
Vérifiez si la bibliothèque est connue :
ldconfig -p | grep libhunspell
Si elle est dans un chemin non standard, vérifiez les fichiers dans :
/etc/ld.so.conf
/etc/ld.so.conf.d/
Évitez d’utiliser LD_LIBRARY_PATH comme rustine permanente. Cette variable peut aider au diagnostic, mais elle rend les comportements difficiles à maintenir et peut créer des problèmes de sécurité ou de compatibilité.
Cas moderne : vieux Firefox ou Thunderbird téléchargé manuellement
Sur une Ubuntu actuelle, l’erreur peut apparaître si vous essayez de lancer une très vieille version de Firefox ou Thunderbird téléchargée manuellement.
Par exemple, un vieux binaire peut chercher :
libdbus-glib-1.so.2
libgtk-x11-2.0.so.0
libstdc++.so.6
libnss3.so
libhunspell-1.2.so.0Langage du code : CSS (css)
Le diagnostic est le même :
ldd ./firefox-bin | grep 'not found'Langage du code : JavaScript (javascript)
Si les bibliothèques manquantes ne sont plus disponibles dans les dépôts, ne forcez pas l’installation de vieux paquets pris au hasard. Utilisez une version actuelle du logiciel, un conteneur, une machine virtuelle ancienne, ou une AppImage/Flatpak/Snap maintenue si elle existe.
Une application de 2010 sur Ubuntu actuelle, c’est comme un pneu de vélo sur une Tesla : avec assez de ruban adhésif, peut-être. Mais non.
Cas Thunderbird ou Firefox installé par apt, snap ou flatpak
Si Firefox ou Thunderbird vient des dépôts Ubuntu, de Snap ou de Flatpak, ne cherchez pas à corriger les bibliothèques à la main. Réinstallez proprement le paquet correspondant.
Pour un paquet apt :
sudo apt update
sudo apt install --reinstall firefox thunderbird
Pour Firefox en Snap :
snap list firefox
sudo snap refresh firefoxLangage du code : PHP (php)
Pour une application Flatpak :
flatpak list | grep -Ei 'firefox|thunderbird'
flatpak updateLangage du code : PHP (php)
Les formats modernes embarquent ou isolent une partie des dépendances. C’est justement fait pour éviter ce type de chasse à la bibliothèque perdue.
Si apt est bloqué par un paquet cassé
Quand apt est bloqué par un vieux paquet cassé, procédez dans cet ordre :
- Identifier le paquet exact avec
dpkg --audit. - Lire l’erreur complète de
dpkg. - Sauvegarder le script de maintenance cassé dans
/var/lib/dpkg/info/. - Neutraliser seulement le script fautif si nécessaire.
- Purger le paquet cassé.
- Relancer
dpkg --configure -a. - Relancer
apt --fix-broken install. - Faire une mise à jour complète.
Les scripts de maintenance Debian peuvent être :
.preinst: avant installation ;.postinst: après installation ;.prerm: avant suppression ;.postrm: après suppression.
Ne modifiez que le script du paquet cassé, et seulement si vous comprenez pourquoi il échoue. Là, c’est de la chirurgie dpkg, pas du rangement de tiroir.
Commandes utiles de diagnostic
# Paquets XULRunner encore présents.
dpkg -l | grep -i xulrunner
# État des paquets cassés.
sudo dpkg --audit
# Réparer dpkg et apt.
sudo dpkg --configure -a
sudo apt --fix-broken install
# Trouver les fichiers xulrunner.
find /var/lib/dpkg/info -iname '*xulrunner*' 2>/dev/null
find /usr -iname '*xulrunner*' 2>/dev/null
# Vérifier les dépendances d’un binaire.
ldd /chemin/vers/binaire
# Afficher les bibliothèques manquantes.
ldd /chemin/vers/binaire | grep 'not found'
# Chercher quel paquet fournit une bibliothèque.
sudo apt install apt-file
sudo apt-file update
apt-file search libhunspell-1.2.so.0
# Mettre à jour le cache des bibliothèques.
sudo ldconfig
# Voir les bibliothèques Hunspell connues.
ldconfig -p | grep hunspellLangage du code : PHP (php)
Checklist de correction
- Identifier si l’erreur vient d’un paquet
xulrunnerou d’un vieux binaire Mozilla. - Vérifier les paquets avec
dpkg -l | grep -i xulrunner. - Vérifier l’état de
dpkgavecsudo dpkg --audit. - Tenter
sudo apt --fix-broken install. - Si le paquet bloque sa suppression, sauvegarder son script
.prerm. - Neutraliser uniquement le script cassé si nécessaire.
- Purger le paquet
xulrunner-1.9.2. - Relancer
sudo dpkg --configure -a. - Relancer
sudo apt --fix-broken install. - Éviter les liens symboliques hasardeux vers d’autres versions de bibliothèques.
- Utiliser
lddpour diagnostiquer les bibliothèques manquantes. - Remplacer les vieux binaires Mozilla par des versions maintenues.
Besoin d’aide pour réparer un vieux système Ubuntu ou Debian ?
Besoin d’un administrateur Linux pour débloquer apt ou dpkg ?
Si une mise à jour Ubuntu ou Debian est bloquée par un paquet cassé, une bibliothèque manquante, un script dpkg défaillant ou une ancienne dépendance impossible à supprimer, je peux vous aider à remettre le système dans un état propre.
J’interviens sur les serveurs Linux, postes Ubuntu, Debian, environnements WordPress et VPS pour diagnostiquer les dépendances, réparer apt, débloquer dpkg, nettoyer les paquets obsolètes et sécuriser les mises à niveau.
- Réparation de paquets cassés, scripts
preinst,postinst,prermetpostrm. - Diagnostic de bibliothèques partagées manquantes avec
ldd,ldconfigetapt-file. - Nettoyage de vieilles dépendances Ubuntu/Debian.
- Préparation de migrations système et mises à jour majeures.
- Intervention documentée, sans bricolage irréversible.
Vous voulez éviter qu’un vieux paquet Mozilla bloque toute la machine ? Contactez-moi. Je vous aiderai à réparer proprement le système et à préparer la suite.
FAQ : xulrunner-bin et bibliothèques partagées
Qu’est-ce que XULRunner ?
XULRunner était un environnement d’exécution Mozilla utilisé par d’anciennes applications basées sur XUL. Il n’est plus nécessaire sur une Ubuntu moderne dans la plupart des cas.
Pourquoi xulrunner-bin cherche libhunspell-1.2.so.0 ?
Parce que le binaire a été compilé pour une ancienne version de Hunspell. Si cette bibliothèque n’existe plus sur le système, le binaire ne peut pas démarrer.
Faut-il réinstaller libhunspell-1.2.so.0 ?
Pas forcément. Pour un vieux paquet XULRunner, la meilleure solution consiste souvent à purger le paquet cassé. Réinstaller une vieille bibliothèque peut créer plus de problèmes qu’elle n’en résout.
Pourquoi modifier le fichier xulrunner-1.9.2.prerm ?
Parce que dpkg exécute ce script avant de supprimer le paquet. Si le script lance xulrunner-bin et que ce binaire échoue, la suppression du paquet échoue aussi. Neutraliser le script permet de purger le paquet.
Est-ce dangereux de modifier un fichier dans /var/lib/dpkg/info ?
Oui, si vous le faites au hasard. C’est une méthode de réparation ciblée pour un paquet cassé. Sauvegardez toujours le fichier avant modification et ne touchez qu’au script du paquet concerné.
Comment diagnostiquer une bibliothèque partagée manquante ?
Utilisez ldd /chemin/vers/binaire. Les dépendances absentes apparaissent avec not found. Cherchez ensuite le paquet correspondant avec apt-file search nom_bibliotheque.
Sources
- SkyMinds : article original sur xulrunner-bin et libhunspell
- Ask Ubuntu : XULRunner n’est plus disponible dans les dépôts Ubuntu 12.04
- Stack Overflow : XULRunner is not available in Ubuntu
- Ubuntu Manpages : dpkg
- Ubuntu Manpages : ldconfig
- Ubuntu Manpages : ldd
- Ubuntu Manpages : apt-file
- SkyMinds : résoudre l’erreur “Cannot set LC_ALL to default locale”
- SkyMinds : créer un fichier swap pour optimiser un VPS
- SkyMinds : résoudre “mount: unknown filesystem type exfat”
Vos mises à jour vous font peur ?
PHP 8.x qui casse un plugin, un thème qui n'est plus maintenu, une mise à jour de WooCommerce qui change tout — je gère les montées de version proprement, avec environnement de staging et rollback prévu.
Mettons votre stack à jour sans risque →


