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.
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:
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.
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.
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.
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.
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
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]
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 .
Mise à jour: 1/15/2015
brew install <url>
(peut avoir à brew unlink
en premier, par exemple brew unlink docker
)brew switch docker 1.3.3
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
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
Suivant les suggestions de @ halfcube, cela fonctionne vraiment bien:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
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.
Appuyez sur t
sur votre clavier pour activer le fichier Finder.
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 .
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:
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.
Cliquez sur le bouton "Afficher" pour afficher la source du fichier mysql.rb après l'application de la validation.
Cliquez ensuite sur le bouton "Raw" pour afficher la source brute.
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).
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.
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.
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
:)
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
):
git log master -- Formula/terraform.rb
si vous avez cloné le référentiel localement.brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
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
.
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)
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:
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).
Recherchez l'URL à laquelle la formule réside dans le référentiel en amont:
brew info ‹formula› | grep ^From:
Fixer l'URL:
github.com
par raw.githubusercontent.com
blob/master
par le hachage de validation que nous avons trouvé à la première étape.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.)
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
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:
voir nginx: update 1.6.3 bottle eba75b9a1a474b9fc4df30bd0a32637fa31ec049
À 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
cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/
OR
git clone [email protected]:Homebrew/homebrew-core.git
git log master -- Formula/flyway.rb
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/793abfa325531415184e1549836c982b39e89299/Library/Formula/flyway.rb
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
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
.
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.
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.
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.
brew install bash
brew unlink bash
brew switch bash 4.4.23
pour configurer les liens symboliques vers votre versionSi 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.
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 :)
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
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:
homebrew/versions
sur github.$(brew --prefix)/Library/Taps
vers la copie de travail locale de mon fork. Je vais appeler ce my-homebrew/versions
.my-homebrew/versions/<formula>
.homebrew/versions
pour ma nouvelle formule.Yay.