Question Homebrew installer une version spécifique de la formule?


Comment installer une version spécifique d'une formule en homebrew? Par exemple, postgresql-8.4.4 au lieu de 9.0.


1709
2017-10-21 12:58


origine


Réponses:


(J'ai réédité ma réponse pour donner un flux de travail plus complet pour l'installation / utilisation de versions de logiciels plus anciennes 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:

1) Vérifiez si la version est déjà installée (mais pas activée)

Lorsque homebrew installe une nouvelle formule, il le place dans un répertoire versionné comme /usr/local/Cellar/postgresql/9.3.1. Seuls les liens symboliques vers ce dossier sont ensuite installés globalement. En principe, cela facilite le basculement entre deux versions installées. (*)

Si vous avez utilisé l'homebrew plus longtemps et que vous n'avez jamais supprimé les anciennes versions (en utilisant, par exemple, brew cleanup), il y a de fortes chances qu'une ancienne version de votre programme soit toujours disponible. Si vous voulez simplement activer cette version précédente, brew switch est le moyen le plus facile de le faire.

Vérifier avec brew info postgresql (ou brew switch postgresql <TAB>) si l'ancienne version est installée:

$ brew info postgresql
postgresql: stable 9.3.2 (bottled)
http://www.postgresql.org/
Conflicts with: postgres-xc
/usr/local/Cellar/postgresql/9.1.5 (2755 files, 37M)
  Built from source
/usr/local/Cellar/postgresql/9.3.2 (2924 files, 39M) *
  Poured from bottle
From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/postgresql.rb
# … and some more

Nous voyons qu'une version plus ancienne est déjà installée. Nous pouvons l'activer en utilisant brew switch:

$ brew switch postgresql 9.1.5
Cleaning /usr/local/Cellar/postgresql/9.1.5
Cleaning /usr/local/Cellar/postgresql/9.3.2
384 links created for /usr/local/Cellar/postgresql/9.1.5

Vérifions ce qui est activé:

$ brew info postgresql
postgresql: stable 9.3.2 (bottled)
http://www.postgresql.org/
Conflicts with: postgres-xc
/usr/local/Cellar/postgresql/9.1.5 (2755 files, 37M) *
  Built from source
/usr/local/Cellar/postgresql/9.3.2 (2924 files, 39M)
  Poured from bottle
From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/postgresql.rb
# … and some more

Notez que l'étoile * est passé à la version nouvellement activée

(*) Veuillez noter que brew switch ne fonctionne que tant que toutes les dépendances de l'ancienne version sont toujours présentes. Dans certains cas, une reconstruction de l'ancienne version peut devenir nécessaire. Par conséquent, en utilisant brew switch est surtout utile quand on veut basculer entre deux versions pas trop éloignées.

2) Vérifiez, si la version est disponible en tant que robinet

En particulier pour les grands projets logiciels, il est très probable qu'il existe une demande suffisamment élevée pour plusieurs versions majeures (potentiellement incompatibles avec l'API) d'un certain logiciel. En mars 2012, Homebrew 0.9 fournit un mécanisme pour cela: brew tap & la versions homebrew dépôt.

Ce référentiel de versions peut inclure des backports d'anciennes versions pour plusieurs formules. (Principalement seulement les grands et célèbres, mais bien sûr ils auront aussi plusieurs formules pour postgresql.)

brew search postgresql vous montrera où chercher:

$ brew search postgresql
postgresql
homebrew/versions/postgresql8    homebrew/versions/postgresql91
homebrew/versions/postgresql9    homebrew/versions/postgresql92

Nous pouvons simplement l'installer en tapant

$ brew install homebrew/versions/postgresql8
Cloning into '/usr/local/Library/Taps/homebrew-versions'...
remote: Counting objects: 1563, done.
remote: Compressing objects: 100% (943/943), done.
remote: Total 1563 (delta 864), reused 1272 (delta 620)
Receiving objects: 100% (1563/1563), 422.83 KiB | 339.00 KiB/s, done.
Resolving deltas: 100% (864/864), done.
Checking connectivity... done.
Tapped 125 formula
==> Downloading http://ftp.postgresql.org/pub/source/v8.4.19/postgresql-8.4.19.tar.bz2
# …

Notez que cela a automatiquement tapoté la homebrew/versions robinet. (Vérifier avec brew tap, enlever avec brew untap homebrew/versions.) Ce qui suit aurait été équivalent:

$ brew tap homebrew/versions
$ brew install postgresql8

Tant que les formules de version rétroportées restent à jour, cette approche est probablement la meilleure façon de gérer les anciens logiciels.

3) Essayez une formule du passé

Les approches suivantes sont listées principalement pour l'exhaustivité. Les deux essayent de ressusciter une formule de morts-vivants à partir du dépôt d'infusion. En raison de modifications des dépendances, des changements d'API dans la spécification de la formule ou simplement d'une modification de l'URL de téléchargement, les choses peuvent ou ne peuvent pas fonctionner.

Puisque le répertoire complet 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'arriver à un commit où l'ancienne version était disponible.

a) les temps historiques

Entre Août 2011 et octobre 2014, homebrew avait un brew versions commande, qui crache toutes les versions disponibles avec leurs hachages SHA respectifs. En Octobre 2014, vous devez faire un brew tap homebrew/boneyard avant de pouvoir l'utiliser. Comme le suggère le nom du robinet, vous ne devriez probablement le faire qu'en dernier recours.

Par exemple.

$ brew versions postgresql
Warning: brew-versions is unsupported and may be removed soon.
Please use the homebrew-versions tap instead:
  https://github.com/Homebrew/homebrew-versions
9.3.2    git checkout 3c86d2b Library/Formula/postgresql.rb
9.3.1    git checkout a267a3e Library/Formula/postgresql.rb
9.3.0    git checkout ae59e09 Library/Formula/postgresql.rb
9.2.4    git checkout e3ac215 Library/Formula/postgresql.rb
9.2.3    git checkout c80b37c Library/Formula/postgresql.rb
9.2.2    git checkout 9076baa Library/Formula/postgresql.rb
9.2.1    git checkout 5825f62 Library/Formula/postgresql.rb
9.2.0    git checkout 2f6cbc6 Library/Formula/postgresql.rb
9.1.5    git checkout 6b8d25f Library/Formula/postgresql.rb
9.1.4    git checkout c40c7bf Library/Formula/postgresql.rb
9.1.3    git checkout 05c7954 Library/Formula/postgresql.rb
9.1.2    git checkout dfcc838 Library/Formula/postgresql.rb
9.1.1    git checkout 4ef8fb0 Library/Formula/postgresql.rb
9.0.4    git checkout 2accac4 Library/Formula/postgresql.rb
9.0.3    git checkout b782d9d Library/Formula/postgresql.rb

Comme vous pouvez le voir, il déconseille de l'utiliser. Homebrew crache toutes les versions qu'il peut trouver avec son heuristique interne et vous montre un moyen de récupérer les anciennes formules. Essayons.

# First, go to the homebrew base directory
$ cd $( brew --prefix )
# Checkout some old formula
$ git checkout 6b8d25f Library/Formula/postgresql.rb
$ brew install postgresql
# … installing

Maintenant que l'ancienne version postgresql est installée, nous pouvons réinstaller la dernière formule afin de garder notre dépôt propre:

$ git checkout -- Library/Formula/postgresql.rb

brew switch est votre ami à changer entre l'ancien et le nouveau.

b) les temps préhistoriques

Pour les besoins spéciaux, nous pouvons également essayer notre propre creuser à travers le repo homebrew.

$ git log -S'8.4.4' -- Library/Formula/postgresql.rb

git log -S cherche tous les commits dans lesquels la chaîne '8.4.4' a été ajouté ou supprimé dans le fichier Library/Formula/postgresql.rb. Nous obtenons deux commits en conséquence.

commit 7dc7ccef9e1ab7d2fc351d7935c96a0e0b031552
Author: Aku Kotkavuo
Date:   Sun Sep 19 18:03:41 2010 +0300

    Update PostgreSQL to 9.0.0.

    Signed-off-by: Adam Vandenberg

commit fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
Author: David Höppner
Date:   Sun May 16 12:35:18 2010 +0200

    postgresql: update version to 8.4.4

Évidemment, fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422 est le commit qui nous intéresse. Comme ce commit est assez ancien, nous allons essayer de rétrograder l'installation homebrew complète (de cette façon, l'API de formule est plus ou moins garantie d'être valide):

$ git checkout -b postgresql-8.4.4 fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
$ brew install postgresql
$ git checkout master
$ git branch -d postgresql-8.4.4

Vous pouvez ignorer la dernière commande pour conserver la référence dans votre référentiel git.

Une remarque: lors de la vérification de l'ancien commit, vous rétrogradez temporairement votre installation homebrew. Donc, vous devriez faire attention car certaines commandes de homebrew peuvent être différentes de la version la plus récente.

4) Écrivez manuellement une formule

Ce n'est pas trop dur et vous pouvez le télécharger sur Homebrew-Versions.

A.) Bonus: Épinglage

Si vous voulez conserver une certaine version de, disons postgresql, et l'empêcher d'être mis à jour quand vous faites le naturel brew update; brew upgrade procédure, vous pouvez épingle une formule:

$ brew pin postgresql

Les formules épinglées sont répertoriées dans /usr/local/Library/PinnedKegs/ et une fois que vous voulez apporter les derniers changements et mises à jour, vous pouvez détacher encore:

$ brew unpin postgresql

2117
2017-11-11 20:04



Workflow simple

Maintenant que Homebrew / versions est obsolète, Homebrew / core prend en charge plusieurs versions de formules avec un nouveau format de dénomination.

Pour installer une version spécifique, par ex. postgresql 9.5 vous exécutez simplement:

$ brew install postgresql@9.5

Pour lister les versions disponibles, lancez une recherche avec @:

$ brew search postgresql@
==> Searching local taps...
postgresql@10.1      postgresql@9.4        postgresql@9.5        postgresql@9.6

632
2018-03-22 23:29



Il existe maintenant un moyen beaucoup plus simple d'installer une ancienne version d'une formule que vous aviez précédemment installée. Simplement utiliser

brew switch [formula] [version]

Par exemple, j'alterne régulièrement entre Node.js 0.4.12 et 0.6.5:

brew switch node 0.4.12
brew switch node 0.6.5

Depuis brew switch change juste les liens symboliques, c'est très rapide. Voir plus de documentation sur le Wiki Homebrew sous Commandes externes.


425
2017-12-14 16:33



Mise à jour: 15/01/2015

  • Recherchez l'historique de validation du logiciel et de la version souhaités. par exemple. Je dois passer de docker version 1.4.1 à 1.3.3: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • Voir le fichier avec ce bouton: enter image description here 
  • Cliquez sur le bouton Raw: List item
  • Copiez le URL (url docker.rb dans cet exemple) de la barre d'adresse
  • brew install <url> (peut devoir brew unlink d'abord, par exemple brew unlink docker)
  • brew switch docker 1.3.3
  • Revenez au docker 1.4.1 brew switch docker 1.4.1

De cette essentiel

brew update
brew versions FORMULA
cd `brew --prefix`
git checkout HASH Library/Formula/FORMULA.rb  # use output of "brew versions"
brew install FORMULA
brew switch FORMULA VERSION
git checkout -- Library/Formula/FORMULA.rb    # reset formula

## Example: Using Subversion 1.6.17
#
# $ brew versions subversion
# 1.7.3    git checkout f8bf2f3 /usr/local/Library/Formula/subversion.rb
# 1.7.2    git checkout d89bf83 /usr/local/Library/Formula/subversion.rb
# 1.6.17   git checkout 6e2d550 /usr/local/Library/Formula/subversion.rb
# 1.6.16   git checkout 83ed494 /usr/local/Library/Formula/subversion.rb
# 1.6.15   git checkout 809a18a /usr/local/Library/Formula/subversion.rb
# 1.6.13   git checkout 7871a99 /usr/local/Library/Formula/subversion.rb
# 1.6.12   git checkout c99b3ac /usr/local/Library/Formula/subversion.rb
# 1.6.6    git checkout 8774131 /usr/local/Library/Formula/subversion.rb
# 1.6.5    git checkout a82e823 /usr/local/Library/Formula/subversion.rb
# 1.6.3    git checkout 6b6d369 /usr/local/Library/Formula/subversion.rb
# $ cd `brew --prefix`
# $ git checkout 6e2d550 /usr/local/Library/Formula/subversion.rb
# $ brew install subversion
# $ brew switch subversion 1.6.17
# $ git checkout -- Library/Formula/subversion.rb

183
2017-07-19 23:42



J'ai découvert une meilleure solution alternative aux autres solutions complexes.

brew install https://raw.github.com/Homebrew/homebrew-versions/master/postgresql8.rb

Cela va télécharger et installer PostgreSQL 8.4.8


J'ai trouvé cette solution en commençant à suivre les étapes de la recherche du repo et un commentaire dans le repo.

Après une petite recherche a révélé que quelqu'un a une collection de formules rares à mélanger avec.


Si vous cherchez MySQL 5.1.x, essayez-le.

brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb

92
2017-09-19 11:55



Dans la lignée de la suggestion de @ halfcube, cela fonctionne très bien:

  1. Trouvez la bibliothèque que vous cherchez à https://github.com/mxcl/homebrew/tree/master/Library/Formula
  2. Cliquez dessus: https://github.com/mxcl/homebrew/blob/master/Library/Formula/postgresql.rb
  3. Cliquez sur le bouton "Historique" pour voir les anciennes validations: https://github.com/mxcl/homebrew/commits/master/Library/Formula/postgresql.rb
  4. Cliquez sur celui que vous voulez: "postgresql: mise à jour de la version 8.4.4", https://github.com/mxcl/homebrew/blob/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
  5. Cliquez sur le lien "brut": https://raw.github.com/mxcl/homebrew/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
  6. brew install https://raw.github.com/mxcl/homebrew/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb

50
2017-10-16 22:12



Vous pouvez utiliser la stratégie d'identification de la formule et d'un commit particulier dans l'historique de la formule correspondant à la version du package que vous souhaitez installer.

  1. Aller à https://github.com/Homebrew/homebrew-core

  2. presse t sur votre clavier pour activer le finder de fichier.

  3. Identifier une formule qui semble la plus pertinente, peut-être: Formula/mysql.rb, vous amenant à un emplacement de fichier forumla: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb.

  4. Regardez l'historique des révisions en cliquant sur le History bouton, qui est situé à https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb. Si vous êtes intéressé par MySQL 5.7.10, vous pouvez cliquer sur la dernière révision avant le 5.7.11, qui accède à un commit GitHub:

    https://github.com/Homebrew/homebrew/commit/c77882756a832ac1d87e7396c114158e5619016c#Library/Formula/mysql.rb

Remarque: vous devrez peut-être afficher l'historique de validation dans votre console selon la suggestion de GitHub si l'historique de validation ne se charge pas dans votre navigateur. Remplacez le commit SHA ci-dessus dans l'URL si vous souhaitez voir ce commit sur GitHub. Vous pouvez également passer à l'étape 7 ci-dessous.

  1. Cliquez sur le bouton "Afficher" pour afficher la source du fichier mysql.rb après l'application de la validation.

  2. Puis cliquez sur le bouton "Raw" pour voir la source brute.

  3. Copiez l'URL Sinon, créez l'URL vous-même avec le mysql.rb nom de fichier pour identifier votre formule et la version particulière de cette formule (identifiée par le SHA commmit dans l'URL ci-dessous).

    https://raw.githubusercontent.com/Homebrew/homebrew/c77882756a832ac1d87e7396c114158e5619016c/Library/Formula/mysql.rb

  4. Installez-le avec $ brew install [URL from step 7]

    $ brew install https://raw.githubusercontent.com/Homebrew/homebrew/c77882756a832ac1d87e7396c114158e5619016c/Library/Formula/mysql.rb
    

NOTE: Cette réponse a été mise à jour pour tenir compte de la suppression du site web braumeister.org. Le même principe s'applique, Braumeister avait simplement fourni un moyen convivial pour les débutants de naviguer dans les versions de formule.


49
2018-02-24 05:38



Je viens d'utiliser Homebrew pour revenir à Maven 2.2.1 depuis le simple brew install maven installé Maven 3.0.3.

D'abord vous devez laisser le dir de maven là

$ brasser unlink maven

Utilisez la commande de brassage

$ infuser tap homebrew / versions
Clonage dans '/ usr / local / Library / Taps / homebrew-versions' ...
remote: Comptage des objets: 590, fait.
remote: Compresser des objets: 100% (265/265), terminé.
à distance: Total 590 (delta 362), réutilisé 549 (delta 325)
Objets récepteurs: 100% (590/590), 117,49 KiB | 79 KiB / s, fait.
Résolution des deltas: 100% (362/362), fait.
Formule 50 taraudée

Vous pouvez maintenant installer la formule maven2:

$ infuser installer maven2
==> Téléchargement http://www.apache.org/dist/maven/maven-2/2.2.1/binaries/apache-maven-2.2.1-bin.tar.gz
################################################## ###################### 100,0%
/usr/local/Cellar/maven2/2.2.1: 10 fichiers, 3.1M, intégrés en 6 secondes
$ mvn --version
Apache Maven 2.2.1 (r801777; 2009-08-06 12: 16: 01-0700)
Version Java: 1.6.0_37
Accueil Java: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Paramètres régionaux par défaut: en_US, encodage de la plateforme: MacRoman
Nom de l'OS: "mac os x" version: "10.7.4" arch: "x86_64" Famille: "mac"

Modifier: Vous pouvez aussi juste brew switch maven 2.2.1 pour passer à une version différente.

Modifier: Le projet Apache Maven a réorganisé leur repo. Mise à jour de cette réponse pour tenir compte de ce changement.


27
2018-02-12 20:35