Compiler pngnq-s9 sur Solus et Debian

Pour optimiser la taille de mes illustrations au format .png, j'utilisais encore récemment le site TinyPNG. Toutefois cela me dérangeait de devoir télécharger mes images sur un serveur situé de l'autre côté de l'atlantique. J'ai donc cherché dans les dépôts de la distribution que j'utilise (Debian) quels logiciels me permettraient de faire la même chose directement sur mon ordinateur. C'est ainsi que j'ai essayé puis adopté Pngnq. Il existe d'autres optimiseurs mais c'est avec celui-ci que j'obtiens de manière simple les meilleurs résultats.

Et puis en cherchant les sources de Pngnq pour les compiler sur Solus, la distribution installée sur mon vieux pc portable que j'utilise lorsque j'ai besoin de mobilité, j'ai découvert Pngnq-s9 qui est un fork de Pngnq (plus récent, corrige des bugs et apporte quelques améliorations).

Depuis que Solus est installé sur ce pc, je me surprends à l'utiliser plus souvent. C'est une distribution sympathique et prometteuse, donc j'y ajoute tous mes logiciels habituels ... mais point de Pngnq ou Pngnq-s9 dans ses dépôts ; il faut le compiler. Soit ! Même pas peur, compilons ! Et tant qu'à faire, autant le compiler aussi sur ma Debian pour utiliser le fork qui n'est pas dans les dépôts.

Pour vous donner une idée de l'utilité d'optimiser les .png, voici un exemple avant et après compression :

muguet-2017.pngmuguet-2017-nq8.png

À gauche la version originale fait 37,1 ko, à droite la version compressée avec pngnq-s9 ne pèse plus que 14 ko (soit environ 60% de moins). Visuellement on voit peu de différences.

Je vous laisse imaginer le gain de place avec des images plus lourdes. Des images légères demandent moins de ressources pour être envoyées par mail ou sur le web, ça prend moins de place sur les serveurs et ça donne des pages web qui s'affichent plus rapidement. :-)

Il est bien évidement possible d'ajuster la compression et la qualité finale selon les besoins.

Bon alors, on le compile ce truc ?

Dans ce tutoriel j'explique comment faire pas à pas en utilisant la ligne de commande ... mais, n'en déplaise aux puristes, les premières étapes peuvent aussi se faire à grands coups de clics sauvages via le Software-center de Solus ou Synaptic sur Debian pour l'installation des outils, Firefox ou un autre navigateur pour télécharger les sources, et enfin le gestionnaire de fichiers pour la création du dossier de travail et la décompression de l'archive.

Installons les outils pour compiler :

Sur Solus :

sudo eopkg it -c system.devel

---

Sur Debian (en root) :

apt install build-essential pkg-config checkinstall

Note : checkinstall n'est pas obligatoire mais j'expliquerais son utilité plus loin.

Préparons un dossier de travail :

Commençons par créer un dossier dédié à la compilation afin de ne pas transformer notre /home en grand bazar.

Je pars du principe qu'en ouvrant le terminal vous serez positionnés dans votre /home/toto symbolisé par ~$. Si ce n'est pas le cas vous pouvez vous y déplacer avec la commande cd (où toto est bien sur à remplacer par votre nom d'utilisateur) :

cd /home/toto.

Pour l'exemple je nomme mon dossier dédié à la compilation «compil» mais vous pouvez lui donner un autre nom qui vous convient mieux. Si vous choisissez un autre nom, n'oubliez pas de remplacer compil par le nom que vous aurez choisit dans les commandes.

Créons notre dossier à l'aide de la commande mkdir :

mkdir compil

Déplaçons-nous dans le dossier compil :

cd compil

Téléchargeons les sources :

wget https://sourceforge.net/projects/pngnqs9/files/pngnq-s9-2.0.2.tar.gz

Note : à l'heure où j'écris ces lignes Pngnq-s9 est en version 2.0.2, pensez à vérifier si une nouvelle version est disponible si vous suivez ce tutoriel dans le futur.

Une fois l'archive téléchargée, il faut la décompresser (dans le dossier compil pour ceux qui travaillent en cliquant) :

tar zxvf pngnq-s9-2.0.2.tar.gz

Ps : utiliser l'auto-complétion aide à éviter les erreurs de frappe, pour ça on tape le début du nom du fichier (pngnq par exemple) puis on appuie sur la touche TAB. Et hop ! Magie : le nom complet apparaît. :-)

Lisons la documentation :

Maintenant que l'archive est décompressée, allons lire les fichiers README et INSTALL situés dans compil/pngnq-s9-2.0.2. Perso je ne suis pas puriste alors je les ouvre d'un clic avec mon éditeur de texte (Gedit).

La lecture de ces fichiers nous apprend entre-autres choses que nous aurons besoin de certaines dépendances : libz et libpng en version supérieure à 1.2.8 ; il est précisé que si libpng est installé alors libz l'est aussi (libz étant une dépendance de libpng). On nous rappele aussi la recette de base pour compiler soit ./configure -> make -> make install.

Sur Solus le paquet pour libpng se nomme libpng-devel. On regarde si il est installé avec la commande suivante :

eopkg info libpng-devel

Si le retour de la commande est «Le paquet libpng-devel n'est pas installé» alors on l'installe :

sudo eopkg it libpng-devel

---

Sur Debian le même paquet se nomme libpng-dev. On vérifie qu'il est installé :

apt-cache policy libpng-dev

Si le retour nous dit «installé : (aucun)» alors on l'installe (en root) :

apt install libpng-dev

Pour ceux qui ont fait toutes ces étapes avec des clics, sachez que maintenant on n'a plus le choix : il faut ouvrir le terminal pour continuer. Pas d'inquiétude : compiler c'est aussi facile que faire des crêpes, il suffit de suivre la recette.

Déplaçons-nous d'abord dans le dossier pngnq-s9 décompressé :

cd pngnq-s9-2.0.2

Note : si vous venez juste d'ouvrir le terminal il faut adapter la commande ci-dessus avec le bon chemin, probablement : cd compil/pngnq-s9-2.0.2 ou au pire cd /home/toto/compil/pngnq-s9-2.0.2

Et maintenant, compilons :

Sur Solus :

./configure

Puis :

make

Et pour installer on termine par :

sudo make install

---

Sur Debian :

./configure

Puis :

make

Et on termine par la commande d'installation (en root) :

checkinstall

À la question Should I create a default set of package doc? on tape ENTRÉE puis on écrit une description de notre choix, par exemple pngnq-s9 pour des png légers. Ensuite il faut appuyer 2 fois sur la touche ENTRÉE. À la suite il est proposé de renseigner d'autres choses ou de taper ENTRÉE pour passer. Perso je passe, à vous de voir si vous souhaitez ajouter des infos.

Il ne reste plus qu'à utiliser pngnq-s9 pour optimiser le poids de vos .png. Pour savoir comment l'utiliser et connaître ses options consultez le manuel depuis le terminal (man pngnq-s9) ou celui en ligne.
Perso j'utilise le plus souvent la commande la plus basique et qui va plutôt pas mal :

pngnq-s9 nom-de-mon-image.png

---

Explication sur l'utilisation de checkinstall :

Checkinstall permet de fabriquer un paquet .deb à l'issue de la compilation. L'avantage est que ce paquet pourra être géré par le gestionnaire de paquets et donc permettre une désinstallation propre, complète et facile sans devoir aller chercher et supprimer à la main tous les composants de pngnq-s9.

Il n'y a pas d'équivalent à Checkinstall pour Solus. Si on a peu de logiciels à compiler on y va donc en mode bourrin, et, pour défaire ce qui a été fait, il faudra chercher et supprimer tous les morceaux à la mimine. Par contre si on a beaucoup de choses à compiler je recommande de jeter un œil à l'outil Solbuild pour construire des paquets .eopkg. Lire la documentation officielle et cet exemple en français. Perso pour un seul paquet je n'ai pas voulu m'embêter (la préparation semble un peu plus fastidieuse) mais si j'ai d'autres choses à compiler plus tard, j'essaierai Solbuild pour éviter de trop pourrir ma Solus.

---

Hein quoi ?
Vous auriez préféré la recette pour faire les crêpes ...
Ok, c'est parti !

  • 250 grammes de farine
  • 2 œufs
  • 25 cl de lait
  • 25 cl de bière

On verse la farine dans un récipient type saladier ou cul de poule. On creuse un puits dans lequel on casse les œufs. On mélange au fouet et on ajoute petit à petit la bière et le lait en essayant de ne pas faire de grumeaux. On laisse la pâte reposer au moins 30 minutes puis on fait cuire dans une poêle avec un peu d'huile ou de beurre selon la préférence.

Note : on peut modifier le ratio/bière lait selon les goûts, mettre uniquement du lait, voire le couper avec un peu d'eau (pétillante ou plate) ou avec une lichette de Rhum ou de Grand Marnier ; ou encore utiliser du lait végétal pour changer (amandes - soja - noisettes, c'est pas le choix qui manque) ... finalement la recette des crêpes c'est presque plus complexe que la recette pour compiler. :-O

 

Marque-page barre de chocolat

Marque-page-chocolat.jpg

Ne fond pas dans les mains, ni dans les livres ! Ah zut ; ne fond pas non plus dans la bouche puisque cette micro tablette de chocolat est en papier. Tout a commencé avec la création d'un nouveau modèle de marque page en origami utilisant des menko bicolores. Note : le menko est un modèle classique  […]

Lire la suite

B comme Baleine

Baleine.jpeg

Suite de l'abécédaire dessiné avec le B comme Baleine. Réalisé avec Krita et les brosses de David Revoy. Elles sont chouettes ces brosses, j'aime particulièrement celles pour les crayons de mine et les stylos qui sont pile-poil comme il me faut. Merci à lui ! La brosse à dessiner les veines du bois  […]

Lire la suite

Et waf, le mur de feu applicatif est appliqué

firewall.png

Pour renforcer la sécurité du blog j'ai activé il y a quelques jours une option proposée par mon hébergeur : le WAF. WAF ? C'est quoi ce truc ? Waf est une onomatopée parfois utilisée pour indiquer l'aboiement du chien. WAF (Web Application Firewall) est un pare-feu qui analyse les requêtes http  […]

Lire la suite