
En juin 2008, je publiais ici un billet sur le verbe abonnir, déniché dans un petit logiciel libre repéré sur Framasoft. Aujourd’hui les trois liens de ce billet renvoient une erreur 404, et le programme, resté sur mon disque, refuse de démarrer. Voici ce qu’il est devenu — et comment le faire tourner quand même.
Abonnir (a-bo-nir)
- V. a. Rendre bon. Les caves fraîches abonnissent le vin.
- V. n. Devenir bon. Le vin abonnit dans la cave. Cet homme n’abonnit pas en vieillissant.
- S’abonnir, v. réfl. Devenir bon. Le vin s’abonnit dans la cave.
- Poterie. Faire sécher la terre à demi, la mettre en état d’être rebattue.
Le titre du billet de 2008 — « je m’abonnis en vieillissant » — retournait à la première personne, et à l’affirmative, l’exemple que Littré donne lui-même au deuxième sens. Retenez-le : il resservira tout en bas de cette page.
Le logiciel s’appelle sobrement Littre. Il a été écrit par Murielle Descerisiers autour de la numérisation XML du dictionnaire menée par François Gannaz, et publié sous licence CeCILL. Version 1.0 en 2008, version 2.0 en 2009, hébergée sur Google Code. C’est un objet attachant : le dictionnaire d’Émile Littré, publié par Hachette entre 1863 et 1872, tenant tout entier dans une trentaine de fichiers .dat et un exécutable unique, sans installation, sans base de données, sans connexion.
Je l’ai retrouvé dans ~/Documents/Littre-linux-2.0/, daté de juillet 2009. Un double-clic, rien. En ligne de commande, un message qui n’aide pas beaucoup. La suite de ce billet raconte les deux réponses possibles : la rapide, et l’autre.
La réponse courte
Si vous voulez simplement consulter le Littré sur un Linux d’aujourd’hui, ne lisez que ceci. Trois solutions, par ordre de simplicité décroissante.
- Le site littre.org — la même numérisation, dans un navigateur, sans rien installer.
- Un paquet de votre distribution —
sudo apt install stardict-xmlittre, ou le même dictionnaire chargé dans GoldenDict. Toujours empaquetés, toujours maintenus. - L’application, version 2.1 — c’est la suite du logiciel de 2009, portée sur Qt 5, et elle existe en 64 bits. Voir juste en dessous : c’est la nouvelle qui manquait au billet de 2008.
Ce que sont devenus les liens de 2008
Les trois adresses dictionnaire-le-littre.googlecode.com que je donnais renvoient un 404 franc : Google Code a fermé en 2016. Mais Google n’a pas jeté les fichiers, il les a déplacés dans un compartiment de stockage que plus personne ne référence. Ces adresses-là fonctionnent encore, je viens de les vérifier une à une :
# Version 2.0 de 2009 — Linux (31,8 Mo), Windows (29,9 Mo), sources (27,1 Mo)
https://storage.googleapis.com/google-code-archive-downloads/v2/
code.google.com/dictionnaire-le-littre/Littre-linux-2.0.tar.bz2
code.google.com/dictionnaire-le-littre/Littre-windows-2.0.exe
code.google.com/dictionnaire-le-littre/Littre-source-2.0.tar.bz2
La page d’archive du projet reste consultable sur code.google.com/archive. Au passage : mon billet pointait la 1.0 alors que la 2.0 était sortie entre-temps.
Le projet n’est pas mort, il a déménagé deux fois
C’est le vrai scoop de cette relecture, et il est enterré assez profond pour que personne ne le trouve. Le logiciel a changé de mains, puis de framework, puis de forge.
| Étape | Où | Dernier signe de vie |
|---|---|---|
| Original Qt 4, par Murielle Descerisiers | Google Code, v1.0 puis v2.0 | 2009 |
| Miroir automatique, avec un appel à l’aide dans le README : « portez-le sur un Qt récent » | GitHub, par Alexandre Honorat | oct. 2016 |
| Portage Qt 5, par Tom Nirrengarten et Roland Chastain | GitLab + SourceForge | fév. 2023 |
Dormant depuis trois ans et demi, donc. Mais pas resté bloqué en 2009 : la version 2.1, publiée en octobre 2022, fournit des binaires Linux 64 bits précompilés. SourceForge affiche quelques téléchargements par semaine, ce qui donne la mesure du problème — le logiciel a été réparé, et l’information n’a atteint personne.
La version 2.1, celle qu’il faut prendre
Je l’ai testée avant de vous l’envoyer. Littre-2.1-portable-linux.zip contient bien un ELF x86-64, et sur une Ubuntu 25.10 il lui manque exactement deux paquets :
$ sudo apt install libqt5printsupport5t64 libqt5xml5t64 $ unzip Littre-2.1-portable-linux.zip -d ~/Littre-2.1 $ chmod +x ~/Littre-2.1/Littre $ cd ~/Littre-2.1 && ./Littre
Sur Debian, les paquets s’appellent libqt5printsupport5 et libqt5xml5, sans le suffixe t64. Le second n’est pas tiré automatiquement par le premier : il faut bien nommer les deux.
Deux avertissements qui vous éviteront de croire à un plantage. D’abord, la fenêtre met une vingtaine de secondes à apparaître : au bout de dix secondes le processus tourne mais l’écran est vide, et c’est normal, il indexe. Ensuite, si un lecteur d’écran ou le bus d’accessibilité est actif — c’est le cas par défaut sous GNOME — le titre de la fenêtre s’affiche « Dictionnaire le Littré (Mode accessible) ». Ce n’est pas un mode dégradé, juste une bascule d’interface.
Détail utile pour l’avenir : la 2.1.1, sortie un mois plus tard, ne contient que les sources. La 2.1 est donc la dernière version accompagnée de binaires. Il existe aussi un installeur littre-2.1-portable-linux.sh daté de 2023 que je n’ai pas essayé — le zip fonctionne, je m’y suis tenu.
→ Télécharger la version 2.1 sur SourceForge
Et si l’on tient à la 2.0 ?
On pourrait s’arrêter là. Sauf que j’avais toujours mon dossier de 2009 sur le disque, et qu’un binaire qui refuse de démarrer, c’est une énigme posée. Ce qui suit ne concerne plus vraiment le Littré : c’est une méthode qui vaut pour n’importe quel exécutable Linux 32 bits orphelin, et il en existe toute une génération.
Le diagnostic
$ file Littre Littre: ELF 32-bit LSB executable, Intel i386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.15 $ ldd Littre n'est pas un exécutable dynamique
Le message de ldd est trompeur : le binaire est parfaitement dynamique, c’est ldd — en 64 bits — qui ne sait pas le charger, faute d’éditeur de liens 32 bits sur le système. Pour voir ses dépendances, il faut passer par readelf, qui lit le fichier sans chercher à l’exécuter :
$ readelf -d Littre | grep NEEDED
libpng12.so.0 libfreetype.so.6 libSM.so.6 libICE.so.6
libXrender.so.1 libfontconfig.so.1 libXext.so.6 libX11.so.6
libz.so.1 libgthread-2.0.so.0 librt.so.1 libglib-2.0.so.0
libdl.so.2 libpthread.so.0 libstdc++.so.6 libm.so.6
libgcc_s.so.1 libc.so.6
Dix-huit bibliothèques, et pas une seule libQt : Qt est lié statiquement, embarqué dans le binaire. strings Littre | grep 'Qt 4' confirme : Qt 4.5.2. C’est une excellente nouvelle — l’essentiel de l’application se suffit à elle-même, il ne manque que la plomberie système.
Sur ces dix-huit, dix-sept sont encore dans les dépôts en version 32 bits. Une seule ne l’est plus, et c’est elle qui bloque tout : libpng12, disparue d’Ubuntu après la 16.04. C’est exactement le mur sur lequel butait, en octobre 2014, un fil du forum ubuntu-fr intitulé « Installer le Littré en 64bits » — libpng12.so.0: wrong ELF class: ELFCLASS64 — un fil qui se conclut par « prends StarDict à la place » et n’a jamais reçu de solution. Douze ans plus tard, il sort toujours en tête des recherches.
Le principe
Une contrainte que je me suis fixée : ne rien installer sur le système. Pas de sudo apt install d’un fatras de paquets 32 bits qui restera là pour toujours. Tout ce qu’il faut tient dans un sous-dossier à côté du binaire, et se désinstalle d’un rm -rf.
C’est possible parce que trois outils se combinent bien : apt-get download récupère un paquet sans les droits root et sans l’installer ; dpkg-deb -x l’extrait n’importe où ; et l’éditeur de liens dynamique, ld-linux.so.2, s’invoque directement avec l’option --library-path, ce qui permet de lancer un programme contre un jeu de bibliothèques choisi.
1. Déclarer l’architecture i386. C’est la seule commande de tout ce billet qui demande les droits root, et elle n’installe rien : elle dit simplement à APT que les paquets 32 bits existent.
$ sudo dpkg --add-architecture i386 $ sudo apt update
2. Télécharger les bibliothèques encore disponibles.
$ cd ~/Documents/Littre-linux-2.0
$ mkdir -p runtime-i386/debs && cd runtime-i386/debs
$ for p in libc6 libgcc-s1 libstdc++6 zlib1g libglib2.0-0t64 \
libpcre2-8-0 libffi8 libatomic1 libfreetype6 libbrotli1 \
libbz2-1.0 libpng16-16t64 libfontconfig1 libexpat1 \
libx11-6 libxcb1 libxau6 libxdmcp6 libbsd0 libmd0 \
libxext6 libxrender1 libsm6 libice6 libuuid1; do
apt-get download ${p}:i386
done
Les noms sont ceux d’Ubuntu 25.10. Les suffixes t64 — la transition vers un time_t 64 bits — n’existent pas sur les distributions plus anciennes ; adaptez.
3. Aller chercher libpng12 dans les archives. Le paquet a quitté les dépôts courants, mais Ubuntu conserve ses vieilles versions sur old-releases. Celle-ci fonctionne, je l’ai vérifiée :
$ curl -O http://old-releases.ubuntu.com/ubuntu/pool/main/libp/\ libpng/libpng12-0_1.2.51-0ubuntu3.15.10.2_i386.deb
C’est le renseignement introuvable de cette histoire. Le reste se déduit ; ça, il faut le savoir.
4. Tout extraire dans un seul dossier.
$ cd .. && for d in debs/*.deb; do dpkg-deb -x "$d" root/; done $ rm -rf debs root/usr/share/doc root/usr/share/man root/usr/share/locale
Il reste 26 Mo. Rien n’a été installé : ces fichiers sont inertes tant qu’on ne les désigne pas explicitement.
Le lanceur, et le piège des accents
Reste à faire dialoguer le binaire avec ce dossier. Le lanceur ci-dessous tient en huit lignes, mais deux d’entre elles méritent une explication.
#!/bin/sh DIR=$(cd "$(dirname "$0")" && pwd) R="$DIR/runtime-i386/root" cd "$DIR" || exit 1 # Sans ceci, Qt retombe en ASCII et le dictionnaire perd ses accents. GCONV_PATH="$R/usr/lib/i386-linux-gnu/gconv" export GCONV_PATH exec "$R/usr/lib/i386-linux-gnu/ld-linux.so.2" \ --library-path "$R/usr/lib/i386-linux-gnu:$R/lib/i386-linux-gnu" \ "$DIR/Littre" "$@"
Le cd n’est pas de la coquetterie : l’application cherche ses fichiers .dat dans le répertoire courant, et se lance sans rien dire si on l’appelle de trop loin.
Quant à GCONV_PATH, c’est le genre de détail qu’on ne trouve qu’en le rencontrant. Les modules de conversion de caractères de la glibc sont eux aussi liés à l’architecture, et le programme 32 bits ne peut pas charger ceux du système 64 bits. Sans cette ligne, Qt annonce dans la console :
QIconvCodec::convertToUnicode: using ASCII for conversion, iconv_open failed
… puis affiche un dictionnaire de la langue française intégralement dépourvu d’accents. Pour le Littré, le comble.
Une entrée de menu, et l’icône volée à la fenêtre
Le logiciel n’a jamais eu de fichier .desktop — un autre fil ubuntu-fr, « Comment créer un lanceur pour le dictionnaire-le-littre », en témoigne. On peut en écrire un, mais il lui faut une icône, et celle-ci est enfouie dans les ressources Qt du binaire.
Il y a plus élégant que de la déterrer : l’application publie elle-même son icône. Toute fenêtre X11 expose la sienne dans une propriété nommée _NET_WM_ICON, en ARGB brut. Il suffit de la lui demander pendant qu’elle tourne.
# l'application doit être en train de tourner
$ WID=$(xwininfo -root -tree \
| grep '"Dictionnaire le Littré": ("Littre"' | awk '{print $1}')
$ xprop -id $WID -notype 32c _NET_WM_ICON > icone.txt
Le fichier obtenu est une liste d’entiers : largeur, hauteur, puis un pixel par valeur. Une douzaine de lignes de Python la reconstituent et la déclinent aux tailles attendues par le thème d’icônes :
import os
from PIL import Image
v = [int(x) for x in open("icone.txt").read().split("=", 1)[1].split(",")]
largeur, hauteur = v[0], v[1]
pixels = v[2 : 2 + largeur * hauteur]
img = Image.new("RGBA", (largeur, hauteur))
img.putdata([((p >> 16) & 255, (p >> 8) & 255, p & 255, (p >> 24) & 255)
for p in pixels])
for t in (16, 22, 24, 32, 48, 64, 128):
d = os.path.expanduser(f"~/.local/share/icons/hicolor/{t}x{t}/apps")
os.makedirs(d, exist_ok=True)
img.resize((t, t), Image.LANCZOS).save(f"{d}/littre.png")
L’icône de la 2.0 est un petit livre relié de rouge, en 128 × 128 — c’est elle qui a donné sa couleur à ce billet.
Le fichier ~/.local/share/applications/littre.desktop peut alors être écrit :
[Desktop Entry] Type=Application Name=Dictionnaire le Littré Comment=Le Littré, dictionnaire de la langue française Exec=/home/vous/Documents/Littre-linux-2.0/littre.sh Path=/home/vous/Documents/Littre-linux-2.0 Icon=littre Terminal=false Categories=Education;Dictionary; Keywords=dictionnaire;littré;français;définition; StartupWMClass=Littre
La dernière ligne est celle qu’on oublie toujours. Elle donne la classe X11 de la fenêtre, et c’est ce qui permet au dock d’associer la fenêtre ouverte à l’icône du lanceur, au lieu d’afficher un carré générique à côté. Un update-desktop-database ~/.local/share/applications pour finir, et le Littré est dans le menu.
Ce que ça vaut au-delà du Littré
Un binaire i386 statiquement lié à Qt, publié en 2009 et jamais recompilé, ce n’est pas un cas isolé : c’est le format de toute une génération de logiciels — utilitaires des années 2000, petits jeux, applications Qt ou GTK dont l’auteur est passé à autre chose. La méthode se transpose telle quelle, et ses propriétés sont ce qui la rend recommandable :
- Une seule commande
sudo, qui ne fait que déclarer une architecture. - Aucun paquet 32 bits installé dans le système, donc aucun conflit avec les mises à jour à venir.
- Tout est dans un sous-dossier, déplaçable avec l’application et supprimable d’un
rm -rf runtime-i386. - La partie difficile — trouver
libpng12, penser àGCONV_PATH— se résume à deux lignes qu’il suffit désormais de copier.
Il y a une limite honnête à poser : cette méthode répare l’exécution, pas le logiciel. Un binaire de 2009 ne recevra aucun correctif ; on ne lui fera pas ouvrir de fichiers venus d’ailleurs. Pour un dictionnaire qui lit trente fichiers de données figés depuis 1872 et ne touche pas au réseau, le risque est à peu près nul. Ce ne serait pas le cas d’un client de messagerie.
Une dernière trouvaille, dans le billet de 2008
En rouvrant l’ancien billet pour le corriger, je suis tombé sur ceci dans son code source :
<p style="-qt-block-indent: 0; text-indent: 0px; margin: 12px 0px;"> <span style="font-weight: 600; background-color: #8b4513; color: #ffffff;"> 2° </span> V. n. Devenir bon. Le vin abonnit dans la cave.
-qt-block-indent est une propriété propriétaire de Qt : elle n’existe dans aucun navigateur, aucun éditeur, aucune feuille de style au monde. Ce fragment n’a donc pas été écrit à la main — il sort de la fonction « exporter l’article en HTML » du logiciel, et a été collé tel quel dans le billet. Le brun #8b4513 et le kaki #f0e68c qui l’accompagnent sont ceux de l’application de 2009.
Autrement dit : une partie de ce billet de 2008 a été écrite par le programme que je viens de remettre en marche. Il tournait dans un coin de mon écran pendant que je recopiais cette ligne.
Le dictionnaire, lui, se porte très bien
Il faut finir en distinguant l’emballage du contenu. Ce qui a vieilli ici, c’est un exécutable. Le patrimoine, c’est la numérisation XML de François Gannaz — toujours en ligne sur Bitbucket, sous licence libre, et c’est elle qui alimente le site littre.org, le paquet stardict-xmlittre et l’application dont il est question ici.
Le logiciel de Murielle Descerisiers peut dormir sur SourceForge ; le Littré numérique, lui, ne risque rien.
« Cet homme n’abonnit pas en vieillissant. »
Littré, exemple du deuxième sens
Dix-huit ans après, la conclusion s’écrit toute seule. Pour illustrer son verbe, Littré avait choisi un homme qui ne s’améliore pas avec l’âge. Son dictionnaire, lui, s’est abonni : mieux numérisé, mieux diffusé, consultable en trois clics. C’est son emballage logiciel qui a mal vieilli — et il aura suffi d’une bibliothèque de 173 kilo-octets, exhumée d’une archive Ubuntu de 2015, pour le remettre debout.
❦
Vérifications. Toutes les commandes de ce billet ont été exécutées le 28 août 2026 sur Ubuntu 25.10 (GNOME, session Wayland ; la 2.0, dépourvue de moteur Wayland, tourne via XWayland). Les liens de téléchargement ont été testés un par un le même jour.
- Version 2.0 : ELF 32 bits i386, Qt 4.5.2 lié statiquement, 18 dépendances.
- Version 2.1 : ELF 64 bits x86-64, Qt 5 dynamique, 2 paquets manquants sur une Ubuntu à jour.
- Environnement 32 bits local : 26 Mo, 26 paquets, zéro installation système.