﻿﻿{"id":2821,"date":"2026-04-23T14:37:49","date_gmt":"2026-04-23T12:37:49","guid":{"rendered":"https:\/\/elearningsamba.com\/index.php\/lastversion-trouver-la-derniere-version-de-nimporte-quoi\/"},"modified":"2026-04-23T14:37:49","modified_gmt":"2026-04-23T12:37:49","slug":"lastversion-trouver-la-derniere-version-de-nimporte-quoi","status":"publish","type":"page","link":"https:\/\/elearningsamba.com\/index.php\/lastversion-trouver-la-derniere-version-de-nimporte-quoi\/","title":{"rendered":"Lastversion &#8211; Trouver la derni\u00e8re version de n&#8217;importe quoi"},"content":{"rendered":"<p>Vous bossez sur un Dockerfile et vous avez besoin de la derni\u00e8re version de nginx. Vous ouvrez GitHub, vous cliquez sur Releases, vous copiez-collez. Et 3 minutes plus tard, rebelote pour curl. Puis pour PHP. Sans parler du fait que dans votre script d&#8217;auto-update, vous avez hardcod\u00e9 une &#8220;v3.2.1&#8221; qui dort l\u00e0 depuis 2023 parce que personne n&#8217;a pris le temps de mettre \u00e0 jour le fichier.<\/p>\n<p>\n<a href=\"https:\/\/github.com\/dvershinin\/lastversion\">Lastversion<\/a><br \/>\n, c&#8217;est le petit CLI Python sign\u00e9 Danila Vershinin qui remplace cette corv\u00e9e par une seule ligne. Vous tapez <code>lastversion apache\/incubator-pagespeed-ngx<\/code> et vous r\u00e9cup\u00e9rez le num\u00e9ro de la derni\u00e8re version.<\/p>\n<p>Le truc marche sur GitHub, GitLab, BitBucket, PyPI, Wikip\u00e9dia, les flux RSS, les plugins WordPress, Helm charts, Gitea, SourceForge&#8230; et m\u00eame sur des sites qui publient leurs versions comme ils veulent, genre nginx.org.<\/p>\n<p>La beaut\u00e9 du bazar, c&#8217;est qu&#8217;il comprend les humains, parce que, c&#8217;est vrai, les mainteneurs font un peu n&#8217;importe quoi avec leurs tags. Ils \u00e9tiquettent <code>release-1.2.3<\/code> au lieu de <code>1.2.3<\/code>, ils marquent des release candidates en stable sans le faire expr\u00e8s, ils changent de format entre <code>v20150121<\/code> et <code>v2.0.1<\/code> sans pr\u00e9venir. lastversion d\u00e9tecte toutes ces incoh\u00e9rences et vous renvoie la v\u00e9ritable derni\u00e8re stable, celle que vous vouliez d\u00e8s le d\u00e9part. C&#8217;est p\u00e9nible \u00e0 g\u00e9rer \u00e0 la main quand vous avez vingt d\u00e9pendances \u00e0 suivre. Maintenant c&#8217;est r\u00e9gl\u00e9 tout seul avec ce petit bidule.<\/p>\n<p>Et les sources exotiques, c&#8217;est tout un d\u00e9lire. <code>lastversion windows<\/code> vous crache le build Windows en cours, <code>lastversion ios<\/code> pour iOS, <code>lastversion rocky<\/code> vous renverra 8.4 et <code>lastversion https:\/\/en.wikipedia.org\/wiki\/Rocky_Linux<\/code> aussi, parce que le bidule va carr\u00e9ment parser la page Wikip\u00e9dia pour vous.<\/p>\n<p>Alors certains d&#8217;entre vous me diront que ce n&#8217;est pas utile au quotidien. Peut-\u00eatre jusqu&#8217;au jour o\u00f9 vous devez scripter une v\u00e9rif de version d&#8217;OS sans d\u00e9pendre d&#8217;un outil syst\u00e8me. Par contre, si vous encha\u00eenez cinquante requ\u00eates par heure sur un token GitHub anonyme, faudra pas s&#8217;\u00e9tonner de manger un rate limit dans la tronche.<\/p>\n<p>C\u00f4t\u00e9 one-liners qui tuent, y&#8217;a d\u00e9j\u00e0 de quoi faire.<\/p>\n<p><code>wget $(lastversion --assets mautic\/mautic)<\/code> t\u00e9l\u00e9charge direct la derni\u00e8re archive.<\/p>\n<p><code>lastversion --pre Aircoookie\/WLED --format assets --filter ESP32.bin -d ESP32.bin<\/code> r\u00e9cup\u00e8re le dernier firmware ESP32 WLED.<\/p>\n<p>Pour Nginx, <code>lastversion https:\/\/nginx.org --major stable<\/code> renvoie <code>1.16.1<\/code> pendant que <code>--major mainline<\/code> renvoie <code>1.17.9<\/code>.<\/p>\n<p>Vous voyez l&#8217;id\u00e9e, c&#8217;est du pipe-friendly pur jus.<\/p>\n<p>Et le mode <code>install<\/code>, c&#8217;est un autre d\u00e9lire. Vous tapez <code>lastversion install mailspring<\/code> et hop, il r\u00e9cup\u00e8re l&#8217;AppImage ou le RPM du d\u00e9p\u00f4t, il l&#8217;installe, et c&#8217;est fini. Attention quand m\u00eame, sur les d\u00e9p\u00f4ts un peu bord\u00e9liques il va parfois se vautrer sur le packaging et juste vous balancer le tarball brut. Bon, c&#8217;est pas la mort, vous d\u00e9zippez \u00e0 la main et vous passez \u00e0 la suite&#8230;<\/p>\n<p>Combin\u00e9 avec cron, <code>@daily \/usr\/bin\/lastversion install mailspring -y<\/code> et votre bureau sera toujours \u00e0 jour sans passer par un store. Pour tous les outils qui ne sont ni dans apt, ni dans un snap, ni dans un flatpak, c&#8217;est l&#8217;alternative la plus propre \u00e0 avoir sous la main.<\/p>\n<p>L&#8217;install se fait via <code>pip install lastversion<\/code> sur \u00e0 peu pr\u00e8s tout, ou <code>yum install lastversion<\/code> apr\u00e8s avoir ajout\u00e9 le repo GetPageSpeed si vous \u00eates sur CentOS, RHEL, Rocky, Alma, Fedora ou Amazon Linux.<\/p>\n<p>Le projet est publi\u00e9 sous licence BSD-2, cod\u00e9 en Python, et il y a aussi une API utilisable directement (<code>from lastversion import latest<\/code>) si vous pr\u00e9f\u00e9rez appeler \u00e7a dans vos scripts plut\u00f4t que de piper dans un subprocess.<\/p>\n<p>Bref, un chouette outil \u00e0 ranger entre vos<br \/>\n<a href=\"https:\/\/korben.info\/redirections-bash-qui-sauvent-ta-vie.html\">redirections bash<\/a><br \/>\net votre<br \/>\n<a href=\"https:\/\/korben.info\/sshm-gestionnaire-ssh.html\">gestionnaire SSH<\/a><br \/>\n, cat\u00e9gorie petits trucs qui font gagner 10 minutes par semaine.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vous bossez sur un Dockerfile et vous avez besoin de la derni\u00e8re version de nginx. Vous ouvrez GitHub, vous cliquez sur Releases, vous copiez-collez. Et 3 minutes plus tard, rebelote pour curl. Puis pour PHP. Sans parler du fait que dans votre script d&#8217;auto-update, vous avez hardcod\u00e9 une &#8220;v3.2.1&#8221; qui dort l\u00e0 depuis 2023 parce que personne n&#8217;a pris le temps de mettre \u00e0 jour le fichier. Lastversion , c&#8217;est le petit CLI Python sign\u00e9 Danila Vershinin qui remplace cette corv\u00e9e par une seule ligne. Vous tapez lastversion apache\/incubator-pagespeed-ngx et vous r\u00e9cup\u00e9rez le num\u00e9ro de la derni\u00e8re version. Le truc marche sur GitHub, GitLab, BitBucket, PyPI, Wikip\u00e9dia, les flux RSS, les plugins WordPress, Helm charts, Gitea, SourceForge&#8230; et m\u00eame sur des sites qui publient leurs versions comme ils veulent, genre nginx.org. La beaut\u00e9 du bazar, c&#8217;est qu&#8217;il comprend les humains, parce que, c&#8217;est vrai, les mainteneurs font un peu n&#8217;importe quoi avec leurs tags. Ils \u00e9tiquettent release-1.2.3 au lieu de 1.2.3, ils marquent des release candidates en stable sans le faire expr\u00e8s, ils changent de format entre v20150121 et v2.0.1 sans pr\u00e9venir. lastversion d\u00e9tecte toutes ces incoh\u00e9rences et vous renvoie la v\u00e9ritable derni\u00e8re stable, celle que vous vouliez d\u00e8s le d\u00e9part. C&#8217;est p\u00e9nible \u00e0 g\u00e9rer \u00e0 la main quand vous avez vingt d\u00e9pendances \u00e0 suivre. Maintenant c&#8217;est r\u00e9gl\u00e9 tout seul avec ce petit bidule. Et les sources exotiques, c&#8217;est tout un d\u00e9lire. lastversion windows vous crache le build Windows en cours, lastversion ios pour iOS, lastversion rocky vous renverra 8.4 et lastversion https:\/\/en.wikipedia.org\/wiki\/Rocky_Linux aussi, parce que le bidule va carr\u00e9ment parser la page Wikip\u00e9dia pour vous. Alors certains d&#8217;entre vous me diront que ce n&#8217;est pas utile au quotidien. Peut-\u00eatre jusqu&#8217;au jour o\u00f9 vous devez scripter une v\u00e9rif de version d&#8217;OS sans d\u00e9pendre d&#8217;un outil syst\u00e8me. Par contre, si vous encha\u00eenez cinquante requ\u00eates par heure sur un token GitHub anonyme, faudra pas s&#8217;\u00e9tonner de manger un rate limit dans la tronche. C\u00f4t\u00e9 one-liners qui tuent, y&#8217;a d\u00e9j\u00e0 de quoi faire. wget $(lastversion &#8211;assets mautic\/mautic) t\u00e9l\u00e9charge direct la derni\u00e8re archive. lastversion &#8211;pre Aircoookie\/WLED &#8211;format assets &#8211;filter ESP32.bin -d ESP32.bin r\u00e9cup\u00e8re le dernier firmware ESP32 WLED. Pour Nginx, lastversion https:\/\/nginx.org &#8211;major stable renvoie 1.16.1 pendant que &#8211;major mainline renvoie 1.17.9. Vous voyez l&#8217;id\u00e9e, c&#8217;est du pipe-friendly pur jus. Et le mode install, c&#8217;est un autre d\u00e9lire. Vous tapez lastversion install mailspring et hop, il r\u00e9cup\u00e8re l&#8217;AppImage ou le RPM du d\u00e9p\u00f4t, il l&#8217;installe, et c&#8217;est fini. Attention quand m\u00eame, sur les d\u00e9p\u00f4ts un peu bord\u00e9liques il va parfois se vautrer sur le packaging et juste vous balancer le tarball brut. Bon, c&#8217;est pas la mort, vous d\u00e9zippez \u00e0 la main et vous passez \u00e0 la suite&#8230; Combin\u00e9 avec cron, @daily \/usr\/bin\/lastversion install mailspring -y et votre bureau sera toujours \u00e0 jour sans passer par un store. Pour tous les outils qui ne sont ni dans apt, ni dans un snap, ni dans un flatpak, c&#8217;est l&#8217;alternative la plus propre \u00e0 avoir sous la main. L&#8217;install se fait via pip install lastversion sur \u00e0 peu pr\u00e8s tout, ou yum install lastversion apr\u00e8s avoir ajout\u00e9 le repo GetPageSpeed si vous \u00eates sur CentOS, RHEL, Rocky, Alma, Fedora ou Amazon Linux. Le projet est publi\u00e9 sous licence BSD-2, cod\u00e9 en Python, et il y a aussi une API utilisable directement (from lastversion import latest) si vous pr\u00e9f\u00e9rez appeler \u00e7a dans vos scripts plut\u00f4t que de piper dans un subprocess. Bref, un chouette outil \u00e0 ranger entre vos redirections bash et votre gestionnaire SSH , cat\u00e9gorie petits trucs qui font gagner 10 minutes par semaine.<\/p>\n","protected":false},"author":1,"featured_media":2822,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"give_campaign_id":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_kadence_starter_templates_imported_post":false,"footnotes":""},"class_list":["post-2821","page","type-page","status-publish","has-post-thumbnail","hentry"],"campaignId":"","_links":{"self":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2821","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/comments?post=2821"}],"version-history":[{"count":0,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2821\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media\/2822"}],"wp:attachment":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media?parent=2821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}