Archives de Tag: application

Marre de l’anarchie Windowsienne (partie 2)


Flattr this

Salux !

Toujours pas de tar donc. On veut ma peau aujourd’hui. De retour dans le terminal Windows (beuh), j’essaie de compresser ce qui me passe par la main ; sauf que tar cjf me retourne une erreur. La commande serait inconnue. Merde alors, j’ai du zapper un truc… Je retourne sur Linux (Yakuake soit loué) et j’essaie… tar cjf bidule chouette oui c’est bon. Ok ça devient chelou. Cinq minutes de Google plus tard, j’apprends que tar ne permet pas la compression bunzip sur Windows, il faut « bsdtar ». Tellement que ça me saoule, je ne prends même plus le temps de regarder ni pourquoi ni comment. Je télécharges, j’extrais, terminal, bsdtar.exe –version ça marche ! J’essaie la compression, bsdtar.exe archive.tar.bz2 fichiersalacon fonctionne du tonnerre. Je modifie l’application pour spécifier le bon exécutable et apparemment, enfin, ça marche.

Je préviens mes collègues et je leur fournis un joli .zip qui contient l’application. Testons donc, premier lancement sur leur machine : OpenSSL manquant et plus aucun affichage des symboles au format SVG. Je ne vous explique pas le dégoût profond que je commence à développer pour cet OS. Pour OpenSSL, le problème est vite réglé : il lui manquait certaines DLL (POUR CHANGER !!!!). Pour les SVG, je ne vous détaille pas le parcours, mais c’était du genre « faut prendre le contenu du dossier A qui est dans B mais pas A dans C ».

Voilà ! C’est fini, le logiciel fonctionne enfin sur Windows ! Gros soupir de soulagement au sein de l’équipe.

De retour sur Linux, j’explique à mes collègues les problèmes que l’on aura avec la version Windows ; notamment le fait d’intégrer les programmes tiers dans le processus de mise à jour – j’en profite pour leur citer la faille de la libpng qui a contraint une flopée de logiciels à fournir une màj sur Windows, alors que sur Linux le patch a été appliqué sans effets de bord. Et là, comme pour me narguer, j’ai le gestionnaire de mises à jour d’Ubuntu qui me saute à la figure, m’alertant qu’une mise à jour de sécurité importante est disponible pour OpenSSL. Ça, c’est de la coïncidence.

J’ai commencé à aborder un sujet fâcheux : les mises à jour. Et oui, pour ceux qui ne le sauraient pas, les mises à jour sur Windows, c’est À LA MAIN. C’est pas comme si RPM avait été inventé en 1995 non ! J’ai pas trouvé la date d’apparition des premiers dépôts, en tous cas je les ai toujours connus sur Linux (je n’ai commencé qu’en 2005 mais bon). Bref, pour en revenir à Windows, chaque logiciel doit embarquer sa procédure de mise à jour. Il va falloir donc en écrire une (c’est cool !), puisque le logiciel a quelques spécificités techniques (que je ne déballerai pas ici). Je ne vous explique pas la perte de temps.

Conclusion

Il est temps de faire le bilan, et peut-être aussi de modérer mon propos. Difficile de culpabiliser Microsoft, puisqu’à aucun moment je n’ai utilisé une de ses libs. D’ailleurs, il serait aisé de penser que la faute revient pour beaucoup à gnuwin32, qui aurait mal packagé ses applications. Malheureusement, ce n’est pas aussi simple.

Tout d’abord, quel a été mon problème ? La réponse est simple : en bon libriste, je n’avais pas envie de réinventer la roue carrée (mon client me paie pour ça c’est bien connu) et je me suis dit « Tu veux une somme MD5 ? Prends un logiciel qui sait le faire ». Je m’en suis mordu les doigts. Pourquoi ? Parce que Windows, contrairement à Linux, ne permet aucunement de gérer les dépendances tierces. Là est le formidable avantage des dépôts : je précise que j’ai besoin d’OpenSSL, il va me le chercher, me le télécharge, me l’installe et le met à jour pour moi. Elle est pas belle la vie ?

On retrouve une sale pratique qu’ont les développeurs Java : lorsqu’ils ont besoin d’une bibliothèque, ils vont inclure le JAR à l’application. Et si la bibliothèque en question est mise à jour ? Alors là, silence gêné. Timidement, peut-être qu’on me répondra que ça représente une perte de temps alors qu’en l’état actuel, tant que ça marche

Il est surtout difficile d’en vouloir à gnuwin32, premièrement pour leur patience et leur courage (franchement, mon appli, à côté de la leur, c’était du gâteau à porter sur Windows), ensuite parce qu’ils ont voulu reprendre le concept des dépôts en séparant l’application des bibliothèques tierces.

Mais je sens que ça va partir dans un débat d’idées sans fin. Revenons à notre réalité de développeurs et essayons de résumer clairement la situation.

Clairement, porter l’application sur Windows a été un gouffre en terme de temps, et donc en terme d’argent, tout ça pour patcher le retard pachydermique de Windows sur le terrain du déploiement d’applications.

PS: j’omets sciemment de parler de WSUS, ce qui serait hors propos puisque ce dernier, malgré ses qualités, ne s’applique qu’aux réseaux d’entreprises. Un particulier ne pourrait pas utiliser cette technologie pour mettre à jour Firefox ou autre.

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

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é , , , , , , , , , , , , , ,