Sortie de Homebrew 6.0.0
(brew.sh)- L’API JSON interne qui regroupe toutes les métadonnées en un seul téléchargement devient l’option par défaut, ce qui accélère les mises à jour et réduit les communications réseau
- L’ancienne variable d’activation
HOMEBREW_USE_INTERNAL_APIest désormais dépréciée
- L’ancienne variable d’activation
- Application du sandbox Bubblewrap sur Linux, avec isolation des étapes de build, test et postinstall comme sur macOS
- Suite aux retours de l’enquête utilisateur, le mode ask devient la valeur par défaut pour les développeurs, avec affichage d’un résumé des dépendances et d’une invite de confirmation lors de
brew installetbrew upgrade - Dans
brew bundle, l’installation parallèle des formulae est désormais activée automatiquement par défaut, avec ajout des extensions npm, krew et du support dewingetsur Windows - Améliorations de performances sur l’ensemble du démarrage et des mises à niveau, dont environ 30 % d’accélération pour
brew leaves - Ajout d’un support initial pour macOS 27 (Golden Gate)
- Avec la fin du support Intel, macOS Intel
x86_64passera en Tier 3 en septembre 2026, puis sera totalement non pris en charge à partir de septembre 2027
- Avec la fin du support Intel, macOS Intel
- Publication et correction de 3 avis de sécurité (contournement de redirection HTTPS→HTTP, exécution de code root en postinstall
.pkg, prise de contrôle de propriété de plist dans/var/tmp) - Ajout de nouvelles commandes comme
brew exec, similaire ànpx, etbrew vulnspour vérifier les vulnérabilités des paquets installés - Introduction de l’install steps framework, qui expose dans l’API JSON les comportements communs de postinstall et de flight sous forme de données DSL littérales, évitant de télécharger et d’évaluer des fichiers Ruby pour les tâches simples
- Application d’un cooldown des téléchargements pour les écosystèmes à risque comme npm et PyPI afin d’atténuer les risques de sécurité côté approvisionnement upstream
2 commentaires
Les ressources sont insuffisantes pour continuer à prendre en charge les Mac Intel, et comme GitHub Actions ne prévoit plus non plus de fournir d’images, Homebrew n’a pas d’autre choix que d’avancer dans ce sens.
Avis sur Hacker News
C’est @bfontaine sur GitHub. J’ai aidé à la maintenance de Homebrew vers 2014~2016, et je suis toujours impressionné de voir Mike continuer à le maintenir depuis plus de 16 ans tout en sortant encore de nouvelles fonctionnalités
La plupart des gestionnaires de paquets Linux ne savent pas séparer les paquets installés par l’utilisateur des paquets système, ce qui rend presque impossible de garder un poste de travail propre et de savoir ce qu’on peut supprimer
En plus, les gestionnaires de paquets natifs sont souvent plus lents à mettre à jour que Homebrew, donc on se retrouve souvent avec des paquets obsolètes
Par curiosité, j’ai migré tout mon environnement de développement au niveau OS de Homebrew+pipx+npm vers https://mise.jdx.dev/, et en pratique ça fonctionne très bien
Beaucoup d’outils s’installent directement depuis les releases GitHub ou leur gestionnaire de paquets correspondant (uv, pnpm, go get, etc.), donc il n’y a pas de code de glue de repackaging ni de retard sur les versions
On peut installer une version arbitraire ou plusieurs versions en parallèle, et changer dynamiquement la version active selon le dossier de travail ou l’environnement
Fait intéressant, Mise ne gère pas vraiment les dépendances, mais dans la plupart des cas ça ne pose pas de problème. Soit pnpm/uv s’en charge, soit ce sont des binaires statiques qui fonctionnent tels quels
J’avais déjà empaqueté une application Python pour Homebrew en récupérant 50 dépendances via
resources, en compilant tout depuis les sources ou en vérifiant manuellement si elles existaient dans Homebrew, en déclarant comme dépendances des toolchains de build de 5 langages, puis en attendant plus d’une heure la CI à chaque mise à jour, avant qu’une mise à jour upstream ne crée une « boucle de dépendances au moment de la build » impossible à résoudre dans HomebrewDu coup, je comprends parfaitement pourquoi Mise a choisi la « voie facile » en s’appuyant directement sur les gestionnaires de paquets propres à chaque langage
La seule chose que je n’ai pas pu remplacer dans mon Brewfile, c’est la CLI Docker nécessaire pour communiquer avec Colima, et pour les casks j’utilise toujours Homebrew. Je recommande d’expérimenter son environnement de développement. Il y a beaucoup d’excellents nouveaux outils en ce moment
Pour ceux qui veulent utiliser Mise sur des paquets Homebrew, il y a https://github.com/kennyg/mise-zerobrew
La plupart des projets utilisent de toute façon Docker, et le PHP local sert à des usages qui n’en ont pas besoin, comme l’analyse statique
J’ai aussi quelques projets qui utilisent Nix, et Nix écrase à peu près tout le reste, mais l’expérience utilisateur globale est encore plus hostile que git
C’était peut-être un problème de mon côté, mais j’ai eu trop de paquets qui posaient problème dans Mise
Je l’ai aussi essayé pour des outils globaux au système, mais ce n’était pas très adapté à des outils comme Helix, NeoVim ou RipGrep, où il suffit grosso modo d’avoir une version récente sans se soucier d’une version précise
Les dépendances dans Mise ne sont pas automatiques, il faut toutes les définir à la main. C’est fait pour éviter les problèmes d’ordre liés aux installations en parallèle. Par exemple, avec
pipx:black, il faut attendre que l’installation de Python soit terminée. C’est le rôle de l’optiondependsde l’outilC’est intentionnel. Mise n’a pas été conçu comme une solution de bootstrap complète à la Homebrew ou Nix, mais comme un overlay posé sur un système existant
Donc on peut gérer Python avec Brew et black avec Mise, et ça fonctionne presque tel quel sans configuration particulière. Je pense que ce choix de conception est une vraie réussite. Ça peut sembler être un inconvénient, mais c’est probablement l’une des principales raisons pour lesquelles les utilisateurs trouvent Mise facile à prendre en main
Homebrew a été un excellent moyen de bootstrapper rapidement un environnement sur des distributions Linux immuables
Il n’y a pas énormément d’utilisateurs, mais d’après https://formulae.brew.sh/analytics/os-version/365d/, des systèmes d’exploitation comme Bazzite (1,28 %), Bluefin (0,49 %) et Aurora (0,28 %) de Universal Blue embarquent Homebrew par défaut
Le dépôt associé est https://github.com/ublue-os/brew
Le fait que, dans la situation classique d’un utilisateur non root, on en soit encore à « on ne peut pas installer XY, mais on peut compiler depuis les sources » est absurde
Homebrew, Mise et Nix comblent aujourd’hui ce vide. Flatpak est plus orienté applis GUI, et Snap… existe
Les trois premières choses que j’installe sont Sublime Text, Homebrew et la dernière version de Bash. Je n’ai aucune intention de passer à Zsh
Les bons outils rendent l’informatique agréable
Je suis récemment revenu de Nix à Homebrew, pour trois grandes raisons
Brew semble mieux prendre en charge les paquets que j’utilise que Nix. Certains paquets Nix donnent l’impression d’être mal maintenus
Le support Mac est aussi meilleur. Certains paquets Nix ont des fonctionnalités désactivées sur macOS, probablement parce que leur mainteneur n’a pas de Mac pour les tester
L’expérience utilisateur est meilleure aussi
Bien sûr, la reproductibilité des environnements Nix et la facilité à créer un flake contenant des paquets précis me manquent, mais dans l’ensemble Brew m’a fait revenir. Cela dit, j’aime toujours Nix et on l’utilise aussi dans mon entreprise
Je me demande où vous utilisez Nix dans votre entreprise. Il y a quelques endroits où ça semble adapté, mais c’est difficile à cerner précisément
Mais en pratique, cela revenait surtout à exécuter
defaultsou un outil intermédiaireJ’ai donc fini par garder Brew et par écrire une fonction idempotente
setupmac()dans monbash_profile. J’utilise Bash 5, et ChatGPT m’a bien aidé en connaissant de chouettes commandesdefaultsAvec le Brewfile que je garde dans mes dotfiles, j’ai pratiquement résolu tous les problèmes de configuration d’un nouveau compte ou d’un nouveau Mac, donc je n’ai pas besoin d’outils aussi ambitieux
Homebrew est un projet à but non lucratif géré entièrement par des bénévoles, pas par des salariés
Il faut des fonds pour payer l’intégration continue, les logiciels, le matériel et l’hébergement nécessaires aux améliorations futures
Puisque tous les dons servent à améliorer Homebrew pour les utilisateurs, cela vaut la peine d’envisager un soutien régulier via GitHub Sponsors, OpenCollective ou Patreon
J’ai beaucoup donné à des projets open source dont je bénéficie, mais je n’avais jamais vraiment réfléchi à Homebrew, donc je vais le soutenir maintenant
Je me demande s’il ne serait pas possible d’ajouter une sorte de mécanisme de cooldown à Homebrew
Les seules entités auxquelles j’ai envie de faire confiance pour déployer rapidement du nouveau code sur ma machine sont Apple et les navigateurs. Les navigateurs traitent plus d’entrées non fiables que n’importe quoi d’autre
Pour tout le reste — vscode et ses extensions, npm, homebrew, les applications à mise à jour automatique — je préfère attendre quelques jours
Quelques 0-day exceptionnels peuvent nécessiter de contourner ce cooldown, mais même aujourd’hui l’utilisateur reste vulnérable à un 0-day tant qu’il n’exécute pas
brew upgradeDe plus, pour les éléments empaquetés à partir de NPM/PyPI/RubyGems qui sont visés par ce type d’attaque, un cooldown est déjà appliqué au moment du packaging et lors de la création des PR de mise à jour vers une nouvelle version
--minimum-release-ageouminimumReleaseAgepour réduire la vulnérabilité aux attaques de la chaîne d’approvisionnementCe genre d’attaques est souvent détecté dans les quelques jours qui suivent une compromission
Exemple côté Bun : https://bun.com/docs/pm/cli/install#minimum-release-age
brew set-channel stable/edgeCette semaine, juste après l’annonce d’Elixir 1.20, je n’avais que quelques minutes pour l’essayer et j’étais agacé que Brew soit à la traîne
erl et elixir peuvent aussi s’installer autrement, et personnellement je préfère leur toolchain native, mais à ce moment-là cela ne valait pas l’effort
Brew a ou avait des options de compilation depuis les sources pour certaines recettes, et en plissant un peu les yeux, on peut voir ça comme une solution de base aussi
Il y a des exceptions quand l’auteur ouvre une PR sur Homebrew core ou publie son propre tap. Je me demande comment Arch gère cela
Bravo à toutes les personnes qui rendent Homebrew possible. Cela vaut le coup d’envisager de soutenir le projet : https://opencollective.com/homebrew
La fin du support Intel semble agressive
Presque tous les passionnés qui utilisent des Mac comme serveurs emploient de vieilles machines, et la plupart sont des Intel. Ils perdront le support un an avant Apple
Je comprends que le support Intel soit pénible et relève d’un choix, mais je pense que Homebrew devrait chercher un moyen de le maintenir aussi longtemps que possible
À mon avis, les gens qui utilisent d’anciens Mac comme serveurs ne dépassent pas le niveau d’une erreur d’arrondi
Si vous avez besoin du support Intel, MacPorts fonctionne encore jusqu’à Leopard
--no-quarantinea aussi été suppriméeDe nos jours, je n’utilise Homebrew que pour quelques casks et j’essaie de l’éviter autant que possible. Pour les outils CLI, j’utilise Nix, Home-Manager et Nix-Darwin
J’ai personnellement arrêté d’utiliser Homebrew après avoir subi trop de mises à niveau forcées impossibles à bloquer
J’utilise maintenant une combinaison de Mise et MacPorts pour éviter les casses imprévues et l’obsolescence forcée
En plus, Mise permet de passer à n’importe quelle nouvelle version, alors qu’avec Homebrew il faut attendre que le Tap décide quand effectuer la mise à niveau. Le Tap
llama.cppsaute parfois dix releases d’un coupBeaucoup de travail a été fait pour que les mises à niveau n’aient lieu que lorsqu’elles sont vraiment nécessaires et pour les afficher à l’utilisateur avant qu’elles ne se produisent, et cela fait aussi partie de cette release
J’utilise MacPorts depuis des années pour installer les outils de développement, et c’est bien plus cohérent, sans nouvelle version majeure de Python qui surgit aléatoirement pour te surprendre
Je n’utilise Homebrew que pour installer des applications comme Firefox, Slack et Spotify, qui ne sont pas disponibles dans MacPorts
Bien sûr, cela fait des années que j’essaie de migrer Python vers uv et nodejs vers pnpm, donc ce n’est peut-être plus vraiment un gros problème pour moi maintenant
Mon iMac de tous les jours se retrouve désormais dans le bucket Tier-3 « va te faire voir »
J’ai vraiment adoré Homebrew pendant la courte période où j’ai pu l’utiliser, mais je n’ai aucune intention de monter sur le tapis roulant des mises à niveau matérielles juste pour continuer à m’en servir