web-dev-qa-db-fra.com

Homebrew installe-t-il 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.

1859
Gravis

TLDR: brew install [email protected] 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 l'installation/l'utilisation d'anciennes versions du logiciel avec l'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)

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

Si vous utilisez homebrew depuis plus longtemps et que vous n'avez jamais supprimé d'anciennes versions (à l'aide, par exemple, de brew cleanup), il est probable qu'une version antérieure de votre programme existe encore. Si vous voulez simplement activer cette version précédente, brew switch est le moyen le plus simple de le faire.

Vérifiez 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ée à la nouvelle version 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, l’utilisation de brew switch est surtout utile lorsque l’on souhaite passer d’une version à l’autre non plus éloignée.

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

Il est très probablement très probable que la demande de plusieurs versions majeures (potentiellement incompatibles avec les API) d’un logiciel donné soit particulièrement importante pour les grands projets logiciels. Depuis mars 2012, Homebrew 0.9 fournit un mécanisme pour cela: brew tap & the versions homebrew référentiel.

Ce référentiel de versions peut inclure des backports d'anciennes versions pour plusieurs formules. (Surtout les plus grandes et célèbres, mais bien sûr, elles auront également plusieurs formules pour postgresql.)

brew search postgresql va vous montrer 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ée le homebrew/versions tapé. (Vérifiez avec brew tap, supprimez-le avec brew untap homebrew/versions.) Ce qui suit aurait été équivalent:

$ brew tap homebrew/versions
$ brew install postgresql8

Tant que les formules de version gérées en arrière-plan restent à jour, cette approche est probablement la meilleure façon de traiter des logiciels plus anciens.

3) Essayez une formule du passé

Les approches suivantes sont énumérées principalement par souci d'exhaustivité. Les deux essaient de ressusciter une formule de morts-vivants à partir du référentiel de brassage. En raison de modifications des dépendances, des modifications de l'API dans la spécification de la formule ou simplement d'une modification de l'URL de téléchargement, les choses peuvent ne pas fonctionner.

Comme tout le répertoire de la formule est un référentiel git, il est possible d’installer des versions spécifiques à l’aide de commandes plain git. Cependant, nous devons trouver un moyen de parvenir à un commit où l'ancienne version était disponible.

a) les temps historiques

Entre août 2011 et octobre 2014 , homebrew avait une commande brew versions, qui crachait toutes les versions disponibles avec leurs SHArespectifs. _ hashes. À partir d'octobre 2014, vous devez effectuer un brew tap homebrew/boneyard avant de pouvoir l'utiliser. Comme le nom du robinet l'indique, 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 constater, il est déconseillé 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 de postgresql est installée, nous pouvons réinstaller la dernière formule afin de garder notre référentiel propre:

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

brew switch est votre ami pour passer de l'ancien au nouveau.

b) époque préhistorique

Pour des besoins spéciaux, nous pouvons également essayer de creuser nous-mêmes dans le référentiel homebrew.

$ cd Library/Taps/homebrew/homebrew-core && git log -S'8.4.4' -- Formula/postgresql.rb

git log -S recherche tous les commits dans lesquels la chaîne '8.4.4' a été soit ajoutée, soit supprimée dans le fichier Library/Taps/homebrew/homebrew-core/Formula/postgresql.rb. Nous obtenons deux commits à la suite.

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

Bien sûr, fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422 est le commit qui nous intéresse. Ce commit étant assez ancien, nous allons essayer de rétrograder l’installation homebrew complète (de cette manière, la formule de l’API est plus ou moins garantie):

$ 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.

Remarque: lorsque vous extrayez l'ancien commit, vous rétrogradez temporairement votre installation homebrew. Donc, vous devriez faire attention car certaines commandes de homebrew pourraient être différentes de la version la plus récente.

4) Écrire manuellement une formule

Ce n’est pas trop difficile et vous pourrez ensuite le télécharger dans votre propre référentiel. Utilisé pour être Homebrew-Versions , mais cette opération est maintenant interrompue.

A.) Bonus: Épingler

Si vous souhaitez conserver une certaine version de Postgresql, par exemple, et empêcher sa mise à jour lorsque vous effectuez la procédure naturelle brew update; brew upgrade, vous pouvez pin une formule:

$ brew pin postgresql

Les formules épinglées sont répertoriées dans /usr/local/Library/PinnedKegs/ et une fois que vous souhaitez importer les dernières modifications et mises à jour, vous pouvez npin de nouveau:

$ brew unpin postgresql
2363
Debilski

Flux de travail simple

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

Pour installer une version spécifique, par exemple postgresql 9.5 vous lancez simplement:

$ brew install [email protected]

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

$ brew search postgresql@
==> Searching local taps...
[email protected][email protected]        [email protected]        [email protected]
695
Bijan

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

brew switch [formula] [version]

Par exemple, je 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

Puisque brew switch ne fait que changer les liens symboliques, c'est très rapide. Voir la documentation supplémentaire sur le wiki Homebrew sous Commandes externes .

440
Trevor Burnham

Mise à jour: 1/15/2015

  • Recherchez l'historique de validation du logiciel et de la version souhaités. par exemple. Je dois passer de la version 1.4.1 du menu fixe à la version 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 l'URL (url docker.rb dans cet exemple) à partir de la barre d'adresse.
  • brew install <url> (peut avoir à brew unlink en premier, par exemple brew unlink docker)
  • brew switch docker 1.3.3
  • Revenir au menu fixe 1.4.1 brew switch docker 1.4.1

De ceci Gist

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
202
Vishal

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

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

Ceci téléchargera et installera PostgreSQL 8.4.8


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

Après quelques recherches, nous avons découvert que quelqu'un avait une collection de formules rares à préparer.


Si vous cherchez MySQL 5.1.x, essayez ceci.

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

Suivant les suggestions de @ halfcube, cela fonctionne vraiment bien:

  1. Trouvez la bibliothèque que vous cherchez à https://github.com/Homebrew/homebrew-core/tree/master/Formula
  2. Cliquez dessus: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
  3. Cliquez sur le bouton "historique" pour consulter les anciens commits: https://github.com/Homebrew/homebrew-core/commits/master/Formula/postgresql.rb
  4. Cliquez sur celui que vous voulez: "postgresql: mettez à jour la version vers 8.4.4", https://github.com/Homebrew/homebrew-core/blob/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  5. Cliquez sur le lien "raw": https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  6. brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
96
Lance Pollard

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

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

  2. Appuyez sur t sur votre clavier pour activer le fichier Finder.

  3. Identifiez une formule qui semble la plus pertinente, par exemple: Formula/mysql.rb, en vous dirigeant vers un emplacement de fichier forum: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb .

  4. Consultez l'historique des révisions en cliquant sur le bouton History, situé à l'adresse 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 antérieure à la version 5.7.11, qui permet d'accéder à une validation GitHub:

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

REMARQUE: vous devrez peut-être afficher l'historique de validation dans votre console à 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 cela vous intéresse de le voir sur GitHub. Sinon, passez à 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. Cliquez ensuite sur le bouton "Raw" pour afficher la source brute.

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

    https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7397c114158e5619016c/Formula/mysql.rb

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

    $ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/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 formules.

63
sealocal

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

D'abord, vous devez laisser le maven dir là pour 

 $ brasser un lien maven 

Utilisez la commande de brassage

 $ brew tap homebrew/versions 
 Clonage dans '/usr/local/Library/Taps/homebrew-versions'...
remote: Comptage d'objets: 590, terminé .
 à distance: Compression d'objets : 100% (265/265), terminé .
 À distance: total 590 (delta 362), réutilisé 549 (delta 325) 
 Réception d'objets: 100% (590/590), 117,49 Ko | 79 Ko/s, terminé .
 Résolution des deltas: 100% (362/362), terminé .
 Sélectionné: 50 formules 

Maintenant, vous pouvez installer la formule maven2: 

 $ brew install 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, construit en 6 secondes 
 $ mvn --version 
 Apache Maven 2.2.1 (r801777; 2009-08-06 12: 16: 01-0700) 
 Version Java: 1.6.0_37
Java home:/Système/Bibliothèque/Java/JavaVirtualMachines/1.6.0.jdk/Sommaire/Home 
 Paramètres régionaux par défaut: en_US, codage de la plateforme: MacRoman 
 Nom du système d'exploitation: "mac os x" version: "10.7.4" Arch: "x86_64". Famille: "mac" 

Édition: Vous pouvez aussi simplement brew switch maven 2.2.1 passer à une autre version. 

Edit: Le projet Apache Maven a réorganisé son repo. Mise à jour de cette réponse pour prendre en compte ce changement.

28
Cameron Goodale

Suivant le flux de travail décrit par @tschundeee et @ la mise à jour 1 de Debilski -, j’ai automatisé la procédure et ajouté le nettoyage dans ce script .

Téléchargez-le , mettez-le dans votre chemin et brewv <formula_name> <wanted_version>. Pour le PO spécifique, ce serait:

cd path/to/downloaded/script/
./brewv postgresql 8.4.4

:)

21
MattiSG

Une réponse mise à jour depuis qui ajoute à ce que @ lance-pollard a déjà posté comme réponse active.

Comment installer une version spécifique d'une formule (la formule utilisée dans cet exemple est terraform):

  1. Recherchez votre fichier de formule, par exemple: https://github.com/Homebrew/homebrew-core/blob/master/Formula/terraform.rb
  2. Obtenez la version de validation de l’historique de github avec https://github.com/Homebrew/homebrew-core/commits/master/Formula/terraform.rb ou git log master -- Formula/terraform.rb si vous avez cloné le référentiel localement.
  3. Obtenez l'URL git brute avec la version de validation de votre formule: Si le lien de formule dans github.com est https://github.com/Homebrew/homebrew-core/blob/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb , votre URL brute sera: https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c14d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
  4. Installez-le avec: brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
13
Miguel Reyes

La dernière version de l’homebrew (0.9.5 à la date de cette écriture) contiendra une recette spécifique pour la version du fût de l’homebrew que vous souhaitez installer. Exemple:

$ brew search mongodb
mongodb    mongodb24  mongodb26

Ensuite, il suffit de faire brew install mongodb26 comme d'habitude.

Si vous avez déjà installé la dernière version, veillez à dissocier la dernière version et à lier la version souhaitée: brew unlink mongodb && brew link mongodb26.

11
Alex Sharp

cela pourrait être fait très facilement pour la dernière version de brasser.

brew tap homebrew/versions
brew install Subversion17 # for svn 1.7 branch instead of last available
brew install postgresql8  # for postgresql 8 (which you ask)
7
Maxim Kholyavkin

La plupart des autres réponses sont maintenant obsolètes. Malheureusement, Homebrew n’a toujours pas de méthode intégrée pour installer une version obsolète, sauf si cette version existe sous forme de formule distincte (par exemple, python@2, [email protected]…).

Heureusement, pour d’autres formules, il existe un moyen beaucoup plus simple que le fouillis compliqué qui était nécessaire auparavant. Voici les instructions complètes:

  1. Recherchez la version correcte dans les journaux:

    brew log --format=format:%H\ %s -F --grep=‹version› ‹formula›
    

    Cela montrera une liste de hachages de commit. Prenez celui qui convient (le plus souvent, cela devrait être assez évident, et c’est généralement le plus récent (en haut).

  2. Recherchez l'URL à laquelle la formule réside dans le référentiel en amont:

    brew info ‹formula› | grep ^From:
    
  3. Fixer l'URL:

    1. Remplacez github.com par raw.githubusercontent.com
    2. Remplacez blob/master par le hachage de validation que nous avons trouvé à la première étape.
  4. Installez la version souhaitée en remplaçant master dans l'URL précédemment trouvée par le hachage de validation, par exemple:

    brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/‹hash›/Formula/‹formula›.rb
    

(La dernière étape peut nécessiter l'exécution de brew unlink ‹formula› avant.)

7
Konrad Rudolph

Aucun de ceux-ci n'a vraiment fonctionné pour mon cas (Python), donc je vais ajouter mes 2 centimes:

cd `brew --prefix`
git log Library/Formula/python.rb

La sortie ressemble à ceci:

commit 9ff2d8ca791ed1bd149fb8be063db0ed6a67a6de
Author: Dominyk Tiller <[email protected]>
Date:   Thu Jun 30 17:42:18 2016 +0100

    python: clarify pour_bottle reason

commit cb3b29b824a264895434214e191d0d7ef4d51c85
Author: BrewTestBot <[email protected]>
Date:   Wed Jun 29 14:18:40 2016 +0100

    python: update 2.7.12 bottle.

commit 45bb1e220341894bbb7de6fd3f6df20987dc14f0
Author: Rakesh <[email protected]>
Date:   Wed Jun 29 10:02:26 2016 +0530

    python 2.7.12

    Closes #2452.

    Signed-off-by: Tim D. Smith <[email protected]>

commit cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9
Author: BrewTestBot <[email protected]>
Date:   Fri Jun 17 20:14:36 2016 +0100

    python: update 2.7.11 bottle.

...

Je veux la version 2.7.11 donc mon hash est cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9 (ou cf5da05 en abrégé). Ensuite, je vérifie cette version et installe la formule python:

git checkout cf5da05
brew install python

Enfin, nettoyez:

git checkout master
6
tenfishsticks

Si vous ne trouvez pas votre version avec brew search <formula>, vous pouvez également essayer de parcourir les journaux de validation pour que votre formule trouve la version souhaitée: 

voici un exemple pour installer une version plus ancienne de nginx via brew:

À partir de là, nous pouvons installer 1.6.3 avec les URL sha et raw git:

brew install https://raw.githubusercontent.com/Homebrew/homebrew/eba75b9a1a474b9fc4df30bd0a32637fa31ec049/Library/Formula/nginx.rb

5
lfender6445

Installer une ancienne version du paquet d'infusion (exemple Flyway 4.2.0)

Recherchez votre répertoire homebrew local ou votre clone Homebrew/homebrew-core localement

cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/

OR

git clone [email protected]:Homebrew/homebrew-core.git

Lister toutes les versions disponibles

git log master -- Formula/flyway.rb

Copiez l'ID de validation pour la version souhaitée et installez-le directement

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/793abfa325531415184e1549836c982b39e89299/Library/Formula/flyway.rb

3
ffghfgh

J'ai essayé la plupart des solutions ici et elles sont obsolètes. J'ai dû combiner quelques idées d'ici avec mon propre travail. En conséquence, j'ai créé un script pour m'aider à faire le gros travail que vous pouvez trouver ici

Utilisation: brewv.sh formula_name desired_version

2
demosten

Actuellement, les anciennes méthodes d'installation de versions de formules spécifiques sont obsolètes. Il semble donc que nous devons utiliser brew edit [formula]. Par exemple. disons que nous voulons installer la version 62.1 de icu4c (nécessaire, par exemple, pour postgresql 10.5). Alors vous auriez à 

> brew edit icu4c
# drops you to editor

Ici, vous devrez modifier les variables url, version et sha256 (peut-être aussi mirror) en chaînes 62.1 correspondantes. 

url "https://ssl.icu-project.org/files/icu4c/62.1/icu4c-62_1-src.tgz"
mirror "https://github.com/unicode-org/icu/releases/download/release-62-1/icu4c-62_1-src.tgz"
version "62.1"
sha256 "3dd9868d666350dda66a6e305eecde9d479fb70b30d5b55d78a1deffb97d5aa3"

puis exécutez brew reinstall icu4c pour télécharger finalement la version 62.1.

2
Emil Rehhnberg

Je viens de copier une version plus ancienne d'elasticsearch dans le répertoire /usr/local/Cellar/elasticsearch.

$ mkdir /usr/local/Cellar/elasticsearch/5.4.3/bin
$ cp elasticsearch /usr/local/Cellar/elasticsearch/5.4.3/bin
$ brew switch elasticsearch 5.4.3

C'est ça… .. Peut-être que c'est utile pour n'importe qui.

1
Thaars

Méthode officielle (à en juger par la réponse à https://github.com/Homebrew/brew/issues/6028 )

Malheureusement, Homebrew n’a toujours pas de méthode évident pour installer une version antérieure.

Heureusement, pour la plupart des formules, il existe un moyen beaucoup plus simple que le désordre compliqué qui était nécessaire auparavant. Voici les instructions complètes en utilisant bash comme exemple:

brew tap-new $USER/local-tap
# extract with a version seems to run a `git log --grep` under the hood
brew extract --version=4.4.23 bash $USER/local-tap
# Install your new version from the tap
brew install [email protected]
# Note this "fails" trying to grab a bottle for the package and seems to have
# some odd doubling of the version in that output, but this isn't fatal.

Cela crée le formula@version dans votre robinet personnalisé que vous pouvez installer selon l'exemple ci-dessus. Une remarque importante est que vous aurez probablement besoin de brew unlink bash si vous aviez précédemment installé la version par défaut/la plus récente de la formule, puis brew link [email protected] pour pouvoir utiliser votre version spécifique de Bash (ou toute autre formule sur laquelle vous avez la dernière version et une version plus ancienne). .

Un inconvénient potentiel de cette méthode est que vous ne pouvez pas facilement basculer entre les versions car, selon brew, il s'agit d'une "formule différente".

Si vous voulez pouvoir utiliser brew switch $FORMULA $VERSION, vous devriez utiliser la méthode suivante.


Méthode scriptée (recommandée)

Cet exemple montre l'installation de l'ancienne version 4.4.23 de bash, un exemple utile, car la formule bash installe actuellement bash 5.

  • Installez d'abord la dernière version de la formule avec brew install bash
  • alors brew unlink bash
  • puis installez l'ancienne version de votre choix selon les extraits ci-dessous
  • enfin, utilisez brew switch bash 4.4.23 pour configurer les liens symboliques vers votre version

Si vous avez exécuté brew upgrade après avoir installé une version plus ancienne sans installer la dernière version en premier, la dernière version s'installera, obstruant votre version précédente, à moins que vous n'ayez exécuté la première fois brew pin bash.

Les étapes décrites ici ÉVITER l’épinglage car il est facile de l’oublier et vous pourriez épingler une version qui ne serait plus sécurisée à l’avenir (voir Shellshock/etc). Avec cette configuration, un brew upgrade ne devrait pas affecter votre version de Bash et vous pouvez toujours exécuter brew switch bash pour obtenir la liste des versions disponibles.

Copiez et collez et modifiez les lignes export de l'extrait de code ci-dessous pour les mettre à jour avec le nom de version et de formule de votre choix, puis copiez et collez le reste tel quel et il utilisera ces variables pour effectuer la magie.

# This search syntax works with newer Homebrew
export BREW_FORMULA_SEARCH_VERSION=4.4.23 BREW_FORMULA_NAME=bash
# This will print any/all commits that match the version and formula name
git -C $(brew --repo homebrew/core) log \
--format=format:%H\ %s -F --all-match \
--grep=$BREW_FORMULA_SEARCH_VERSION --grep=$BREW_FORMULA_NAME

Lorsque vous êtes certain que la version existe dans la formule, vous pouvez utiliser ce qui suit:

# Gets only the latest Git commit SHA for the script further down
export BREW_FORMULA_VERSION_SHA=$(git -C $(brew --repo homebrew/core) log \
 --format=format:%H\ %s -F --all-match \
--grep=$BREW_FORMULA_SEARCH_VERSION --grep=$BREW_FORMULA_NAME | \
head -1 | awk '{print $1}')

Une fois que vous avez exporté le hachage de validation que vous souhaitez utiliser, vous pouvez l’utiliser pour installer cette version du paquet.

brew info $BREW_FORMULA_NAME \
| sed -n \
    -e '/^From: /s///' \
    -e 's/github.com/raw.githubusercontent.com/' \
    -e 's%blob/%%' \
    -e "s/master/$BREW_FORMULA_VERSION_SHA/p" \
| xargs brew install

Suivez les instructions de la sortie de la formule pour le mettre dans votre PATH ou le définir comme shell par défaut.

1
dragon788

Mise à jour de la ligne 8 de la bibliothèque/Formula/postgresql.rb

http://ftp2.uk.postgresql.org/sites/ftp.postgresql.org/source/v8.4.6/postgresql-8.4.6.tar.bz2

Et MD5 sur la ligne 9 à

fcc3daaf2292fa6bf1185ec45e512db6

Sauvegarder et quitter.

brew install postgres
initdb /usr/local/var/postgres

Maintenant, à cette étape, vous pourriez être confronté à l'erreur postgresql could not create shared memory segment. Pour contourner ce problème, mettez à jour le /etc/sysctl.conf comme ceci:

kern.sysv.shmall=65536
kern.sysv.shmmax=16777216

Essayez à nouveau initdb /usr/local/var/postgres et il devrait fonctionner correctement.

Pour exécuter postgresql au démarrage

launchctl load -w /usr/local/Cellar/postgresql/8.4.6/org.postgresql.postgres.plist

J'espère que cela pourra aider :)

1
mmrs151

Pour les versions ne figurant pas actuellement dans les formules de brassage par défaut, vous pouvez facilement créer votre propre tap avec l'outil de https://github.com/buildtools-version-taps/homebrew-versions-tap-tool

0
Lutzifer

J'ai décidé, à mon sens, de créer une formule pour Maven 3.1.1, que homebrew/versions n'avait pas. Pour faire ça:

  1. J'ai fourré homebrew/versions sur github.
  2. J'ai symlinked from $(brew --prefix)/Library/Taps vers la copie de travail locale de mon fork. Je vais appeler ce my-homebrew/versions.
  3. J'ai testé en spécifiant la formule en tant que my-homebrew/versions/<formula>.
  4. J'ai envoyé une demande d'extraction à homebrew/versions pour ma nouvelle formule.

Yay.

0