Marre de l’anarchie Windowsienne (partie 1)


Flattr this

Salux !

Tout d’abord, je tiens à m’excuser auprès de Microsoft. J’écris ce billet en étant assez énervé, je risque donc de leur reprocher des choses qui ne sont pas (directement) de leur faute. Pas tout à fait. Quoique.

Je vais vous raconter une histoire pas drôle, l’histoire d’un manchot qui passe une heure à essuyer les plâtres d’un système pas vraiment fini.

Tout commence avec un programme écrit en C++. Aïe. Déjà, les connaisseurs voient la chose venir. Je ne suis ni le premier, ni le dernier à savoir que développer du C++ sur Linux finit TOUJOURS par poser des problèmes sur Windows. Des fois, je me demande si ce n’est pas voulu tellement c’est gros. Mais non ! Aujourd’hui, c’est même pas un problème de code ! Miracle non ?

En fait le miracle c’est d’utiliser Qt. J’ai donc mon appli, toute belle toute propre, joliment écrite et prête à fonctionner sur Windows. Je ne peux pas trop vous en dire plus, c’est pour un client (NDA, tout ça).

Par contre, ce que je peux vous dire, c’est que cette appli, elle a besoin de deux petites choses pour fonctionner : OpenSSL et Tar. Aux dernières nouvelles, c’est pas ce qu’il y a de plus dur à trouver. D’ailleurs, si j’omettais de les inscrire dans les dépendances d’un paquet, ça passerait inaperçu. Pourquoi ? Parce que n’importe quelle distribution Linux l’intègre en natif ! Je dis bien n’im-porte-quelle. J’ai pas vérifié, mais je mettrais ma main à couper qu’il en soit de même sur BSD. Et sur Windows ?

EH BEN NON DUCON ! Faut aller les chercher. Je savais déjà que Windows est assez pauvre en logiciels de base (ironique pour l’OS « mainstream », non ?), ça ne m’a pas choqué plus que ça. Juste conforté dans mes convictions d’anarcho-communo-libriste. Mais bon, je dois être un troll, c’est vrai, qui aurait besoin d’un outil pour chiffrer/signer ou gérer des archives ? Pas grand monde à priori.

Mon client si, alors comme je peux pas lui dire « Utilises Linux, ça te facilitera la vie et la mienne », je m’y colle.

Google. OpenSSL Windows. Je trouve. Quelques liens… Un installeur… Youpi, j’ai l’exe ! Je le copie colle, pour l’instant tout va bien. Je lance la console… BEUUAAA !!! C’est quoi cette antiquité ?? Ah bah oui, sur Windows, il faut savoir une chose : c’est que le terminal n’a pas été mis à jour une seule fois depuis MS-DOS. Cool ! J’agrandis pour y voir plus clair : non non non, le nombre de colonnes est limité. Tu peux pas. Re-cool. J’ai encore plus l’impression d’être sur MS-DOS. Je persiste, je vais dans mon dossier (au passage, le comportement de la touche tab fait peur) et je fais un petit test : « openssl.exe –version ». Enfin une bonne nouvelle, ça m’a l’air de marcher.

Passons à Tar. Google. Tar Windows. Je trouve. Je télécharge. Je parcours la jolie archive et j’extrais « tar.exe ». Ça n’a pas l’air beaucoup plus compliqué : terminal, bon dossier, on exécu… AAAHHHH ! libintl-2.dll manquante. WTF ? Recherche Google : je trouve plein de trucs chelous alors je retourne sur la page de tar. Effectivement, en bas, dependencies, c’est listé. Déjà, je rie un bon coup, parce que n’importe quelle distribution Linux digne de ce nom me l’aurait proposé. Pour tout vous dire, sur Fedora ou Ubuntu, tapez le nom d’un programme qui n’est pas installé et il va même vous indiquer comment l’avoir. Ici, on en est trèèèèès loin. Très très loin.

Re-télécharge, je parcours l’archive, cette fois-ci pour me rendre compte que c’est pas le bon : libintl-4.dll. Zut alors. Retour sur la page, version précédente, par réflexe je clique sur « lib » et re-zut, j’ai des .a. C’est drôle quand même, sur Windows quand on publie une bibliothèque -lib ça veut dire « contient des .a » et -bin « contient des .dll ». Ça me fait doublement rire. Cherchez l’erreur. Rebelote, cette fois c’est la bonne, j’ai réussi. Pfiouf. On extrait, on place (p’tain il devient volumineux le dossier avec toutes ces dépendances) et on re-teste : libiconv-2.dll indisponible. Je google, clique, télécharge, extrait, place, recommence : « tar –version » marche enfin !

Je lance mon application (je vous passe les erreurs de compilation inexplicables par leur cause et leur disparition) et j’essaie la compression + hashage : ça marche pas. Pour changer.

À suivre…

Le Manchot Enragé

Tagué , , , , , , , , , , , , , ,

2 réflexions sur “Marre de l’anarchie Windowsienne (partie 1)

  1. JM dit :

    Je comprends ton désarroi, mais sachant que le client était sur Windows et ne pouvait en changer, n’aurait-il pas été plus simple, plus sûr et surtout moins couteux pour lui de lui développer quelques chose dans un langage qui fonctionne bien sous cet OS…???
    Je comprends que pour un gars comme toi qui a plus que gouté aux années d’avance de Linux sur Windows revenir à développer sur Microsoft est très difficile mais la première de toutes les questions dans le monde pro lorsqu’on a pas les mains totalement libre est de prendre en considération l’environnement de production final, ici Windows… Donc faut mettre de côté les développements dans ton langage favoris et utiliser des choses plus Microsoftiennes ou… passer le bébé à quelqu’un de moins libriste…🙂

    Enfin bon je ne connais pas tous les éléments du projets et à lire ton article je te rejoins à 100% sur le fait que Windows manque cruellement d’ouvertures sur le monde extra-Microsoft!!!

  2. manudwarf dit :

    Je l’ai dit, le problème ne venait absolument pas du code. Tu verras par la suite, un programme en Java ou C# aurait eu EXACTEMENT les mêmes problèmes, puisque j’essayais d’exécuter un programme externe.

    Ceci dit c’est vrai, j’eusse été moins libriste j’aurais codé les fonctions manquantes à la main. J’aurais réinventé la roue une énième fois avec un implémentation foireuse de MD5 ou de bunzip, mais au moins ça aurait marché du premier coup.

Les commentaires sont fermés.

%d blogueurs aiment cette page :