Homebrew installer une version spécifique de la formule?

2197

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

Gravis
la source
2
postgresqlest étrange car il y avait des versions séparées dans Homebrew à un moment donné, quelque chose comme bashpourrait être un meilleur exemple car il est passé de 4.x à 5.x dans le même nom de formule. Voir stackoverflow.com/a/55764594/3794873
dragon788
Instructions de réinstallation de formule à usage général .
Josh Habdas
2
J'ai lu toutes les réponses. Nous
sommes en

Réponses:

2556

TLDR: brew install [email protected] Voir la 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 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:

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

Lorsque 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 dossier sont ensuite installés globalement. En principe, cela facilite le basculement entre deux versions installées. (*)

Si vous utilisez homebrew depuis plus longtemps et que vous n'avez jamais supprimé d'anciennes versions (en utilisant, par exemple brew cleanup), il est probable qu'une ancienne version de votre programme existe toujours. Si vous souhaitez simplement activer cette version précédente, brew switchc'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 ancienne version 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 à nouveau 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 cela brew switchne 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 s'avérer nécessaire. Par conséquent, l'utilisation brew switchest surtout utile lorsque l'on veut basculer entre deux versions pas trop éloignées.

2) Vérifiez si la version est disponible sous forme de robinet

Surtout 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 les API) d'un certain logiciel. Depuis mars 2012, Homebrew 0.9 fournit un mécanisme pour cela: brew tap& le référentiel des versions homebrew .

Ce référentiel de versions peut inclure des rétroportages d'anciennes versions pour plusieurs formules. (Surtout que les grands et célèbres, mais bien sûr, ils auront également 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 touché le homebrew/versionsrobinet. (Vérifiez avec brew tap, supprimez avec brew untap homebrew/versions.) Les éléments suivants auraient été équivalents:

$ brew tap homebrew/versions
$ brew install postgresql8

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

3) Essayez une formule du passé

Les approches suivantes sont répertoriées principalement pour être complètes. Les deux essaient de ressusciter une formule de morts-vivants du référentiel de brassage. En raison de modifications des dépendances, des modifications de l'API dans la spécification de formule ou simplement d'un changement dans l'URL de téléchargement, les choses peuvent ou non fonctionner.

Étant donné que le répertoire de formule entier est un référentiel 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) les temps historiques

Entre août 2011 et octobre 2014 , homebrew avait une brew versionscommande, qui crachait toutes les versions disponibles avec leurs hachages SHA respectifs. Depuis octobre 2014, vous devez effectuer une opération brew tap homebrew/boneyardavant 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 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 référentiel propre:

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

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

b) les temps préhistoriques

Pour les besoins spéciaux, nous pouvons également essayer notre propre fouille dans le repo homebrew.

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

git log -Srecherche toutes les validations dans lesquelles la chaîne a '8.4.4'été ajoutée ou supprimée dans le fichier Library/Taps/homebrew/homebrew-core/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, fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422c'est le commit qui nous intéresse. Comme ce commit est assez ancien, nous essaierons de rétrograder l'installation complète de homebrew (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: lorsque vous extrayez l'ancien commit, vous rétrogradez temporairement votre installation homebrew. Donc, vous devez être prudent car certaines commandes en homebrew peuvent être différentes de la version la plus récente.

4) Écrivez manuellement une formule

Ce n'est pas trop difficile et vous pouvez ensuite le télécharger dans votre propre référentiel. Auparavant, Homebrew-Versions , mais qui est maintenant abandonné.

A.) Bonus: épinglage

Si vous souhaitez conserver une certaine version de, disons postgresql, et l'empêcher d'être mise à jour lorsque vous effectuez la brew update; brew upgradeprocédure naturelle , vous pouvez épingler une formule:

$ brew pin postgresql

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

$ brew unpin postgresql
Debilski
la source
18
Vous pouvez également simplement extraire la formule à l'aide de git checkout fa992 -- Library/Formula/postgresql.rb. Lorsque vous avez terminé, vous pouvez annuler les modifications apportées à la formule à l'aide de git revert HEAD Library/Formula/postgresql.rb && git checkout -- Library/Formula/postgresql.rb.
mipadi
18
Remarque: lors d'une nouvelle installation de Homebrew, vous devrez peut-être brew updateétablir son référentiel Git.
Bluu
557
C'est ridiculement difficile.
Dogweather
30
À ce jour, le répertoire correct pour exécuter les commandes manuelles sur le référentiel est cd $(brew --repository)/Library/Taps/homebrew/homebrew-core, alors vous pouvez utiliser git checkout 4cce79d -- Formula/go.rbet HOMEBREW_NO_AUTO_UPDATE=1 brew install go.
Calin
12
homebrew / versions est déprécié
Ezekiel Victor
775

Workflow simple

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

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

$ brew install [email protected]

Pour répertorier les versions disponibles, lancez une recherche avec @:

$ brew search postgresql@
==> Searching local taps...
[email protected][email protected]        [email protected]        [email protected]
Bijan
la source
8
Semble comme le plus simple, mais quand je copie et colle, obtenez fatal: Not a git repository (or any of the parent directories): .git. Je viens cddans le répertoire à la place (sans le FORMULANAME.rb), puis fais legit checkout 120938
Ramon Tayag
8
@RamonTayag, j'ai eu le même problème. Assurez-vous d' cd /usr/localabord.
gjb
13
J'ai trouvé que vous avez besoin d'une étape 3.5:brew unlink FORMULANAME
Intentss
37
brew versions <formula>n'est plus pris en charge.
ejoubaud
4
@ dem7w2, vous pouvez créer les liens symboliques avec brew link --force [email protected]. Si vous avez déjà installé une version plus récente et que vous souhaitez que l'ancienne version soit votre version par défaut, vous en aurez également besoin --overwrite.
Ryan
457

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

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 suffit de modifier les liens symboliques, c'est très rapide. Voir la documentation supplémentaire sur le Homebrew Wiki sous Commandes externes .

Trevor Burnham
la source
2
J'ai essayé cela, et il a réussi avec le message "33 liens créés pour /usr/local/Cellar/node/0.4.7", mais lorsque j'exécute le nœud après, il échoue avec le message "-bash: / usr / local / bin / node: aucun fichier ou répertoire de ce type ". Une idée de ce qui pourrait mal tourner? Remarque: j'ai téléchargé 0.4.7 manuellement et l'ai mis dans le répertoire cave, car je ne sais pas comment télécharger quoi que ce soit, mais la dernière version du nœud en utilisant brew.
Soroush Hakami
6
J'espère que vous savez qu'il y a quelque chose appelé 'nvm' [ github.com/creationix/nvm] !
Gaurav Agarwal
40
Je compte sur la version du package déjà installée. Si la version vous manque, vous devrez toujours appliquer la réponse sélectionnée.
Nic Strong
1
Pour la version de noeud mgmt en particulier, nvm est une meilleure solution, à mon humble avis.
semaines du
5
@NicStrong En effet, brew switchrepose sur la version recherchée déjà installée. Malheureusement, cependant, la réponse actuellement acceptée est incroyablement inutile, compliquée et obsolète. Il y a de meilleures réponses ci-dessous qui sont beaucoup plus utiles.
GDP2
250

Mise à jour: 15/01/2015

  • Trouvez l'historique de validation du logiciel et de la version souhaités. par exemple, je dois passer de la version 1.4.1 de Docker à 1.3.3: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • Affichez le fichier avec ce bouton: entrez la description de l'image ici
  • Cliquez sur le bouton Raw: Élément de liste
  • Copiez l' URL ( URL docker.rb dans cet exemple) de la barre d'adresse
  • brew install <url>(peut devoir d' brew unlinkabord, par exemple brew unlink docker)
  • brew switch docker 1.3.3
  • Revenez à Docker 1.4.1 brew switch docker 1.4.1

De cet 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
Vishal
la source
46
C'est la seule chose qui a fonctionné pour moi. Assez stupide qu'un gestionnaire de paquets nécessite autant de futz juste pour installer une version précédente. Peut-être que je suis gâté par RVM ruby ​​et bundler, mais ce processus doit vraiment être rationalisé et abstrait.
Poetmountain
3
Lorsque j'ai essayé d'accéder à une version précédente d'Ansible, j'ai dû dissocier la formule avant d'installer la version précédente comme indiqué. Donc , avant de le faire brew install <url>, brew unlink <formulaname>. Sinon, c'est la manière la plus simple et la plus concise (jusqu'à présent) de passer à une version spécifique d'une formule.
bigsweater
Vous avez appuyé sur le Rawbouton sur quel fichier?!
Iulian Onofrei
1
Cela fonctionne, mais vous devez parfois télécharger le fichier .rb brut et modifier la somme de contrôle pour éviter que Homebrew ne se plaigne de la non-concordance de SHA. GitHub semble avoir une grande partie des arbres de pension repérés en 2017, et leurs sommes de contrôle ont changé. (En fait, cela a causé beaucoup de confusion dans mon équipe lorsque Bazel a commencé à échouer en raison de non-concordances de hachage en juillet dernier)
Chang Qian
6
J'ai trouvé l'adresse facilement parbrew log <formula>
kangkyu
128

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

  1. Trouvez la bibliothèque que vous recherchez sur 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 souhaitez: "postgresql: mise à jour de la version vers 8.4.4", https://github.com/Homebrew/homebrew-core/blob/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  5. Cliquez sur le lien "brut": 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
Lance Pollard
la source
8
C'est le moyen le plus simple d'installer la version requise d'un package s'il n'est pas disponible dans le package@version
référentiel
7
Si vous ne pouvez pas utiliser l'interface Web, vous pouvez cloner le référentiel et le faire localement: utilisez git log master -- Formula/PACKAGENAME.rbpour obtenir l'historique des validations, consultez le correct commit, puis exécutez-le brew install Formula/PACKAGENAME.rbpour l'installer.
chipbuster
7
Je pense que vous avez besoin brew unlinkavant brew installd'une autre version.
studgeek
C'est qui mxcl?
PJSCopeland
1
Je fais cela, brew install https://github.com/Homebrew/homebrew-core/raw/afc10f17af8023906b87363a8340aeb62284329f/Formula/postgresql%409.6.rbmais je reçois l'erreur, probablement en raison de la @signature: des Error: No available formula with the name "postgresql%409.6" In formula file: /Users/maciek/Library/Caches/Homebrew/Formula/postgresql%409.6.rb Expected to find class Postgresql%4096, but only found: PostgresqlAT96.idées?
msciwoj
109

J'ai découvert une meilleure solution alternative que les 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 recherche du repo et un commentaire dans le repo.

Après un peu de recherche, on a découvert que quelqu'un avait une collection de formulaires rares à préparer.


Si vous cherchez MySQL 5.1.x, essayez ceci.

brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb
kylewelsby
la source
1
hmm, brew install https://github.com/Homebrew/homebrew-versions/blob/master/node06.rbsemblait échouer avec des erreurs de syntaxe.
Brian Armstrong
6
@BrianArmstrong Vous faites référence à une version au format html du fichier, alors que vous avez besoin d'une version brute .
Nikita Volkov
Allez sur github.com/Homebrew/homebrew/commits/master/Library/Formula/… , choisissez votre version, parcourez le code, raw - utilisez cette URL.
jpillora
1
N'oubliez pas le rawdans l'URL
Faber
9
homebrew-versionsest parti et tout est sur coremaintenant le cas général est: brew install https://raw.github.com/Homebrew/homebrew-core/<COMMIT>/Formula/<FORMULA>.rb. COMMITpeut être trouvé en allant sur github.com/Homebrew/homebrew-core/commits/master/Formula/… .
PJSCopeland
78

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. Accédez à https://github.com/Homebrew/homebrew-core

  2. Appuyez tsur sur votre clavier pour activer la recherche de fichiers.

  3. Identifiez 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 Historybouton, qui se trouve à https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb . Si vous êtes intéressé par MySQL 5.7.10, vous voudrez peut-être cliquer sur la dernière révision antérieure à 5.7.11, qui accède à une validation GitHub:

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

REMARQUE: vous devrez peut-être afficher l'historique des validations dans votre console selon la suggestion de GitHub si l'historique des validations ne se charge pas dans votre navigateur. Remplacez le SHA de validation 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 du commit.

  2. Cliquez ensuite sur le bouton "Raw" pour afficher la source brute.

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

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

REMARQUE: 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.

Sealocal
la source
13
Malheureusement, c'est trop loin dans la liste des réponses, mais c'est la meilleure solution. C'est ce que j'utilise, sauf qu'au lieu d'utiliser braumeister, je vais simplement sur la page Homebrew GitHub de la formule que je veux (par exemple pour gcc, allez sur github.com/Homebrew/homebrew/blob/master/Library/Formula/gcc.rb ) puis je passe par l '"Historique" du fichier jusqu'à ce que j'arrive à la version que je souhaite.
Guy Kogus
3
C'était certainement la meilleure solution dans mon cas - installer une ancienne version de Watchman qui ne nécessitait pas Xcode 8.1
Zachary Keener
3
C'est vraiment le moyen le plus simple d'installer une ancienne version. Grande réponse
Martin
4
Cela a fonctionné pour moi, mais j'ai d'abord dû brasser le logiciel.
Brett Wagner
3
C'était la solution la plus simple pour moi. Cela devrait être plus élevé car la réponse acceptée est obsolète.
Tim W
35

La plupart des autres réponses sont désormais 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 une formule distincte (par exemple python@2,[email protected]  …).

Heureusement, pour d'autres formules, il existe un moyen beaucoup plus facile que le désordre alambiqué qui était nécessaire auparavant. Voici les instructions complètes:

  1. Recherchez la version correcte dans les journaux:

    brew log formula
    # Scroll down/up with j/k or the arrow keys
    # or use eg. /4\.4\.23 to search a specific version
    
    # This syntax only works on pre-2.0 Homebrew versions
    brew log --format=format:%H\ %s -F --grep=‹version› ‹formula›
    

    Cela affichera une liste de hachages de validation. Prenez celui qui est approprié (surtout il devrait être assez évident, et est généralement le plus récent (c'est-à-dire en haut).

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

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

    1. Remplacez github.comparraw.githubusercontent.com
    2. Remplacez blob/masterpar le hachage de validation que nous avons trouvé à la première étape.
  4. Installez la version souhaitée en remplaçant masterl'URL trouvée précédemment 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 brew unlink ‹formula›avant.)


Si vous avez copié un hachage de validation que vous souhaitez utiliser, vous pouvez utiliser quelque chose comme cet exemple pour installer cette version, en remplaçant la valeur bashpar votre hachage de validation et la formule souhaitée.

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

Cet exemple installe bash 4.4.23 au lieu de bash 5, mais si vous effectuez brew upgradeensuite un bash 5, il sera installé par-dessus, sauf si vous l'avez d'abord exécuté brew pin bash. Au lieu de cela, pour rendre cela plus fluide SANS épinglage, vous devez d'abord installer la dernière avec brew install bash, puis brew unlink bashinstaller l'ancienne version souhaitée selon le script ci-dessus, puis utiliser brew switch bash 4.4.23pour configurer les liens symboliques vers l'ancienne version. Maintenant, cela brew upgradene devrait pas affecter votre version de Bash. Vous pouvez brew switch bashobtenir une liste des versions disponibles pour basculer vers.


Alternative utilisant un robinet local uniquement personnalisé

Un autre moyen d'atteindre le même objectif semble être:

brew tap-new username/repo-name
# extract with a version seems to run a grep under the hood
brew extract --version='4.4.23' bash username/repo-name
brew install [email protected]
# Note this "fails" when 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 un formula@versiondans votre robinet personnalisé que vous pouvez installer selon l'exemple ci-dessus. L'inconvénient est que vous avez probablement besoin encore brew unlink bashet brew link [email protected]afin d'utiliser votre version spécifique de Bash ou de toute autre formule.

Konrad Rudolph
la source
1
Ils ont apparemment changé la syntaxe pour brew logque tout extra -Fou --grepoption échoue pour moi.
dragon788
1
@ dragon788 Enfer sanglant, Homebrew 2 s'est complètement cassé brew log. Je ne peux pas être gêné d'écrire une nouvelle version maintenant car cela nécessite une analyse correcte du message du journal git, ou une exécution git logdirecte sur le référentiel correspondant. Et le changelog ne semble même pas mentionner ce changement de rupture. Au-delà ennuyeux.
Konrad Rudolph
À moins qu'ils n'acceptent que le changement de comportement est un bogue, il semble qu'il External Commandpourrait être nécessaire de fonctionner dans la structure de brewpour récupérer ce type de git logfiltrage. docs.brew.sh/External-Commands
dragon788
C'était le seul endroit où j'ai pu trouver la bonne brew extractutilisation, merci!
dognotdog
Je suggérerais de faire en sorte que le local0 personnalisé ne touche que la première partie de votre réponse. Cela semble vraiment être la meilleure solution dans l'ensemble.
studgeek
29

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

Vous devez d'abord y laisser le dir maven afin

$ brew unlink maven

Utilisez la commande brew tap

$ brew tap homebrew / versions
Clonage dans '/ usr / local / Library / Taps / homebrew-versions' ...
à distance: comptage d'objets: 590, terminé.
à distance: compression des objets: 100% (265/265), fait.
à distance: Total 590 (delta 362), réutilisé 549 (delta 325)
Réception d'objets: 100% (590/590), 117,49 Kio | 79 Kio / s, terminé.
Résolution des deltas: 100% (362/362), fait.
Formule taraudée 50

Vous pouvez maintenant 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,1 M, construits 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 du système d'exploitation: "mac os x" version: "10.7.4" arch: "x86_64" Famille: "mac" 

Modifier: vous pouvez également simplement brew switch maven 2.2.1passer à une autre version.

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

Cameron Goodale
la source
Ce fut très utile. Remarque, la fondation apache a réorganisé les binaires maven en répertoires spécifiques à la version (1,2,3), vous devrez donc modifier le maven.rb pour 2.2.1 et peut-être d'autres pour l'adapter à la nouvelle structure. Par exemple, le binaire de 2.2.1 se trouvait à: apache.org/dist/maven/maven-2/2.2.1/binaries/… . Notez le "maven-2 / 2.2.1 /" dans l'url.
Charles Forcey
@CharlesForcey Vous avez raison au sujet de la réorganisation du dist dist maven. Je mettrai à jour la réponse pour utiliser le robinet d'infusion pour utiliser l'ancienne formule maven2. Merci pour le commentaire.
Cameron Goodale
21

Sur la base du workflow décrit par @tschundeee et @ Debilski's update 1 , j'ai automatisé la procédure et ajouté le nettoyage dans ce script .

Téléchargez-le , mettez-le sur 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

:)

MattiSG
la source
4
tout simplement génial. pourquoi est-ce pas en infusion?
Adrian
3
Introuvable :(
D-32
18

Une réponse mise à jour car cela s'ajoute à ce que @ lance-pollard a déjà publié comme réponse de travail.

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

  1. Trouvez 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.rbsi vous avez cloné le dépôt localement.
  3. Obtenez l'URL de git brut 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 être: https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
  4. Installez-le avec: brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
Miguel Reyes
la source
Pour obtenir l'URL git brute à l'étape 3, vous pouvez également simplement cliquer sur le bouton "Raw" et copier l'URL vers laquelle le navigateur vous emmène.
Brian Topping du
15

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 intégrée évidente pour installer une ancienne version.

Heureusement, pour la plupart des formules, il existe un moyen beaucoup plus facile que le désordre alambiqué qui était nécessaire auparavant. Voici les instructions complètes en utilisant bashcomme 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@versiondans votre robinet personnalisé que vous pouvez installer selon l'exemple ci-dessus. Une note importante est que vous devrez probablement le faire brew unlink bashsi vous avez déjà installé la version par défaut / la plus récente de la formule, puis brew link [email protected]pour utiliser votre version spécifique de Bash (ou toute autre formule sur laquelle vous avez installé la dernière et une ancienne version).

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

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


Méthode scriptée (recommandée)

Cet exemple montre l'installation de l'ancien bash 4.4.23, un exemple utile puisque la bashformule installe actuellement bash 5.

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

Si vous avez effectué une brew upgradeaprès l'installation d'une ancienne version sans installer la dernière en premier, alors la dernière serait installée en détrônant votre ancienne version, à moins que vous ne l'ayez d'abord exécutée brew pin bash.

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

Copiez et collez et modifiez les exportlignes de l'extrait de code ci-dessous pour mettre à jour avec la version et le nom de formule souhaités, puis copiez et collez le reste tel quel et il utilisera ces variables pour faire 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 package.

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 dans la sortie de la formule pour la placer dans votre CHEMIN ou définissez-la comme votre shell par défaut.

dragon788
la source
12

Sur la dernière version de homebrew (0.9.5 au moment de la rédaction de cet article), il y aura une recette spécifique pour la version du fût homebrew que vous souhaitez installer. Exemple:

$ brew search mongodb
mongodb    mongodb24  mongodb26

Ensuite, faites brew install mongodb26comme d'habitude.

Dans le cas où vous aviez déjà installé la dernière version, assurez - vous de délier la dernière version et relier la version souhaitée: brew unlink mongodb && brew link mongodb26.

Alex Sharp
la source
Bien que cela puisse répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien de référence.
Erik
1
@Erik Merci, corrigé.
Alex Sharp,
11

Le problème homebrew/versionsest que quelqu'un doit avoir cette version spécifique du logiciel répertoriée dans le référentiel pour que vous puissiez l'utiliser. De plus, comme il brew versionsn'est plus pris en charge, une autre solution est requise. Pour les solutions qui indiquent l'utilisation brew switch, cela ne fonctionnera que si vous ne l'avez pas fait brew cleanupcar la version doit exister sur votre ordinateur.

J'ai eu un problème avec le fait d'installer une ancienne version spécifique docker-machinequi n'était pas répertoriée dans homebrew/versions. J'ai résolu ce problème en utilisant ce qui suit, qui devrait également fonctionner pour tous les logiciels installés. L'exemple ci-dessous utilisera docker-machinele package que je souhaite rétrograder de la version 0.5.0 à 0.4.1.

  1. Accédez à votre Formularépertoire homebrew .
    Vous pouvez le déterminer en exécutant brew info [any package name]. Par exemple, brew info docker-machineme donne une ligne qui me montre un chemin - /usr/local/Cellar/docker-machine/0.5.0. Cela me dit que sur ma machine, homebrew est installé sur /usr/localet mon Formula répertoire est situé par défaut sur/usr/local/Library/Formula

  2. Recherchez le fichier de formule spécifique (.rb) pour votre package. Puisque je veux rétrograder docker-machine, je peux voir un docker-machine.rbfichier.

  3. Obtenez l'historique des versions de ce fichier de formule . Entrez git log docker-machine.rb. Cela répertoriera l'historique complet des validations de ce fichier. Vous verrez une sortie comme celle-ci:

    ...plus 

    commit 20c7abc13d2edd67c8c1d30c407bd5e31229cacc
    Auteur: BrewTestBot 
    Date: jeu.5 nov.16: 14: 18 2015 +0000

        docker-machine: mise à jour de la bouteille 0.5.0.

    commit 8f615708184884e501bf5c16482c95eff6aea637
    Auteur: Vincent Lesierse 
    Date: mar.27 oct.22: 25: 30 2015 +0100

        docker-machine 0.5.0

        Docker-machine mis à jour vers 0.5.0

        Ferme # 45403.

        Signature: Dominyk Tiller 

    commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423
    Auteur: BrewTestBot 
    Date: 21 sept. 14:04:04 2015 +0100

        docker-machine: mise à jour de la bouteille 0.4.1.

    commit 18fcbd36d22fa0c19406d699308fafb44e4c8dcd
    Auteur: BrewTestBot 
    Date: dim 16 août 09:05:56 2015 +0100

        docker-machine: mise à jour de la bouteille 0.4.1.

    ...plus

La partie délicate consiste à trouver le dernier commit pour la version spécifique que vous souhaitez. Dans ce qui précède, je peux dire la dernière version 0.4.1 a été commis avec cette balise commit: commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423. Les validations au-dessus de ce point commencent à utiliser la version 0.5.0 (les entrées du journal git sont répertoriées de la dernière à la première date).

  1. Obtenez une version précédente du fichier de formule. En utilisant la balise commit de l'étape # 3 (vous pouvez utiliser les 6 premiers caractères), vous pouvez obtenir une ancienne version du fichier de formule en utilisant ce qui suit:

    git checkout 5970e1 docker-machine.rb

  2. Désinstallez la version actuelle de votre package. Exécutez simplement les commandes de brassage normales pour désinstaller la version actuelle de votre package.
    Ex.brew uninstall docker-machine

  3. Installer l'ancienne version du package Maintenant, vous pouvez simplement exécuter la commande d'installation de brew normale et elle installera la formule que vous avez extraite. Ex.brew install docker-machine

Vous devrez peut-être vous reconnecter en utilisant le brew link docker-machinesi nécessaire.

Si, à tout moment, vous souhaitez revenir à la dernière version d'un package spécifique, accédez au répertoire Formula et exécutez les commandes suivantes dans votre fichier de formule (.rb)

git reset HEAD docker-machine.rb
git checkout -- docker-machine.rb

Ensuite, vous pouvez brew uninstall docker-machineet brew install docker-machinepour obtenir la dernière version et continuer ainsi.

rchawdry
la source
1
Rédaction très approfondie @rchawdry, merci. BTW: pour trouver le commit qui correspond à la version que vous souhaitez ajouter rapidement le paramètre --grep git log --grep 0.4.1 docker-machine.rb.
Jerry Mindek
Pour moi, le chemin était/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
akauppi
Je n'ai pas pu trouver suffisamment d'historique de version pour le cairobrassage de cette façon. La réponse de @ sealocal a montré plus, pour une raison quelconque.
akauppi
11

Nous sommes en 2020 et la plupart des réponses sont dépassées

Ma situation: postgresqlest passée de 11 à 12 accidentellement. Je veux garder 11.

  1. Arrêtez la base de données:
brew services stop postgresql
  1. Installez Postgres 11:
brew install postgresql@11
  1. Activez-le:
brew link postgresql@11 --force
  1. (Facultatif) Renommez le répertoire de données DB de postgresà postgres@11:
cd /usr/local/var
ls -lh
mv postgresql@11 postgresql@11-fresh-backup
mv postgres postgresql@11
  1. Démarrez la base de données:
brew services start postgresql@11

Si vous avez des erreurs, vérifiez /usr/local/var/log/[email protected](notez le @ 11).

Max Malysh
la source
6
Cela ne fonctionne que pour le cas spécial de postgresql @ 11 qui est explicitement conservé par les responsables de Homebrew pour faciliter les migrations de banque de données (effectuées avec la commande spéciale brew postgresql-upgrade-database). Cette réponse n'est pas utile pour presque toutes les autres formules.
Adam Wróbel
@ AdamWróbel J'ai décidé que c'était bien de répondre à la question originale sur Postgres . brew postgresql-upgrade-databaseest, bien, pour les mises à niveau . Ma réponse concerne l'utilisation d'une ancienne version de Postgres. Le simple changement de binaires ne fonctionnera pas.
Max Malysh
Utilisateurs de NodeJS qui n'utilisent pas de gestionnaire de version, par exemple nvm, pour info j'ai eu de la chance en utilisant cette technique pour les anciennes versions de LTS. Au moins au moment de la rédaction, les versions 10 et 12 devraient être disponibles, par exemplebrew install node@12 formulae.brew.sh/formula/node
pattes
9

Installer une ancienne version de package d'infusion (exemple Flyway 4.2.0)

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

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

OU

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

Liste de toutes les versions disponibles

git log master -- Formula/flyway.rb

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

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

ffghfgh
la source
pourquoi ne pas simplement exécuter à brew install Formula/flyway.rbpartir du homebrew-corerépertoire? cela a fonctionné pour moi sans utiliser d' raw.github..adresse
kangkyu
9

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 du travail que vous pouvez trouver ici

Usage:

brewv.sh formula_name desired_version
demosten
la source
6

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

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)
Maxim Kholyavkin
la source
2
... si quelqu'un a pris la peine de créer une recette versionnée pour ce paquet.
clacke
6

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

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 une version 2.7.11pour que mon hachage soit cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9(ou cf5da05pour faire court). Ensuite, je vérifie cette version et installe la formule python:

git checkout cf5da05
brew install python

Enfin, nettoyez:

git checkout master
bâtonnets de poisson
la source
2
La vie change et cette réponse est la plus pertinente. N'oubliez pas HOMEBREW_NO_AUTO_UPDATEet lisez github.com/Homebrew/brew/issues/1188
Wile E.
Les commandes correctes sont cd brew --prefix /Homebrewetgit log Library/Taps/homebrew/homebrew-core/Formula/python.rb
Iulian Onofrei
Mais même cela ne fonctionne pas car il /Library/Tapsest ignoré.
Iulian Onofrei
N'oubliez pas HOMEBREW_NO_AUTO_UPDATE. Oui, n'oubliez pas la chose dont vous avez besoin avant d' avoir découvert que vous en avez besoin. xD
Josh Habdas
Celui-ci, ça va? HOMEBREW_NO_INSTALL_CLEANUPn'est-ce pas quelque chose dont vous devez vous souvenir?
kangkyu
6

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

voici un exemple d'installation d'une ancienne version de nginx via brew:

De là, nous pouvons installer 1.6.3avec l'url sha et raw git:

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

lfender6445
la source
3

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 62.1version de icu4c(nécessaire par exemple pour postgresql 10.5). Ensuite, il faudrait

> brew edit icu4c
# drops you to editor

Ici, vous devez modifier le url, versionet sha256(peut-être aussi mirror) les 62.1chaînes 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 icu4cpour enfin télécharger la 62.1version.

Emil Rehhnberg
la source
comment obtenir le sha256 ? dans mon cashttps://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-macos-x64-release.zip
simo
1

Mise à jour sur la ligne 8 Library / Formula / postgresql.rb vers

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 pour

fcc3daaf2292fa6bf1185ec45e512db6

Sauvegarder et quitter.

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

À ce stade, vous pourriez rencontrer l' postgresql could not create shared memory segmenterreur, pour contourner cette mise à jour /etc/sysctl.confcomme ceci:

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

Réessayez initdb /usr/local/var/postgreset cela devrait fonctionner sans problème.

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 :)

mmrs151
la source
1

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

$ 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. C'est peut-être utile à n'importe qui.

Thaars
la source
Un vilain hack. Mais, oui, cela a aussi fonctionné pour moi, alors que j'essayais de rechercher et d'installer une ancienne version de consul! À votre santé.
darkdefender27
0

J'ai décidé, contre mon meilleur jugement, de créer une formule pour Maven 3.1.1, qui homebrew/versionsn'en avait pas. Pour faire ça:

  1. J'ai bifurqué homebrew/versionssur github.
  2. J'ai créé un lien symbolique $(brew --prefix)/Library/Tapsvers la copie de travail locale de ma fourchette. J'appellerai ça my-homebrew/versions.
  3. J'ai testé en spécifiant la formule comme my-homebrew/versions/<formula>.
  4. J'ai envoyé une demande de retrait à homebrew/versionsma nouvelle formule.

Yay.

JB Rainsberger
la source
0

J'ai créé un outil pour faciliter le processus prescrit dans cette réponse .

Pour rechercher un package pkgavec version a.b.c, exécutez:

$ brew-install-specific [email protected]

Cela listera les commits sur la pkgformule homebrew qui mentionne la version donnée avec leurs URL GitHub.

Matching versions:
1. pkg: update a.b.c bottle.
   https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>
2. pkg: release a.b.c-beta
   https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>
3. pkg a.b.c
   https://github.com/Homebrew/homebrew-core/commit/<COMMIT-SHA>

Select index: 

Vérifiez la validation à partir de l'URL donnée et entrez l'index de la validation sélectionnée.

Select index: 2
Run:
  brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/<COMMIT-SHA>/Formula/pkg.rb

Copiez et exécutez la commande donnée à installer.

divs1210
la source