Comment installer une version spécifique d’une formule dans homebrew ? Par exemple, postgresql-8.4.4 au lieu de la dernière 9.0.
Réponses
Trop de publicités?(J'ai ré-édité ma réponse à donner une idée plus approfondie de flux de travail pour installer/utiliser d'anciennes versions du logiciel avec homebrew. N'hésitez pas à ajouter une note si vous avez trouvé l'ancienne version mieux.)
Commençons par le cas le plus simple:
1) Vérifiez si la version est déjà installée (mais pas activé)
Quand le homebrew installe une nouvelle formule, il la met dans un répertoire versionné comme /usr/local/Cellar/postgresql/9.3.1
. Seuls les liens symboliques de ce dossier sont alors installés dans le monde. En principe, il est donc assez facile de basculer entre les deux versions installées. (*)
Si vous avez été en utilisant homebrew pour plus longtemps et jamais supprimé les anciennes versions (en utilisant, par exemple, brew cleanup
), les chances sont qu'ancienne version de votre programme peut encore être là. Si vous souhaitez activer simplement que la version précédente, en brew switch
est la meilleure façon de le faire.
Vérifiez auprès de brew info postgresql
(ou brew switch postgresql <TAB>
) que les anciennes version 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 que certaines anciennes version est déjà installée. On peut l'activer à l'aide de 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
Double-vérifier ce qui est activé:
$ brew which postgresql
postgresql: 9.1.5
(*) Veuillez noter que brew switch
ne fonctionne que tant que toutes les dépendances de l'ancienne version sont toujours là. Dans certains cas, une reconstruction de l'ancienne version peut devenir nécessaire. Par conséquent, en utilisant brew switch
est principalement utile lorsque l'on veut passer d'une version pas trop loin.
2) Vérifier si la version est disponible comme un robinet
En particulier pour les grands projets de logiciel, il est très probablement qu'il existe une forte demande pour plusieurs (potentiellement API incompatible) versions majeures d'un morceau de logiciel. En Mars 2012, Homebrew 0.9 fournit un mécanisme pour cette: brew tap
& le homebrew versions du référentiel.
Que les versions référentiel peut inclure des backports de versions plus anciennes de plusieurs formules. (Surtout que les grandes et célèbres, mais bien sûr, ils ont é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
Il suffit de 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
# …
Veuillez noter que ceci est automatiquement taraudés l' homebrew/versions
appuyez sur. (Vérifiez auprès de l' brew tap
, enlevez-la avec brew untap homebrew/versions
.) La suite aurait été équivalent:
$ brew tap homebrew/versions
$ brew install postgresql8
Aussi longtemps que la version rétroportés formules de séjour jusqu'à ce jour, cette approche est probablement la meilleure façon de traiter avec des logiciels plus anciens.
3) Essayez de la formule du passé
Les approches suivantes sont répertoriés principalement à des fins d'exhaustivité. Tous deux essaient de ressusciter des morts-vivants formule à partir de l'infusion de référentiel. En raison d'un changement de dépendances, les changements de l'API dans la formule spec ou tout simplement un changement dans l'URL de téléchargement, les choses peuvent ou peuvent ne pas fonctionner.
Puisque la totalité de la formule répertoire est un dépôt git, on peut installer des versions spécifiques à l'aide de la plaine de commandes git. Cependant, nous devons trouver un moyen d'arriver à un commit où l'ancienne version était disponible.
a) la période historique
Entre août 2011 et octobre 2014, homebrew avait un brew versions
de commande, qui recraché toutes les versions disponibles avec leurs SHA hachages. En octobre 2014, vous avez à faire un brew tap homebrew/boneyard
avant de pouvoir l'utiliser. Comme le nom du robinet indique, vous ne devriez probablement faire cela comme un dernier recours.
E. g.
$ 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, il peut trouver avec son intérieur heuristique et vous montre un moyen de récupérer les anciennes formules. Nous allons l'essayer.
# 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é, il est possible de ré-installer la dernière formule afin de maintenir notre référentiel propre:
$ git checkout -- Library/Formula/postgresql.rb
brew switch
est votre ami pour le changement entre le vieux et le nouveau.
b) la préhistoire
Pour des besoins particuliers, nous pouvons également essayer nos propres creuser par le biais de l'homebrew repo.
$ git log -S'8.4.4' -- Library/Formula/postgresql.rb
git log -S
recherche tous les commits dans lequel la chaîne '8.4.4'
a été ajouté ou supprimé dans le fichier Library/Formula/postgresql.rb
. Nous obtenons deux s'engage 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
De toute évidence, fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
est le commit qui nous intéresse. Comme cette validation est assez vieux, nous allons essayer de dégrader la note complète homebrew installation (de cette manière, la formule de l'API est plus ou moins garanti pour ê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 sauter la dernière commande de conserver la référence dans votre dépôt git.
Une remarque: Lors de l'extraction de l'ancienne engager, vous temporairement downgrade de votre homebrew installation. Donc, vous devez être prudent, car certaines commandes dans homebrew peut être différente de la version la plus récente.
4) écrire Manuellement une formule
Il n'est pas trop dur et vous pouvez ensuite le télécharger à Homebrew-Versions.
Flux De Travail Simple
Étape 1:
Accédez à votre homebrew répertoire de base (en général, cela est - /usr/local
)
Exemple:
cd /usr/local
Ou, vous pouvez le faire
cd `brew --prefix`
Étape 2:
Entrez brew versions <formula>
( soit la formule que vous souhaitez installer).
Vous obtiendrez alors quelque chose comme:
1.0.1 git checkout 1234567 Library/Formula/<formula>.rb
1.0.0 git checkout 0123456 Library/Formula/<formula>.rb
...
Étape 3:
Choisissez la version désirée et de le vérifier via le copier-coller de la version souhaitée (ligne de laisser le numéro de version dans le début).
Exemple pour obtenir la version 1.0.0:
git checkout 0123456 Library/Formula/<formula>.rb
L'étape 3.5 (peut-être nécessaire)
Faire cela que si vous avez déjà une version installée.
brew unlink <formula>
Étape 4:
brew install <formula>
Étape 5:
FAIT, vous pouvez maintenant utiliser brew switch <formula> <version>
pour basculer entre les versions.
Il y a maintenant un moyen beaucoup plus facile d’installer une version plus ancienne d’une formule que vous aviez précédemment installé. Il suffit d’utiliser
Par exemple, j’alterne régulièrement entre Node.js 0.4.12 et 0.6.5 :
Puisque `` changements justes les liens symboliques, il est très rapide. Voir aussi la documentation sur le Wiki de Homebrew sous Les commandes externes.
J'ai découvert une meilleure solution de rechange alors l'autre des solutions complexes.
brew install https://raw.github.com/Homebrew/homebrew-versions/master/postgresql8.rb
Ceci va télécharger et installer PostgreSQL 8.4.8
J'ai trouvé cette solution en commençant par suivre les étapes de la recherche la mise en pension et un commentaire dans le repo .
Après un peu de recherche a trouvé quelqu'un qui a une collection de rares formulars à brasser.
Si votre recherche pour MySQL 5.1.x, donner à ceci un essai.
brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb
Merci pour la lecture.