Wie installiere ich eine bestimmte Version einer Formel in Homebrew? Zum Beispiel postgresql-8.4.4 anstelle von 9.0.
(Ich habe meine Antwort überarbeitet, um einen gründlicheren Arbeitsablauf für die Installation/Verwendung älterer Softwareversionen mit Homebrew zu ermöglichen. Sie können gerne eine Notiz hinzufügen, wenn Sie die alte Version besser fanden.)
Beginnen wir mit dem einfachsten Fall:
Wenn Homebrew eine neue Formel installiert, wird sie in ein versioniertes Verzeichnis wie /usr/local/Cellar/postgresql/9.3.1
gestellt. Nur symbolische Links zu diesem Ordner werden dann global installiert. Im Prinzip ist das Wechseln zwischen zwei installierten Versionen ziemlich einfach. (*)
Wenn Sie Homebrew länger verwendet haben und ältere Versionen nicht entfernt haben (z. B. brew cleanup
), besteht die Möglichkeit, dass einige ältere Versionen Ihres Programms noch vorhanden sind. Wenn Sie einfach die vorherige Version aktivieren möchten, ist brew switch
der einfachste Weg, dies zu tun.
Prüfen Sie mit brew info postgresql
(oder brew switch postgresql <TAB>
), ob die ältere Version installiert ist:
$ 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
Wir sehen, dass einige ältere Versionen bereits installiert sind. Wir können es mit brew switch
aktivieren:
$ 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
Lassen Sie uns überprüfen, was aktiviert ist:
$ 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
Beachten Sie, dass der Stern *
in die neu aktivierte Version verschoben wurde
(*) Bitte beachten Sie, dass brew switch
nur funktioniert, solange alle Abhängigkeiten der älteren Version noch vorhanden sind. In einigen Fällen kann ein Neuaufbau der älteren Version erforderlich werden. Daher ist die Verwendung von brew switch
meistens hilfreich, wenn Sie möchten zwischen zwei Versionen wechseln, nicht zu weit voneinander entfernt.
Vor allem bei größeren Softwareprojekten besteht sehr wahrscheinlich die Nachfrage nach mehreren (möglicherweise API-inkompatiblen) Hauptversionen einer bestimmten Software. Ab März 2012 bietet Homebrew 0.9 einen Mechanismus dafür: brew tap
&/die Homebrew-Versionen Repository.
Dieses Versions-Repository kann Rückportierungen älterer Versionen für mehrere Formeln enthalten. (Meistens nur die großen und berühmten, aber natürlich haben sie auch mehrere Formeln für Postgresql.)
brew search postgresql
zeigt Ihnen, wo Sie suchen müssen:
$ brew search postgresql
postgresql
homebrew/versions/postgresql8 homebrew/versions/postgresql91
homebrew/versions/postgresql9 homebrew/versions/postgresql92
Wir können es einfach durch Eingabe installieren
$ 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
# …
Beachten Sie, dass hier automatisch getippt der homebrew/versions
getippt wurde. (Mit brew tap
überprüfen, mit brew untap homebrew/versions
entfernen.) Folgendes wäre äquivalent gewesen:
$ brew tap homebrew/versions
$ brew install postgresql8
Solange die Formeln der zurückportierten Version auf dem neuesten Stand sind, ist dieser Ansatz wahrscheinlich der beste Weg, um mit älterer Software umzugehen.
Die folgenden Ansätze sind größtenteils der Vollständigkeit halber aufgeführt. Beide versuchen, einige untote Formeln aus dem Brew-Repository wiederzubeleben. Aufgrund geänderter Abhängigkeiten, API-Änderungen in der Formelspezifikation oder einfach nur einer Änderung in der Download-URL können Dinge möglicherweise nicht funktionieren.
Da das gesamte Formelverzeichnis ein Git-Repository ist, können Sie bestimmte Versionen mit einfachen Git-Befehlen installieren. Wir müssen jedoch einen Weg finden, um zu einem Commit zu gelangen, wo die alte Version verfügbar war.
a) historische Zeiten
Zwischen August 2011 und Oktober 2014 verfügte homebrew über einen brew versions
-Befehl, der alle verfügbaren Versionen mit ihren entsprechenden SHA -Hashes ausspuckte. Ab Oktober 2014 müssen Sie einen brew tap homebrew/boneyard
eingeben, bevor Sie ihn verwenden können. Wie der Name des Taps schon sagt, sollten Sie dies wahrscheinlich nur als letzten Ausweg tun.
Z.B.
$ 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
Wie Sie sehen, rät es davon ab, es zu benutzen. Homebrew spuckt alle Versionen aus, die es mit seiner internen Heuristik finden kann, und zeigt eine Möglichkeit, die alten Formeln abzurufen. Lass es uns versuchen.
# 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
Nun, da die ältere postgresql-Version installiert ist, können wir die neueste Formel erneut installieren, um unser Repository sauber zu halten:
$ git checkout -- Library/Formula/postgresql.rb
brew switch
ist dein Freund, um zwischen dem alten und dem neuen zu wechseln.
b) prähistorische Zeiten
Für besondere Bedürfnisse können wir auch selbst versuchen, das Homebrew-Repo zu durchsuchen.
$ git log -S'8.4.4' -- Library/Formula/postgresql.rb
git log -S
sucht nach allen Commits, bei denen der String '8.4.4'
in der Datei Library/Formula/postgresql.rb
hinzugefügt oder entfernt wurde. Als Ergebnis erhalten wir zwei Commits.
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
Offensichtlich ist fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
das Commit, an dem wir interessiert sind. Da dieses Commit ziemlich alt ist, werden wir versuchen, die komplette Homebrew-Installation herunterzusteuern (auf diese Weise ist die Formel-API mehr oder weniger garantiert gültig):
$ git checkout -b postgresql-8.4.4 fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
$ brew install postgresql
$ git checkout master
$ git branch -d postgresql-8.4.4
Sie können den letzten Befehl überspringen, um die Referenz in Ihrem Git-Repository zu behalten.
Ein Hinweis: Beim Auschecken des älteren Commits müssen Sie Ihre Homebrew-Installation vorübergehend herabstufen. Sie sollten also vorsichtig sein, da sich einige Befehle in Homebrew von der neuesten Version unterscheiden können.
Es ist nicht zu schwer und Sie können es dann in Ihr eigenes Repository hochladen. War früher Homebrew-Versionen , aber das wird jetzt eingestellt.
Wenn Sie eine bestimmte Version von, beispielsweise postgresql, beibehalten möchten und verhindern möchten, dass sie aktualisiert wird, wenn Sie die natürliche brew update; brew upgrade
-Prozedur ausführen, können Sie pin eine Formel verwenden:
$ brew pin postgresql
Fixierte Formeln werden in /usr/local/Library/PinnedKegs/
aufgelistet. Wenn Sie die neuesten Änderungen und Aktualisierungen einfügen möchten, können Sie unpin es erneut aufrufen:
$ brew unpin postgresql
Nachdem Homebrew/Versionen veraltet sind, unterstützt Homebrew/core mehrere Versionen von Formeln mit einem neuen Namensformat.
So installieren Sie eine bestimmte Version, z. postgresql 9.5 läuft einfach:
$ brew install [email protected]
Um die verfügbaren Versionen aufzulisten, führen Sie eine Suche mit @ aus:
$ brew search [email protected]
==> Searching local taps...
[email protected] ✔ [email protected] [email protected] [email protected]
Es ist jetzt viel einfacher, eine ältere Version einer zuvor installierten Formel zu installieren. Einfach verwenden
brew switch [formula] [version]
Zum Beispiel wechsle ich regelmäßig zwischen Node.js 0.4.12 und 0.6.5:
brew switch node 0.4.12
brew switch node 0.6.5
Da brew switch
nur die Symlinks ändert, ist das sehr schnell. Weitere Dokumentation im Homebrew-Wiki finden Sie unter External Commands .
Update: 15.1.2015
brew install <url>
(muss brew unlink
zuerst sein, beispielsweise brew unlink docker
)brew switch docker 1.3.3
brew switch docker 1.4.1
Von diesem 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
Ich habe eine bessere alternative Lösung als die anderen komplexen Lösungen gefunden.
brew install https://raw.github.com/Homebrew/homebrew-versions/master/postgresql8.rb
Dadurch wird PostgreSQL 8.4.8 heruntergeladen und installiert
Ich fand diese Lösung, indem ich die Schritte zum Suchen des Repos und eines Kommentars im Repo begann.
Nach einer kurzen Recherche stellte sich heraus, dass jemand eine Sammlung seltener Formulare zum Aufbrühen hat.
Wenn Sie nach MySQL 5.1 suchen, probieren Sie es aus.
brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb
Ganz im Sinne des @ halfcube-Vorschlags funktioniert das sehr gut:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
Sie können die Strategie verwenden, die Formel und ein bestimmtes Commit in der Historie der Formel zu identifizieren, die der Version des Pakets entspricht, das Sie installieren möchten.
Drücken Sie t
auf Ihrer Tastatur, um den Dateisucher zu aktivieren.
Identifizieren Sie eine Formel, die am relevantesten aussieht, vielleicht: Formula/mysql.rb
, um Sie zu einem Speicherort der forumla-Datei zu bringen: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb .
Sehen Sie sich den Versionsverlauf an, indem Sie auf die Schaltfläche History
klicken, die sich unter https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb befindet. Wenn Sie sich für MySQL 5.7.10 interessieren, können Sie auf die letzte Version vor 5.7.11 klicken, die zu einem GitHub-Commit navigiert:
HINWEIS: Möglicherweise müssen Sie den Commit-Verlauf in Ihrer Konsole gemäß dem Vorschlag von GitHub anzeigen, wenn der Commit-Verlauf nicht in Ihren Browser geladen wird. Ersetzen Sie das Commit SHA oben in der URL, wenn Sie das Commit für GitHub sehen möchten. Fahren Sie alternativ mit Schritt 7 fort.
Klicken Sie auf die Schaltfläche "Anzeigen", um die Quelle für die mysql.rb-Datei anzuzeigen, nachdem der Commit ausgeführt wurde.
Klicken Sie dann auf die Schaltfläche "Raw", um die Rohquelle anzuzeigen.
Kopieren Sie die URL. Alternativ können Sie die URL selbst mit dem mysql.rb
-Dateinamen erstellen, um Ihre Formel und die jeweilige Version dieser Formel (durch das Commmit SHA in der nachstehenden URL angegeben) zu identifizieren.
Installiere es mit $ brew install [URL from step 7]
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb
HINWEIS: Diese Antwort wurde aktualisiert, um das Entfernen der Website braumeister.org zu berücksichtigen. Dasselbe Prinzip gilt, Braumeister hatte lediglich eine einsteigerfreundliche Methode zum Navigieren in Formelversionen bereitgestellt.
Ich habe gerade Homebrew verwendet, um zu Maven 2.2.1 zurückzukehren, da der einfache brew install maven
Maven 3.0.3 installiert hat.
Zuerst musst du den Maven dir da lassen
$ brew unlink maven
Verwenden Sie den Befehl Brew Tap
$ brew tap homebrew/versions Klonen in '/usr/local/Library/Taps/homebrew-versions'... remote: Objekte zählen: 590, done . remote: Objekte komprimieren : 100% (265/265), fertig . Fernbedienung: Gesamt 590 (Delta 362), wiederverwendet 549 (Delta 325) Empfangsobjekte: 100% (590/590), 117,49 KiB | 79 KiB/s, fertig . Auflösen von Deltas: 100% (362/362), fertig . Getappte 50-Formel
Nun können Sie die maven2-Formel installieren:
$ brew install maven2 ==> Herunterladen von 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 Dateien, 3.1M, in 6 Sekunden gebaut
$ mvn --version Apache Maven 2.2.1 (r801777; 2009-08-06 12: 16: 01-0700) Java-Version: 1.6.0_37 Java home:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home Standardgebietsschema: en_US, Plattformcodierung: MacRoman Betriebssystemname: "mac os x" Version: "10.7.4" Arch: "x86_64" Familie: "mac"
Bearbeiten: Sie können auch einfach mit brew switch maven 2.2.1
zu einer anderen Version wechseln.
Edit: Das Apache Maven-Projekt hat ihr Repo neu organisiert. Diese Antwort wurde für diese Änderung aktualisiert.
Basierend auf dem von @tschundeee und @ Debilskis Update 1 beschriebenen Arbeitsablauf habe ich die Prozedur automatisiert und in diesem Skript eine Bereinigung hinzugefügt.
Lade es herunter , gebe es in deinen Pfad und brewv <formula_name> <wanted_version>
. Für das spezifische OP wäre dies:
cd path/to/downloaded/script/
./brewv postgresql 8.4.4
:)
Eine aktualisierte Antwort seitdem ergänzt das, was @ lance-pollard bereits als funktionierende Antwort gepostet hat.
So installieren Sie eine bestimmte Version einer Formel (in diesem Beispiel wird die Formel terraform
verwendet):
git log master -- Formula/terraform.rb
wenn Sie das Repo lokal geklont haben.brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
In der neuesten Version von Homebrew (0.9.5 zum Zeitpunkt der Veröffentlichung) wird ein bestimmtes Rezept für die Version des Homebrew-Fasses angegeben, das Sie installieren möchten. Beispiel:
$ brew search mongodb
mongodb mongodb24 mongodb26
Dann machen Sie einfach brew install mongodb26
wie gewohnt.
Falls Sie bereits die neueste Version installiert haben, müssen Sie die Verknüpfung zur neuesten Version aufheben und die gewünschte Version verknüpfen: brew unlink mongodb && brew link mongodb26
.
Das Problem mit homebrew/versions
Ist, dass jemand diese spezielle Version der Software im Repository haben muss, damit Sie sie verwenden können. Da brew versions
Nicht mehr unterstützt wird, ist eine andere Lösung erforderlich. Bei Lösungen, die die Verwendung von brew switch
Anzeigen, funktioniert dies nur, wenn Sie kein brew cleanup
Erstellt haben, da die Version auf Ihrem Computer vorhanden sein muss.
Ich hatte ein Problem damit, eine bestimmte ältere Version von docker-machine
Zu installieren, die nicht in homebrew/versions
Aufgeführt war. Ich habe dieses Problem mit dem folgenden gelöst, das auch für jede installierte Software funktionieren sollte. Im folgenden Beispiel wird docker-machine
Als Paket verwendet, für das ich ein Downgrade von Version 0.5.0 auf 0.4.1 durchführen möchte.
Gehe in dein Homebrew-Verzeichnis Formula
.
Sie können dies feststellen, indem Sie brew info [any package name]
Ausführen. Zum Beispiel gibt mir brew info docker-machine
Eine Zeile, die mir einen Pfad zeigt - /usr/local/Cellar/docker-machine/0.5.0
. Dies sagt mir, dass Homebrew auf meinem Computer unter /usr/local
Installiert ist und sich mein Formula
-Verzeichnis standardmäßig unter /usr/local/Library/Formula
Befindet.
Suchen Sie die spezifische Formeldatei (.rb) für Ihr Paket. Da ich docker-machine
Downgraden möchte, wird eine docker-machine.rb
- Datei angezeigt.
Versionsverlauf für diese Formeldatei abrufen. Geben Sie git log docker-machine.rb
Ein. Dadurch wird der vollständige Festschreibungsverlauf für diese Datei aufgelistet. Sie sehen die Ausgabe wie folgt:
... more commit 20c7abc13d2edd67c8c1d30c407bd5e31229cacc Author: BrewTestBot Date: Do Nov 5 16:14:18 2015 +0000 Docker-Maschine: Update 0.5.0 Flasche. Commit 8f615708184884e501bf5c16482c95eff6aea637 Autor: Vincent Lesierse Datum: Di 27.10. 22: 25:30 2015 +0100 Docker-Maschine 0.5.0 Docker-Maschine auf 0.5.0 Aktualisiert Schließt # 45403. Unterzeichnet von: Dominyk Tiller Commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423 Autor: BrewTestBot Datum: Mon 21. September 14:04:04 2015 +0100 Docker-Maschine: Update 0.4.1 Flasche. Commit 18fcbd36d22fa0c19406d699308fafb44e4c8dcd Autor: BrewTestBot Datum: So Aug 16 09:05:56 2015 +0100 Docker-Maschine: Update 0.4.1 Flasche. ...Mehr
Der schwierige Teil besteht darin, das neueste Commit für die gewünschte Version zu finden. Oben kann ich sagen, dass die neueste 0.4.1-Version mit diesem Festschreibungs-Tag festgeschrieben wurde: commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423
. Die Commits über diesem Punkt beginnen mit Version 0.5.0 (Git-Protokolleinträge werden vom neuesten bis zum frühesten Datum aufgelistet).
Holen Sie sich eine frühere Version der Formeldatei. Mit dem Commit-Tag aus Schritt 3 (Sie können die ersten 6 Zeichen verwenden) können Sie eine ältere Version der Formeldatei wie folgt erhalten:
git checkout 5970e1 docker-machine.rb
Deinstallieren Sie Ihre aktuelle Paketversion. Führen Sie einfach die normalen Brew-Befehle aus, um die aktuelle Version Ihres Pakets zu deinstallieren.
Ex. brew uninstall docker-machine
Installieren Sie die ältere Paketversion Jetzt können Sie einfach den normalen Installationsbefehl für das Brühen ausführen und die Formel installieren, die Sie ausgecheckt haben. Ex. brew install docker-machine
Möglicherweise müssen Sie die Verknüpfung mit brew link docker-machine
Wiederherstellen, falls erforderlich.
Wenn Sie zu irgendeinem Zeitpunkt auf die neueste Version eines bestimmten Pakets zurückgreifen möchten, rufen Sie das Formelverzeichnis auf und geben Sie die folgenden Befehle in Ihrer Formeldatei (.rb) ein.
git reset HEAD docker-machine.rb
git checkout -- docker-machine.rb
Dann können Sie brew uninstall docker-machine
Und brew install docker-machine
Verwenden, um die neueste Version zu erhalten und diese auch weiterhin zu verwenden.
es könnte für die letzte Version des Brauens sehr leicht gemacht werden.
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)
Die meisten anderen Antworten sind inzwischen veraltet. Leider hat Homebrew noch keine eingebaute Möglichkeit, eine veraltete Version zu installieren, es sei denn, diese Version ist als separate Formel vorhanden (z. B. [email protected]
, [email protected]
…).
Glücklicherweise gibt es für andere Formeln einen viel einfacheren Weg als das gewundene Chaos, das früher notwendig war. Hier sind die vollständigen Anweisungen:
Suchen Sie in den Protokollen nach der richtigen Version:
brew log --format=format:%H\ %s -F --grep=‹version› ‹formula›
Dies zeigt eine Liste von Commit-Hashes. Nimm eine, die angemessen ist (meistens sollte es ziemlich offensichtlich sein und ist in der Regel die jüngste (d. H. Oberste).
Suchen Sie die URL, unter der sich die Formel im Upstream-Repository befindet:
brew info ‹formula› | grep ^From:
Korrigieren Sie die URL:
github.com
durch raw.githubusercontent.com
blob/master
durch den Commit-Hash, den wir im ersten Schritt gefunden haben.Installieren Sie die gewünschte Version, indem Sie master
in der zuvor gefundenen URL durch den Festschreibungshash ersetzen, z.
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/‹hash›/Formula/‹formula›.rb
(Der letzte Schritt kann es erforderlich machen, vorher brew unlink ‹formula›
auszuführen.)
Keines davon funktionierte wirklich für meinen Fall (Python), also füge ich meine 2 Cent hinzu:
cd `brew --prefix`
git log Library/Formula/python.rb
Die Ausgabe sieht folgendermaßen aus:
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. ...
Ich möchte Version 2.7.11
, so dass mein Hash cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9
(oder kurz cf5da05
) ist. Als nächstes checke ich diese Version aus und installiere die Formel python
:
git checkout cf5da05
brew install python
Zum Schluss aufräumen:
git checkout master
Wenn Sie Ihre Version mit brew search <formula>
nicht finden können, können Sie auch die Commit-Protokolle für Ihre Formel durchgehen, um die gewünschte Version zu finden:
hier ist ein Beispiel für die Installation einer älteren Version von Nginx via brew:
siehe nginx: update 1.6.3 bottle eba75b9a1a474b9fc4df30bd0a32637fa31ec049
Von dort aus können wir 1.6.3
mit der sha und raw git-URL installieren:
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
Ich habe die meisten Lösungen hier ausprobiert und sie sind veraltet. Ich musste einige Ideen von hier aus mit meiner eigenen Arbeit verbinden. Als Ergebnis habe ich ein Skript erstellt, mit dem ich das schwere Heben erledigen kann, das Sie hier finden können: hier
Verwendung: brewv.sh formula_name desired_version
Derzeit sind die alten Installationsmethoden für bestimmte Formelversionen veraltet. Es scheint also so, als müssten wir brew edit [formula]
verwenden. Z.B. Angenommen, wir möchten eine 62.1
-Version von icu4c
installieren (die beispielsweise für postgresql 10.5
benötigt wird). Dann müsstest du
> brew edit icu4c
# drops you to editor
Hier müssen Sie die url
, version
und sha256
(vielleicht auch mirror
) in die entsprechenden 62.1
-Zeichenfolgen ändern.
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"
führen Sie dann brew reinstall icu4c
aus, um die 62.1
-Version endgültig herunterzuladen.
Ich habe gerade eine ältere Version von elasticsearch in das Verzeichnis /usr/local/Cellar/elasticsearch
kopiert.
$ 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
Das ist es ... Vielleicht ist es nützlich für alle.
Leider hat Homebrew noch keine offensichtliche Möglichkeit, eine ältere Version zu installieren.
Glücklicherweise gibt es für die meisten Formeln einen viel einfacheren Weg als das gewundene Chaos, das früher nötig war. Hier sind die vollständigen Anweisungen am Beispiel von bash
:
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.
Dadurch wird der [email protected]
in Ihrem benutzerdefinierten Tap erstellt, den Sie gemäß dem obigen Beispiel installieren können. Ein wichtiger Hinweis ist, dass Sie wahrscheinlich brew unlink bash
müssen, wenn Sie zuvor die Standard-/neueste Version der Formel installiert hatten, und dann brew link [email protected]
, um Ihre spezifische Version von Bash zu verwenden (oder eine andere Formel, bei der Sie die neueste und eine ältere Version installiert haben). .
Ein möglicher Nachteil dieser Methode ist, dass Sie nicht einfach zwischen den Versionen wechseln können, da es sich laut brew
um eine "andere Formel" handelt.
Wenn Sie brew switch $FORMULA $VERSION
verwenden möchten, sollten Sie die nächste Methode verwenden.
Dieses Beispiel zeigt die Installation der älteren Bash 4.4.23, ein nützliches Beispiel, da die Formel bash
derzeit Bash 5 installiert.
brew install bash
brew unlink bash
brew switch bash 4.4.23
, um die Symlinks zu Ihrer Version einzurichtenWenn Sie nach der Installation einer älteren Version einen brew upgrade
ausgeführt haben, ohne zuerst die neueste Version zu installieren, wird die neueste Version installiert, sofern Sie brew pin bash
nicht zum ersten Mal ausgeführt haben.
Die hier beschriebenen Schritte VERMEIDEN das Anheften, da es leicht zu vergessen ist und Sie möglicherweise an eine Version anheften, die in Zukunft unsicher wird (siehe Shellshock/etc). Bei diesem Setup sollte sich ein brew upgrade
nicht auf Ihre Version von Bash auswirken, und Sie können jederzeit brew switch bash
ausführen, um eine Liste der verfügbaren Versionen zu erhalten, zu denen Sie wechseln können.
Kopieren Sie die export
-Zeilen aus dem folgenden Code-Snippet, fügen Sie sie ein und bearbeiten Sie sie, um sie mit der gewünschten Version und dem gewünschten Formelnamen zu aktualisieren. Kopieren Sie den Rest, und fügen Sie ihn unverändert ein. Diese Variablen werden verwendet, um die Magie auszuführen.
# 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
Wenn Sie sicher sind, dass die Version in der Formel vorhanden ist, können Sie Folgendes verwenden:
# 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}')
Nachdem Sie den zu verwendenden Commit-Hash exportiert haben, können Sie diese Version des Pakets installieren.
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
Befolgen Sie die Anweisungen in der Formelausgabe, um sie in PATH zu speichern oder als Standard-Shell festzulegen.
Aktualisieren Sie in der Zeile Library/Formula/postgresql.rb 8 die Zeile
http://ftp2.uk.postgresql.org/sites/ftp.postgresql.org/source/v8.4.6/postgresql-8.4.6.tar.bz2
Und MD5 in Zeile 9 bis
fcc3daaf2292fa6bf1185ec45e512db6
Speichern und schließen.
brew install postgres
initdb /usr/local/var/postgres
In dieser Phase könnte es vorkommen, dass Sie mit dem postgresql could not create shared memory segment
-Fehler konfrontiert sind, um das /etc/sysctl.conf
-Update folgendermaßen zu umgehen:
kern.sysv.shmall=65536
kern.sysv.shmmax=16777216
Versuchen Sie es erneut mit initdb /usr/local/var/postgres
und es sollte reibungslos laufen.
Postgresql beim Start ausführen
launchctl load -w /usr/local/Cellar/postgresql/8.4.6/org.postgresql.postgres.plist
Hoffentlich hilft das :)
Für Versionen, die derzeit nicht in den Standardbrühformeln enthalten sind, können Sie ganz einfach mit dem Tool aus https://github.com/buildtools-version-taps/homebrew-versions-tap-tool ein eigenes Tap erstellen.
Ich entschied mich gegen mein besseres Urteil, eine Formel für Maven 3.1.1 zu erstellen, die homebrew/versions
nicht hatte. Um dies zu tun:
homebrew/versions
auf github gegabelt.$(brew --prefix)/Library/Taps
zur lokalen Arbeitskopie meiner Gabel. Ich nenne das my-homebrew/versions
.my-homebrew/versions/<formula>
spezifizierte.homebrew/versions
für meine neue Formel gesendet.Yay.