Détails
Homebrew installe une version spécifique de la formule ?
Comment installer une version spécifique d'une formule dans homebrew ? Par exemple, postgresql-8.4.4 au lieu de la dernière version 9.0.
2061
3
TLDR:
brew install postgresql@8.4.4
Voir réponse ci-dessous pour plus de détails.(J'ai réédité ma réponse pour donner un flux de travail plus complet pour installer/utiliser les anciennes versions de logiciels avec homebrew. N'hésitez pas à ajouter une note si vous avez trouvé l'ancienne version meilleure.*) Commençons par le cas le plus simple :
Vérifier, si la version est déjà installée (mais pas activée)
Quand homebrew installe une nouvelle formule, il la place dans un répertoire versionné comme
/usr/local/Cellar/postgresql/9.3.1
. Seuls les liens symboliques vers ce répertoire sont ensuite installés globalement. En principe, cela permet de basculer assez facilement entre deux versions installées. (*) Si vous utilisez homebrew depuis longtemps et que vous n'avez jamais supprimé les anciennes versions (en utilisant, par exemple,brew cleanup
), il y a de fortes chances pour qu'une ancienne version de votre programme soit toujours là. Si vous voulez simplement activer cette version précédente,brew switch
est le moyen le plus simple de le faire. Vérifiez avecbrew info postgresql
(oubrew switch postgresql
) si l'ancienne version est installée :Nous voyons qu'une ancienne version est déjà installée. Nous pouvons l'activer en utilisant
brew switch
:Vérifions à nouveau ce qui est activé :
Notez que l'étoile
*
a été déplacée vers la nouvelle version activée. () Veuillez noter quebrew switch
ne fonctionne que si toutes les dépendances de l'ancienne version sont toujours présentes. Dans certains cas, une reconstruction de l'ancienne version peut s'avérer nécessaire. Par conséquent, l'utilisation debrew switch
est surtout utile lorsque l'on veut basculer entre deux versions pas trop éloignées l'une de l'autre.* 2) Vérifiez si la version est disponible en tant que tapEn particulier pour les grands projets logiciels, il est très probable qu'il y ait une demande suffisamment importante pour plusieurs versions majeures (potentiellement incompatibles avec les API) d'un certain logiciel. Depuis mars 2012, Homebrew 0.9 fournit un mécanisme pour cela :
brew tap
et le dépôt de homebrew versions. Ce dépôt de versions peut inclure des backports d'anciennes versions pour plusieurs formules. (Principalement seulement les grandes et célèbres, mais bien sûr ils auront aussi plusieurs formules pour postgresql).brew search postgresql
vous montrera où chercher :Nous pouvons simplement l'installer en tapant
Notez que cela a automatiquement tapé le robinet
homebrew/versions
. (Vérifiez avecbrew tap
, supprimez avecbrew untap homebrew/versions
.) Ce qui suit aurait été équivalent :Tant que les formules de la version rétroportée restent à jour, cette approche est probablement la meilleure façon de traiter les anciens logiciels. 3) Essayez une formule du passé
Les approches suivantes sont listées principalement par souci d'exhaustivité. Toutes deux tentent de ressusciter une formule morte-vivante du dépôt de brassage. En raison de dépendances modifiées, de changements d'API dans la spécification de la formule ou simplement d'un changement dans l'URL de téléchargement, les choses peuvent ou non fonctionner. Puisque le répertoire entier de la formule est un dépôt git, on peut installer des versions spécifiques en utilisant des commandes git simples. Cependant, nous devons trouver un moyen d'accéder à un commit où l'ancienne version était disponible. a) temps historiques Entre août 2011 et octobre 2014, homebrew avait une commande
brew versions
, qui crachait toutes les versions disponibles avec leurs hachages SHA respectifs. Depuis octobre 2014, vous devez faire unbrew tap homebrew/boneyard
avant de pouvoir l'utiliser. Comme le nom du robinet le suggère, vous ne devriez probablement le faire qu'en dernier recours. Par exemple.Comme vous pouvez le voir, il est déconseillé de l'utiliser. Homebrew sort toutes les versions qu'il peut trouver avec son heuristique interne et vous montre un moyen de récupérer les anciennes formules. Essayons-la.
Maintenant que l'ancienne version de postgresql est installée, nous pouvons réinstaller la dernière formule afin de garder notre référentiel propre :
brew switch
est votre ami pour changer entre l'ancien et le nouveau. b) Les temps préhistoriques Pour des besoins particuliers, nous pouvons aussi essayer de creuser nous-mêmes dans le repo homebrew.git log -S
recherche tous les commits dans lesquels la chaîne'8.4.4'
a été ajoutée ou supprimée dans le fichierLibrary/Taps/homebrew/homebrew-core/Formula/postgresql.rb
. Nous obtenons deux commits en conséquence.Évidemment,
fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
est le commit qui nous intéresse. Comme ce commit est assez ancien, nous allons essayer de mettre à jour l'installation complète de homebrew (de cette façon, l'API de la formule est plus ou moins garantie d'être valide) :Vous pouvez sauter la dernière commande pour garder la référence dans votre dépôt git. Une remarque : en récupérant l'ancien commit, vous rétrogradez temporairement votre installation homebrew. Vous devez donc faire attention car certaines commandes dans homebrew peuvent être différentes de la version la plus récente. 4) Écrire manuellement une formule
[Ce n'est pas très difficile] (https://docs.brew.sh/How-to-Create-and-Maintain-a-Tap) et vous pouvez ensuite la télécharger dans votre propre dépôt. C'était Homebrew-Versions, mais ce n'est plus le cas. A.) Bonus : épinglage
Si vous voulez garder une certaine version de, disons postgresql, et l'empêcher d'être mise à jour lorsque vous faites la procédure naturelle
brew update ; brew upgrade
, vous pouvez pinner une formule :Les formules épinglées sont listées dans
/usr/local/Library/PinnedKegs/
et une fois que vous voulez apporter les derniers changements et mises à jour, vous pouvez dépingler à nouveau :J'ai découvert une meilleure solution alternative que les autres solutions complexes.
Ceci va télécharger et installer PostgreSQL 8.4.8
J'ai trouvé cette solution en commençant par suivre les étapes de recherche dans le répertoire et un [commentaire] (https://github.com/mxcl/homebrew/commit/edb70c3e29a675c9e4e700b0dea62b22f780b005) dans le répertoire.
Après un peu de recherche, j'ai découvert que quelqu'un avait une collection de formules rares à préparer.
Si vous cherchez MySQL 5.1.x, essayez ceci.
Mise à jour sur la ligne 8 de Library/Formula/postgresql.rb pour
Et MD5 à la ligne 9 en
Sauvegardez et quittez.
A ce stade, vous pouvez rencontrer l'erreur
postgresql could not create shared memory segment
, pour contourner ce problème, mettez à jour le fichier/etc/sysctl.conf
comme ceci :Réessayez
initdb /usr/local/var/postgres
, et tout devrait bien fonctionner.Pour lancer postgresql au démarrage
J'espère que cela vous aidera :)