Pour exécuter une autre version installée d’une formule Homebrew en tant que service d’arrière-plan macOS, arrêtez le service de la formule actuelle, démarrez la formule versionnée sous son propre nom, puis confirmez quel service est en cours d’exécution. Par exemple, si postgresql@16 et postgresql@17 sont tous deux installés, utilisez brew services stop postgresql@16 suivi de brew services start postgresql@17. Le gestionnaire de services de Homebrew utilise launchd de macOS ; sans sudo, il enregistre les services pour qu'ils s'exécutent lors de votre connexion. Manuel brew(1) de Homebrew
1. Trouver les noms des formules installées
Utilisez les propres registres de Homebrew pour vérifier ce qui est installé et l’orthographe exacte des noms de formules :
brew list --versions
brew info postgresql@16
brew info postgresql@17
Remplacez les exemples par les noms de formules de votre service. Une formule versionnée est une formule Homebrew distincte, généralement désignée avec un suffixe @ ; il ne s'agit pas d'une commande permettant de sélectionner une version historique arbitraire d'une même formule. Les formules versionnées disponibles dépendent de ce que Homebrew propose actuellement. Homebrew précise également que l'ensemble des formules versionnées est limité et que certaines peuvent être supprimées avec le temps. Versions des formules Homebrew
Avant de procéder au changement, inspectez la sortie de brew info de chaque formule pour connaître les détails relatifs à son service et les éventuelles notes de migration. Un nouveau nom de formule ne garantit pas que le service puisse réutiliser le répertoire de données ou la configuration de l'ancienne version. Les logiciels de bases de données et les serveurs peuvent présenter des exigences spécifiques de mise à niveau ou de rétrogradation ; suivez le processus de migration documenté pour le logiciel concerné avant de démarrer l'autre version avec des données existantes.
2. Arrêter le service d’une formule et démarrer l’autre
Exécutez les commandes de service sans sudo pour un service qui démarre lors de votre ouverture de session :
brew services stop postgresql@16
brew services start postgresql@17
brew services list
Utilisez les identifiants réels des formules installées à la place des exemples PostgreSQL. brew services stop et start prennent le nom de la formule en argument, ce qui sélectionne le service associé à la formule ciblée. La commande list vous permet ensuite de vérifier l'état du service tel que rapporté par Homebrew. Le manuel documente la gestion des services via launchd et note que la configuration sans sudo utilise ~/Library/LaunchAgents, de sorte qu'elle est limitée à la session de l'utilisateur actuel. Manuel brew(1) de Homebrew
Si la version cible est installée mais que son service n'est pas en cours d'exécution, démarrez-le directement. Si un redémarrage est souhaité pour la même formule, brew services restart FORMULA est documenté ; lors d'un changement de version, le fait d'arrêter explicitement l'ancienne formule et de démarrer la nouvelle rend la transition prévue sans équivoque. N'utilisez pas brew services restart --all pour le basculement d'un service unique, car cela affecte l'ensemble des services Homebrew.
3. Comprendre la distinction entre la sélection d’un service et celle d’une commande
Démarrer une formule versionnée en tant que service ne définit pas nécessairement ses outils en ligne de commande comme étant ceux par défaut dans le Terminal. Homebrew installe chaque formule dans une « keg » versionnée au sein de la « Cellar ». Le fait de lier (« link ») une formule crée des liens symboliques dans le préfixe partagé de Homebrew, tandis que certaines formules versionnées sont marquées comme keg-only et n'y sont pas liées par défaut. Manuel brew(1) de Homebrew, FAQ Homebrew : Que signifie « keg-only » ?
Vérifiez avec brew info FORMULA si la formule est « keg-only » et consultez les instructions fournies pour le PATH. Si vous avez uniquement besoin que le service d'arrière-plan utilise l'autre version, gérez son service par le nom de la formule ; ne supposez pas qu'une modification des liens symboliques soit requise. Évitez brew link --force en guise d'étape générique de basculement : Homebrew prévient que forcer une formule keg-only dans les répertoires partagés peut provoquer des conflits. Directives de Homebrew relatives aux dépendances keg-only
4. Si le service cible ne parvient pas à démarrer
Vérifiez d'abord brew services list et la sortie de brew info de la formule cible. Assurez-vous que l'ancien service s'est bien arrêté et que la nouvelle formule fournit effectivement une définition de service ; la prise en charge des services par Homebrew dépend de l'existence d'une configuration de service dans la formule. Homebrew Formula Cookbook
Ensuite, examinez les journaux et la configuration propres à l'application. Un service peut échouer même si la formule est installée — par exemple parce que sa configuration pointe vers un répertoire de données différent, que le port est déjà utilisé, ou qu'une version ne parvient pas à ouvrir les données existantes. Il s'agit de scénarios relevant du niveau applicatif, et non de correctifs garantis par Homebrew ; consultez la documentation officielle de l'application avant de modifier ou de supprimer des données.
N'utilisez sudo brew services que si vous avez délibérément besoin d'un service s'étendant à tout le système et démarrant au démarrage de l'ordinateur. Homebrew documente ce mode comme fonctionnant dans /Library/LaunchDaemons, alors que le service utilisateur par défaut est lancé à l'ouverture de session. La plupart des services de développement personnel devraient être gérés sous le compte utilisateur qui possède leurs fichiers. Manuel brew(1) de Homebrew
Un basculement réussi s'accompagne donc de deux vérifications : Homebrew indique que la formule souhaitée est active, et l'application elle-même répond comme prévu. L'état du service à lui seul ne valide pas la compatibilité des données et ne prouve pas non plus que les clients en ligne de commande pointent désormais vers cette version de la formule.
Sources
Documentation de Homebrew : brew(1) – The Package Manager for Everywhere — Homebrew
Documentation de Homebrew : Versions des formules — Homebrew
Documentation de Homebrew : FAQ — Homebrew
Documentation de Homebrew : Compiler des logiciels avec des dépendances Homebrew Keg-Only — Homebrew
Documentation de Homebrew : Formula Cookbook — Homebrew