it-swarm.com.de

Homebrew installieren bestimmte Version der Formel?

Wie installiere ich eine bestimmte Version einer Formel in Homebrew? Zum Beispiel postgresql-8.4.4 anstelle von 9.0.

1859
Gravis

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

1) Prüfen Sie, ob die Version bereits installiert ist (aber nicht aktiviert ist).

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.

2) Prüfen Sie, ob die Version als Tipp verfügbar ist

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.

3) Versuchen Sie eine Formel aus der Vergangenheit

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.

4) Schreiben Sie manuell eine Formel

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.

A.) Bonus: Pinning

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
2252
Debilski

Einfacher Workflow

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]
695
Bijan

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 .

440
Trevor Burnham

Update: 15.1.2015

  • Finden Sie die Commit-Historie der gewünschten Software und Version. z.B. Ich muss von Docker-Version 1.4.1 zu 1.3.3 wechseln: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • Zeigen Sie die Datei mit dieser Schaltfläche an: enter image description here
  • Klicken Sie auf die Raw-Schaltfläche: List item
  • Kopieren Sie den URL (Docker.rb-URL in diesem Beispiel) aus der Adressleiste
  • brew install <url> (muss brew unlink zuerst sein, beispielsweise brew unlink docker)
  • brew switch docker 1.3.3
  • Zurück zum Docker 1.4.1 wechseln 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
202
Vishal

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
101
halfcube

Ganz im Sinne des @ halfcube-Vorschlags funktioniert das sehr gut:

  1. Die Bibliothek, nach der Sie suchen, finden Sie unter https://github.com/Homebrew/homebrew-core/tree/master/Formula
  2. Klicken Sie darauf: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
  3. Klicken Sie auf die Schaltfläche "Verlauf", um alte Commits anzuzeigen: https://github.com/Homebrew/homebrew-core/commits/master/Formula/postgresql.rb
  4. Klicken Sie auf den gewünschten Link: "postgresql: update version to 8.4.4", https://github.com/Homebrew/homebrew-core/blob/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f4f4f422/Library/Formula/postgresql.rb
  5. Klicken Sie auf den Link "roh": https://raw.githubusercontent.com/Homebrew/homebrew-core/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f4f4f422/Library/Formula/postgresql.rb
  6. brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
74
Lance Pollard

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.

  1. Gehe zu https://github.com/Homebrew/homebrew-core

  2. Drücken Sie t auf Ihrer Tastatur, um den Dateisucher zu aktivieren.

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

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

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

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.

  1. Klicken Sie auf die Schaltfläche "Anzeigen", um die Quelle für die mysql.rb-Datei anzuzeigen, nachdem der Commit ausgeführt wurde.

  2. Klicken Sie dann auf die Schaltfläche "Raw", um die Rohquelle anzuzeigen.

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

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

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

63
sealocal

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.

28
Cameron Goodale

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

:)

21
MattiSG

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

  1. Suchen Sie Ihre Formeldatei, z. B .: https://github.com/Homebrew/homebrew-core/blob/master/Formula/terraform.rb
  2. Holen Sie sich die Commit-Version aus dem Github-Verlauf mit https://github.com/Homebrew/homebrew-core/commits/master/Formula/terraform.rb oder git log master -- Formula/terraform.rb wenn Sie das Repo lokal geklont haben.
  3. Rufen Sie die Raw-Git-URL mit der Commit-Version Ihrer Formel ab: Wenn der Formel-Link in github.com https://github.com/Homebrew/homebrew-core/blob/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula lautet /terraform.rb , Ihre unformatierte URL lautet: https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform .rb
  4. Installiere es mit: brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
16
Miguel Reyes

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.

11
Alex Sharp

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.

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

  2. Suchen Sie die spezifische Formeldatei (.rb) für Ihr Paket. Da ich docker-machine Downgraden möchte, wird eine docker-machine.rb - Datei angezeigt.

  3. 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).

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

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

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

9
rchawdry

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

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:

  1. 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).

  2. Suchen Sie die URL, unter der sich die Formel im Upstream-Repository befindet:

    brew info ‹formula› | grep ^From:
    
  3. Korrigieren Sie die URL:

    1. Ersetzen Sie github.com durch raw.githubusercontent.com
    2. Ersetzen Sie blob/master durch den Commit-Hash, den wir im ersten Schritt gefunden haben.
  4. 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.)

7
Konrad Rudolph

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
6
tenfishsticks

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:

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

5
lfender6445

Installieren Sie eine alte Version des Brühpakets (Beispiel Flyway 4.2.0)

Finden Sie Ihr lokales Homebrew-Git-Verzeichnis oder klonen Sie Homebrew/Homebrew-Kern lokal

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

OR

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

Alle verfügbaren Versionen auflisten

git log master -- Formula/flyway.rb

Kopieren Sie die Commit-ID für die gewünschte Version und installieren Sie sie direkt

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

3
ffghfgh

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

2
demosten

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.

2
Emil Rehhnberg

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.

1
Thaars

Offizielle Methode (gemessen an der Antwort auf https://github.com/Homebrew/brew/issues/6028 )

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.


Skriptmethode (empfohlen)

Dieses Beispiel zeigt die Installation der älteren Bash 4.4.23, ein nützliches Beispiel, da die Formel bash derzeit Bash 5 installiert.

  • Installieren Sie zuerst die neueste Version der Formel mit brew install bash
  • dann brew unlink bash
  • installieren Sie dann die ältere Version, die Sie möchten, anhand der folgenden Ausschnitte
  • verwenden Sie schließlich brew switch bash 4.4.23, um die Symlinks zu Ihrer Version einzurichten

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

1
dragon788

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

1
mmrs151

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.

0
Lutzifer

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:

  1. Ich habe homebrew/versions auf github gegabelt.
  2. Ich hatte einen Link von $(brew --prefix)/Library/Taps zur lokalen Arbeitskopie meiner Gabel. Ich nenne das my-homebrew/versions.
  3. Ich habe es getestet, indem ich die Formel als my-homebrew/versions/<formula> spezifizierte.
  4. Ich habe eine Pull-Anfrage an homebrew/versions für meine neue Formel gesendet.

Yay.

0