Homebrew bestimmte Version der Formel installieren?


2195

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


2
postgresqlist seltsam, weil es zu einem bestimmten Zeitpunkt separate Versionen in Homebrew gab. So etwas bashkönnte ein besseres Beispiel sein, da es innerhalb desselben Formelnamens von 4.x auf 5.x ging. Siehe stackoverflow.com/a/55764594/3794873
dragon788


2
Ich habe alle Antworten gelesen. Es ist 2020 und es gibt keinen einfachen Weg oder offiziellen Befehl, dies zu tun
oluckyman

Antworten:


2556

TLDR: brew install postgresql@8.4.4 Siehe Antwort unten für weitere Details.


* ( Ich habe meine Antwort überarbeitet, um einen gründlicheren Workflow für die Installation / Verwendung älterer Softwareversionen mit Homebrew zu ermöglichen. Sie können jederzeit eine Notiz hinzufügen, wenn Sie die alte Version besser gefunden haben. )

Beginnen wir mit dem einfachsten Fall:

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

Wenn Homebrew eine neue Formel installiert, wird sie in ein versioniertes Verzeichnis wie /usr/local/Cellar/postgresql/9.3.1. Es werden dann nur symbolische Links zu diesem Ordner global installiert. Dies macht es im Prinzip ziemlich einfach, zwischen zwei installierten Versionen zu wechseln. (*)

Wenn Sie Homebrew schon länger verwenden und ältere Versionen nie entfernt haben (z. B. mit brew cleanup), besteht die Möglichkeit, dass eine ältere Version Ihres Programms noch vorhanden ist. Wenn Sie diese vorherige Version einfach aktivieren möchten, brew switchist dies der einfachste Weg.

Überprü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 aktivieren mit 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

Überprüfen wir noch einmal, 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 *auf die neu aktivierte Version verschoben wurde

(*) Bitte beachten Sie, dass dies brew switchnur funktioniert, solange alle Abhängigkeiten der älteren Version bestehen. In einigen Fällen kann eine Neuerstellung der älteren Version erforderlich werden. Daher ist die Verwendung brew switchmeistens nützlich, wenn zwischen zwei Versionen gewechselt werden soll, die nicht zu weit voneinander entfernt sind.

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

Insbesondere bei größeren Softwareprojekten besteht sehr wahrscheinlich eine ausreichend hohe 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& das Repository für Homebrew-Versionen .

Dieses Versions-Repository kann Backports ä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 dies automatisch auf den homebrew/versionsWasserhahn getippt hat. (Überprüfen Sie mit brew tap, entfernen Sie mit brew untap homebrew/versions.) Folgendes wäre gleichwertig 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 hauptsächlich der Vollständigkeit halber aufgeführt. Beide versuchen, eine untote Formel aus dem Aufbewahrungsort wiederzubeleben. Aufgrund geänderter Abhängigkeiten, API-Änderungen in der Formelspezifikation oder einfach einer Änderung der Download-URL können Dinge funktionieren oder nicht.

Da das gesamte Formelverzeichnis ein Git-Repository ist, können bestimmte Versionen mit einfachen Git-Befehlen installiert werden. Wir müssen jedoch einen Weg finden, um zu einem Commit zu gelangen, bei dem die alte Version verfügbar war.

a) historische Zeiten

Zwischen August 2011 und Oktober 2014 hatte Homebrew einen brew versionsBefehl, der alle verfügbaren Versionen mit ihren jeweiligen SHA-Hashes ausspuckte. Ab Oktober 2014 müssen Sie eine ausführen, brew tap homebrew/boneyardbevor Sie sie verwenden können. Wie der Name des Wasserhahns andeutet, 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 können, rät es davon ab, es zu verwenden. Homebrew spuckt alle Versionen aus, die es mit seiner internen Heuristik finden kann, und zeigt Ihnen, wie Sie die alten Formeln abrufen können. 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

Nachdem 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 versuchen, das Homebrew-Repo selbst zu durchforsten.

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

git log -SSucht nach allen Commits, bei denen die Zeichenfolge '8.4.4'in der Datei hinzugefügt oder entfernt wurde Library/Taps/homebrew/homebrew-core/Formula/postgresql.rb. 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 fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422ist das Commit, an dem wir interessiert sind. Da dieses Commit ziemlich alt ist, werden wir versuchen, die gesamte Homebrew-Installation herunterzustufen (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 führen Sie ein vorübergehendes Downgrade Ihrer Homebrew-Installation durch. Sie sollten also vorsichtig sein, da einige Befehle in Homebrew möglicherweise von der neuesten Version abweichen.

4) Schreiben Sie manuell eine Formel

Es ist nicht zu schwer und Sie können es dann in Ihr eigenes Repository hochladen. Früher waren es Homebrew-Versionen , aber das wird jetzt eingestellt.

A.) Bonus: Fixieren

Wenn Sie eine bestimmte Version von, sagen wir postgresql halten wollen, um und verhindern , dass es aktualisiert wird , wenn Sie die natürliche tun brew update; brew upgradeProzedur können Sie Stift eine Formel:

$ brew pin postgresql

Fixierte Formeln werden in aufgelistet. /usr/local/Library/PinnedKegs/Sobald Sie die neuesten Änderungen und Aktualisierungen vornehmen möchten, können Sie sie wieder entfernen :

$ brew unpin postgresql

18
Sie können die Formel auch einfach mit auschecken git checkout fa992 -- Library/Formula/postgresql.rb. Wenn Sie fertig sind, können Sie die Änderungen an der Formel mit rückgängig machen git revert HEAD Library/Formula/postgresql.rb && git checkout -- Library/Formula/postgresql.rb.
Mipadi

18
Hinweis: Bei einer Neuinstallation von Homebrew müssen Sie möglicherweise brew updatedas Git-Repo einrichten.
Bluu

557
Das ist lächerlich schwierig.
Dogweather

30
Ab heute ist das richtige Verzeichnis, um die manuellen Befehle für das Repository auszuführen cd $(brew --repository)/Library/Taps/homebrew/homebrew-core, dann können Sie git checkout 4cce79d -- Formula/go.rbund verwenden HOMEBREW_NO_AUTO_UPDATE=1 brew install go.
Calin

12
Homebrew / Versionen ist veraltet
Ezekiel Victor

775

Einfacher Workflow

Nachdem Homebrew / Versionen veraltet sind, unterstützt Homebrew / Core mehrere Versionen von Formeln mit einem neuen Namensformat.

Um eine bestimmte Version zu installieren, z. B. postgresql 9.5, führen Sie einfach Folgendes aus:

$ brew install postgresql@9.5

Um die verfügbaren Versionen aufzulisten, führen Sie eine Suche mit @ durch:

$ brew search postgresql@
==> Searching local taps...
postgresql@10.1 ✔     postgresql@9.4        postgresql@9.5        postgresql@9.6

8
Scheint am einfachsten zu sein, aber wenn ich kopiere und einfüge, bekomme ich fatal: Not a git repository (or any of the parent directories): .git. Ich cdgehe stattdessen einfach in das Verzeichnis (ohne FORMULANAME.rb) und mache dann dengit checkout 120938
Ramon Tayag

8
@ RamonTayag, ich hatte das gleiche Problem. Seien Sie sicher, cd /usr/localzuerst.
GJB

13
Ich fand, Sie brauchen einen Schritt 3.5:brew unlink FORMULANAME
Absichten

37
brew versions <formula>wird nicht mehr unterstützt.
Ejoubaud

4
@ dem7w2 können Sie die Symlinks mit erstellen brew link --force postgresql@9.5. Wenn Sie bereits eine neuere Version installiert haben und möchten, dass die ältere Version Ihre Standardversion ist, benötigen Sie --overwritedort auch eine.
Ryan

457

Es gibt jetzt eine viel einfachere Möglichkeit, eine ältere Version einer Formel zu installieren, die Sie zuvor installiert hatten. Einfach benutzen

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 switchnur die Symlinks geändert werden, ist es sehr schnell. Weitere Dokumentation im Homebrew-Wiki finden Sie unter Externe Befehle .


2
Ich habe dies versucht und es folgte die Meldung "33 Links erstellt für /usr/local/Cellar/node/0.4.7", aber wenn ich den Knoten anschließend ausführe, schlägt die Meldung "-bash: / usr / local / fehl. bin / node: Keine solche Datei oder kein solches Verzeichnis ". Irgendeine Idee, was schief gelaufen sein könnte? Hinweis: Ich habe 0.4.7 manuell heruntergeladen und in das Kellerverzeichnis gestellt, da ich nur die neueste Knotenversion mit Brew herunterladen kann.
Soroush Hakami

6
Ich hoffe, Sie wissen, dass es etwas gibt, das 'nvm' heißt [ github.com/creationix/nvm] !
Gaurav Agarwal

40
Ich verlasse mich auf die Paketversion, die bereits installiert ist. Wenn Sie die Version vermissen, müssen Sie die ausgewählte Antwort trotzdem anwenden.
Nic Strong

1
Insbesondere für die Knotenversion mgmt ist nvm eine bessere Lösung, imho.
zweiwöchentlich

5
@NicStrong In der Tat ist brew switchdie gesuchte Version bereits installiert. Leider ist die derzeit akzeptierte Antwort unglaublich wenig hilfreich, verworren und veraltet. Es gibt bessere Antworten, die viel hilfreicher sind.
GDP2

250

Update: 15.01.2015

  • Suchen Sie den Commit-Verlauf der gewünschten Software und Version. Ich muss beispielsweise von Docker-Version 1.4.1 auf 1.3.3 wechseln: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • Zeigen Sie die Datei mit dieser Schaltfläche an: Geben Sie hier die Bildbeschreibung ein
  • Klicken Sie auf die Schaltfläche Raw: Listenpunkt
  • Kopieren Sie die URL (in diesem Beispiel die URL docker.rb) aus der Adressleiste
  • brew install <url>(muss vielleicht brew unlinkzuerst, zB brew unlink docker)
  • brew switch docker 1.3.3
  • Wechseln Sie zurück zu Docker 1.4.1 brew switch docker 1.4.1

Aus diesem Kern

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

46
Dies ist das einzige, was für mich funktioniert hat. Ziemlich albern, dass ein Paketmanager so viel Aufwand braucht, um eine frühere Version zu installieren. Vielleicht bin ich von Ruby RVM und Bundler verwöhnt, aber dieser Prozess muss wirklich rationalisiert und abstrahiert werden.
Poetmountain

3
Als ich versuchte, zu einer früheren Version von Ansible zu wechseln, musste ich die Verknüpfung der Formel aufheben, bevor ich die vorherige Version wie angegeben installierte. Also vorher brew install <url>, brew unlink <formulaname>. Andernfalls ist dies (bisher) die einfachste und prägnanteste Möglichkeit, zu einer bestimmten Version einer Formel zu wechseln.
Bigsweater

Sie Rawdrücken die Taste auf welcher Datei?!
Iulian Onofrei

1
Es funktioniert, aber gelegentlich müssen Sie die rohe .rb-Datei herunterladen und die Prüfsumme ändern, um zu vermeiden, dass Homebrew sich über SHA-Nichtübereinstimmungen beschwert. GitHub scheint irgendwann im Jahr 2017 einen großen Teil der Repo-Bäume durchsucht zu haben, und ihre Prüfsummen haben sich geändert. (Eigentlich hat es in meinem Team viel Verwirrung gestiftet, als Bazel letzten Juli aufgrund von Hash-Fehlpaarungen zu scheitern begann.)
Chang Qian

6
Ich fand die Adresse leicht vonbrew log <formula>
Kangkyu

128

In Anlehnung an den Vorschlag von @ halfcube funktioniert dies wirklich gut:

  1. Die gesuchte Bibliothek 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 die gewünschte Datei: "postgresql: Version auf 8.4.4 aktualisieren", https://github.com/Homebrew/homebrew-core/blob/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  5. Klicken Sie auf den Link "raw": https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  6. brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb

8
Dies ist der einfachste Weg, um die benötigte Version eines Pakets zu installieren, wenn es im Core Repo nicht verfügbar istpackage@version
avy

7
Wenn Sie die Weboberfläche nicht verwenden können, können Sie das Repo klonen und lokal git log master -- Formula/PACKAGENAME.rbausführen : Verwenden Sie diese Option , um den Commit-Verlauf abzurufen, das richtige Commit zu überprüfen und dann auszuführen brew install Formula/PACKAGENAME.rb, um es zu installieren.
Chipbuster

7
Ich denke du brauchst brew unlinkvorher eine brew installandere Version.
Studgeek

Wer ist das mxcl?
PJSCopeland

1
Ich mache das brew install https://github.com/Homebrew/homebrew-core/raw/afc10f17af8023906b87363a8340aeb62284329f/Formula/postgresql%409.6.rb, bekomme aber den Fehler, wahrscheinlich aufgrund des @Zeichens: Error: No available formula with the name "postgresql%409.6" In formula file: /Users/maciek/Library/Caches/Homebrew/Formula/postgresql%409.6.rb Expected to find class Postgresql%4096, but only found: PostgresqlAT96.Irgendwelche Ideen?
msciwoj

109

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 habe diese Lösung gefunden, indem ich die Schritte zum Durchsuchen des Repos und einen Kommentar im Repo befolgt habe.

Nach ein wenig Recherche fand jemand eine Sammlung seltener Formulare zum Brauen.


Wenn Sie nach MySQL 5.1.x suchen, probieren Sie es aus.

brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb

1
hmm, brew install https://github.com/Homebrew/homebrew-versions/blob/master/node06.rbschien mit Syntaxfehlern zu scheitern.
Brian Armstrong

6
@BrianArmstrong Sie beziehen sich auf eine HTML-formatierte Version der Datei, während Sie eine Rohversion benötigen .
Nikita Volkov

Gehen Sie zu github.com/Homebrew/homebrew/commits/master/Library/Formula/… , wählen Sie Ihre Version aus, durchsuchen Sie den Code, roh - verwenden Sie diese URL.
jpillora

1
Vergessen Sie nicht die rawin der URL
Faber

9
homebrew-versionsist weg und alles läuft corejetzt, also ist der allgemeine Fall : brew install https://raw.github.com/Homebrew/homebrew-core/<COMMIT>/Formula/<FORMULA>.rb. COMMITfinden Sie unter github.com/Homebrew/homebrew-core/commits/master/Formula/… .
PJSCopeland

78

Sie können die Strategie verwenden, die Formel und ein bestimmtes Commit im Verlauf der Formel zu identifizieren, das der Version des Pakets entspricht, das Sie installieren möchten.

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

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

  3. Identifizieren Sie eine Formel, die vielleicht am relevantesten aussieht: Formula/mysql.rb und bringen Sie zu einem Forumla-Dateispeicherort: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb .

  4. Sehen Sie sich den Versionsverlauf an History, indem Sie auf die Schaltfläche unter klicken https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb . Wenn Sie an MySQL 5.7.10 interessiert sind, möchten Sie möglicherweise auf die neueste Version vor 5.7.11 klicken, um zu einem GitHub-Commit zu navigieren:

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

HINWEIS: Möglicherweise müssen Sie den Festschreibungsverlauf in Ihrer Konsole gemäß dem Vorschlag von GitHub anzeigen, wenn der Festschreibungsverlauf nicht in Ihren Browser geladen wird. Ersetzen Sie den Commit-SHA oben in der URL, wenn Sie diesen Commit auf 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 Datei mysql.rb anzuzeigen, nachdem das Commit angewendet wurde.

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

  3. Kopieren Sie die URL. Alternativ können Sie die URL selbst mit dem erstellenmysql.rb Dateinamen erstellen, um Ihre Formel und die bestimmte Version dieser Formel zu identifizieren (identifiziert durch die Commmit-SHA in der unten stehenden URL).

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

  4. Installieren Sie 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. Das gleiche Prinzip gilt, Braumeister hatte lediglich eine anfängerfreundliche Möglichkeit zum Navigieren in Formelversionen bereitgestellt.


13
Leider ist dies zu weit unten in der Liste der Antworten, aber die beste Lösung. Dies ist, was ich benutze, außer dass ich anstelle von braumeister einfach zur Homebrew GitHub-Seite der gewünschten Formel gehe (z. B. für gcc gehen Sie zu github.com/Homebrew/homebrew/blob/master/Library/Formula/gcc.rb ) und dann gehe ich den "Verlauf" der Datei durch, bis ich zu der gewünschten Version komme.
Guy Kogus

3
Dies war definitiv die beste Lösung in meinem Fall - Installation einer älteren Version von Watchman, für die kein Xcode 8.1 erforderlich war
Zachary Keener

3
Dies ist wirklich der einfachste Weg, um eine ältere Version zu installieren. Tolle Antwort
Martin

4
Dies funktionierte für mich, aber ich musste zuerst die Verknüpfung der Software aufheben.
Brett Wagner

3
Dies war die einfachste Lösung für mich. Dies sollte höher sein, da die akzeptierte Antwort veraltet ist.
Tim W

35

Die meisten anderen Antworten sind mittlerweile veraltet. Leider noch Homebrew keine eingebaute Möglichkeit , eine veraltete Version der Installation haben, es sei denn , diese Version als separate Formel besteht (zB python@2, postgresql@9.4 ...).

Glücklicherweise gibt es für andere Formeln einen viel einfacheren Weg als das gewundene Durcheinander, das früher notwendig war. Hier sind die vollständigen Anweisungen:

  1. Suchen Sie in den Protokollen nach der richtigen Version:

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

    Dies zeigt eine Liste von Commit-Hashes. Nehmen Sie eine, die angemessen ist (meistens sollte es ziemlich offensichtlich sein, und normalerweise ist es die neueste (dh die beste).

  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 github.comdurchraw.githubusercontent.com
    2. Ersetzen Sie blob/masterdurch den Commit-Hash, den wir im ersten Schritt gefunden haben.
  4. Installieren Sie die gewünschte Version, indem Sie masterdie zuvor gefundene URL durch den Commit-Hash ersetzen , z.

    brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/‹hash›/Formula/‹formula›.rb
    

(Der letzte Schritt muss möglicherweise brew unlink ‹formula›vorher ausgeführt werden.)


Wenn Sie einen Commit-Hash kopiert haben, den Sie verwenden möchten, können Sie diese Version mithilfe dieses Beispiels installieren, indem Sie den Wert bashdurch Ihren Commit-Hash und Ihre gewünschte Formel ersetzen .

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

In diesem Beispiel wird Bash 4.4.23 anstelle von Bash 5 installiert. Wenn Sie jedoch brew upgradedanach Bash 5 ausführen, wird Bash 5 oben installiert, sofern Sie es nicht zuerst ausgeführt haben brew pin bash. Statt diesen glatten OHNE Pinning, sollten Sie zunächst die neueste mit installieren brew install bash, dann brew unlink bash, dann installieren Sie die ältere Version , die Sie per Skript oben wollen, und dann verwenden , brew switch bash 4.4.23um die ältere Version die symbolischen Links einzurichten. Jetzt brew upgradesollte a Ihre Version von Bash nicht beeinflussen. Sie können brew switch basheine Liste der verfügbaren Versionen abrufen, zu denen Sie wechseln können.


Alternative mit einem benutzerdefinierten lokalen Tipp

Ein anderer Weg, um das gleiche Ziel zu erreichen, scheint zu sein:

brew tap-new username/repo-name
# extract with a version seems to run a grep under the hood
brew extract --version='4.4.23' bash username/repo-name
brew install bash@4.4.23
# Note this "fails" when trying to grab a bottle for the package and seems to have
# some odd doubling of the version in that output, but this isn't fatal.

Dadurch wird formula@versionin Ihrem benutzerdefinierten Tap ein Tipp erstellt, den Sie gemäß dem obigen Beispiel installieren können. Der Nachteil ist, dass Sie wahrscheinlich noch brew unlink bashund dann benötigen, brew link bash@4.4.23um Ihre spezifische Version von Bash oder eine andere Formel zu verwenden.


1
Sie haben anscheinend die Syntax geändert, brew logsodass zusätzliche -Foder --grepOptionen für mich fehlgeschlagen sind.
Dragon788

1
@ dragon788 Verdammt, Homebrew 2 ist komplett kaputt gegangen brew log. Ich kann mir jetzt nicht die Mühe machen, eine neue Version zu schreiben, da dazu die Git-Protokollnachricht ordnungsgemäß analysiert oder alternativ git logdirekt im entsprechenden Repository ausgeführt werden muss. Und das Changelog scheint diese bahnbrechende Änderung nicht einmal zu erwähnen. Mehr als nervig.
Konrad Rudolph

Wenn sie nicht akzeptieren, dass die Änderung des Verhaltens ein Fehler ist, scheint External Commandes erforderlich zu sein, innerhalb der Struktur von brewzu arbeiten, um diese Art der git logFilterung zurückzubekommen. docs.brew.sh/External-Commands
dragon788

Dies war der einzige Ort, an dem ich die richtige brew extractVerwendung finden konnte, danke!
Dognotdog

Ich würde vorschlagen, dass das benutzerdefinierte local0only nur auf den ersten Teil Ihrer Antwort tippt. Es scheint wirklich die beste Lösung insgesamt zu sein.
Studgeek

29

Ich habe gerade Homebrew verwendet, um zu Maven 2.2.1 zurückzukehren, seit der einfach brew install maveninstallierten Maven 3.0.3.

Zuerst muss man das Maven-Verzeichnis dort also lassen

$ Brew Unlink Maven

Verwenden Sie den Befehl Brew Tap

$ Brew Tap Homebrew / Versionen
Klonen in '/ usr / local / Library / Taps / homebrew-Versionen' ...
remote: Objekte zählen: 590, fertig.
remote: Objekte komprimieren: 100% (265/265), fertig.
Remote: Insgesamt 590 (Delta 362), wiederverwendet 549 (Delta 325)
Empfangen von Objekten: 100% (590/590), 117,49 KiB | 79 KiB / s, fertig.
Auflösen von Deltas: 100% (362/362), erledigt.
50 Formel abgegriffen

Jetzt können Sie die Formel maven2 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,1 MB, erstellt in 6 Sekunden
$ mvn --version
Apache Maven 2.2.1 (r801777; 2009-08-06 12: 16: 01-0700)
Java-Version: 1.6.0_37
Java-Startseite: /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 brew switch maven 2.2.1zu einer anderen Version wechseln.

Bearbeiten: Das Apache Maven-Projekt hat das Repo neu organisiert. Diese Antwort wurde aktualisiert, um diese Änderung zu berücksichtigen.


Das war sehr hilfreich. Beachten Sie, dass die Apache Foundation die Maven-Binärdateien in version (1,2,3) -spezifische Verzeichnisse reorganisiert hat. Daher müssen Sie die maven.rb für 2.2.1 und möglicherweise andere bearbeiten, um sie an die neue Struktur anzupassen. Die Binärdatei für 2.2.1 befand sich beispielsweise unter: apache.org/dist/maven/maven-2/2.2.1/binaries/… . Beachten Sie das "maven-2 / 2.2.1 /" in der URL.
Charles Forcey

@CharlesForcey Sie haben Recht, dass das Maven Dist Repo neu organisiert wird. Ich werde die Antwort aktualisieren, um Brew Tap zu verwenden, um die ältere maven2-Formel zu verwenden. Danke für den Kommentar.
Cameron Goodale

21

Basierend auf dem von @tschundeee und @ Debilskis Update 1 beschriebenen Workflow habe ich die Prozedur automatisiert und in diesem Skript eine Bereinigung hinzugefügt .

Laden Sie es herunter , legen Sie es in Ihren Weg und brewv <formula_name> <wanted_version>. Für das spezifische OP wäre es:

cd path/to/downloaded/script/
./brewv postgresql 8.4.4

:) :)


4
Einfach super. Warum ist das nicht in Brauerei?
Adrian

3
Nicht mehr gefunden :(
D-32

18

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 verwendete Formel lautet terraform):

  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 unter https://github.com/Homebrew/homebrew-core/commits/master/Formula/terraform.rb oder git log master -- Formula/terraform.rbwenn Sie das Repo lokal geklont haben.
  3. Holen Sie sich die Raw-Git-URL mit der Commit-Version Ihrer Formel: Wenn der Formel-Link in github.com https://github.com/Homebrew/homebrew-core/blob/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb lautet , wird Ihre Raw-URL verwendet sein: https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
  4. Installieren Sie es mit: brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb

Um die Raw-Git-URL in Schritt 3 zu erhalten, können Sie auch einfach auf die Schaltfläche "Raw" klicken und die URL kopieren, zu der der Browser Sie führt.
Brian Topping

15

Offizielle Methode (nach der Antwort auf https://github.com/Homebrew/brew/issues/6028 zu urteilen )

Leider hat Homebrew immer 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 Durcheinander, das früher notwendig war. Hier sind die vollständigen Anweisungen am bashBeispiel:

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 bash@4.4.23
# 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 formula@versionin Ihrem benutzerdefinierten Tap angegebene Wert erstellt, den Sie gemäß dem obigen Beispiel installieren können. Ein wichtiger Hinweis ist, dass Sie dies wahrscheinlich tun müssen, brew unlink bashwenn Sie zuvor die Standard- / neueste Version der Formel installiert haben, und dann brew link bash@4.4.23, um Ihre spezifische Version von Bash (oder eine andere Formel, in der Sie die neueste und eine ältere Version installiert haben) zu verwenden.

Ein möglicher Nachteil dieser Methode ist, dass Sie nicht einfach zwischen den Versionen wechseln können, da brewes sich um eine "andere Formel" handelt.

Wenn Sie verwenden möchten, sollten brew switch $FORMULA $VERSIONSie die nächste Methode verwenden.


Skriptmethode (empfohlen)

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

  • Installieren Sie zuerst die neueste Version der Formel mit brew install bash
  • dann brew unlink bash
  • Installieren Sie dann die gewünschte ältere Version anhand der folgenden Snippets
  • Verwenden Sie schließlich brew switch bash 4.4.23, um die Symlinks zu Ihrer Version einzurichten

Wenn Sie brew upgradenach der Installation einer älteren Version eine Version ausführen, ohne zuerst die neueste Version zu installieren, wird die neueste Version installiert, die Ihre ältere Version blockiert, es sei denn, Sie haben sie zuerst ausgeführt brew pin bash.

Die Schritte hier vermeiden das Fixieren, da es leicht zu vergessen ist und Sie möglicherweise eine Version anheften, die in Zukunft unsicher wird (siehe Shellshock / etc). Mit diesem Setup brew upgradesollte sich a nicht auf Ihre Version von Bash auswirken, und Sie können jederzeit brew switch basheine Liste der verfügbaren Versionen abrufen, zu denen Sie wechseln können.

Kopieren Sie die exportZeilen aus dem folgenden Codeausschnitt, 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 dann den Rest wie er ist und fügen Sie ihn 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 Commit-Hash exportiert haben, den Sie verwenden möchten, können Sie damit die 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 Ihren PATH einzufügen, oder legen Sie sie als Standard-Shell fest.


12

Auf der neuesten Version von Homebrew (0.9.5 zum Zeitpunkt dieses Schreibens) gibt es ein spezielles Rezept für die Version des Homebrew-Fasses, das Sie installieren möchten. Beispiel:

$ brew search mongodb
mongodb    mongodb24  mongodb26

Dann mach es einfach brew install mongodb26wie normal.

Wenn Sie bereits die neueste Version installiert haben, müssen Sie die Verknüpfung der neuesten Version aufheben und die gewünschte Version verknüpfen : brew unlink mongodb && brew link mongodb26.


Dies kann zwar die Frage beantworten, es wäre jedoch vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Erik

1
@Erik Danke, behoben.
Alex Sharp

11

Das Problem dabei homebrew/versionsist, dass jemand diese bestimmte Version der Software im Repository haben muss, damit Sie sie verwenden können. Da dies brew versionsnicht mehr unterstützt wird, ist eine andere Lösung erforderlich. Bei Lösungen, die auf die Verwendung hinweisen brew switch, funktioniert dies nur, wenn Sie dies nicht getan haben, brew cleanupda die Version auf Ihrem Computer vorhanden sein muss.

Ich hatte ein Problem mit dem Wunsch, eine bestimmte ältere Version zu installieren, docker-machinedie nicht in aufgeführt ist homebrew/versions. Ich habe dies mit dem folgenden Problem gelöst, das auch für jede von Brew installierte Software funktionieren sollte. Das folgende Beispiel wird docker-machineals Paket verwendet, das ich von Version 0.5.0 auf 0.4.1 downgraden möchte.

  1. Gehen Sie zu Ihrem Homebrew- FormulaVerzeichnis.
    Sie können dies durch Ausführen feststellen brew info [any package name]. Zum Beispiel brew info docker-machinegibt mir eine Linie, die mir einen Weg zeigt - /usr/local/Cellar/docker-machine/0.5.0. Dies sagt mir, dass auf meinem Computer Homebrew unter installiert ist /usr/localund sich mein Formula Verzeichnis standardmäßig unter befindet/usr/local/Library/Formula

  2. Suchen Sie die spezifische Formeldatei (.rb) für Ihr Paket. Da ich ein Downgrade durchführen möchte docker-machine, kann ich eine docker-machine.rbDatei sehen.

  3. Rufen Sie den Versionsverlauf für diese Formeldatei ab . Geben Sie ein git log docker-machine.rb. Dadurch wird der vollständige Festschreibungsverlauf für diese Datei aufgelistet. Sie sehen die Ausgabe wie folgt:

    ...Mehr 

    Commit 20c7abc13d2edd67c8c1d30c407bd5e31229cacc
    Autor: BrewTestBot 
    Datum: Do 5. November 16:14:18 2015 +0000

        Docker-Maschine: 0.5.0 Flasche aktualisieren.

    Commit 8f615708184884e501bf5c16482c95eff6aea637
    Verfasser: 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: Montag, 21. September, 14:04:04 Uhr 2015 +0100

        Docker-Maschine: Update 0.4.1 Flasche.

    Commit 18fcbd36d22fa0c19406d699308fafb44e4c8dcd
    Autor: BrewTestBot 
    Datum: So 16. August 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 feststellen, dass die neueste Version 0.4.1 mit diesem Commit-Tag festgeschrieben wurde : commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423. Die Commits über diesem Punkt beginnen mit der Version 0.5.0 (Git-Protokolleinträge werden vom spätesten 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 abrufen:

    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 der älteren Paketversion Jetzt können Sie einfach den normalen Befehl zum Installieren von Brew ausführen und die Formel installieren, die Sie ausgecheckt haben. Ex.brew install docker-machine

Möglicherweise müssen Sie bei Bedarf eine erneute Verknüpfung verwenden brew link docker-machine.

Wenn Sie zu irgendeinem Zeitpunkt auf die neueste Version eines bestimmten Pakets zurückgreifen möchten, gehen Sie in das Formelverzeichnis 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 brew uninstall docker-machineund können brew install docker-machineSie die neueste Version erhalten und diese auch in Zukunft beibehalten.


1
Sehr gründlich schreiben @rchawdry, danke. Übrigens: Um das Commit zu finden, das der gewünschten Version entspricht, fügen Sie schnell den Parameter --grep hinzu git log --grep 0.4.1 docker-machine.rb.
Jerry Mindek

Für mich war der Weg/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
akauppi

Auf cairodiese Weise konnte ich nicht genug Versionsgeschichte für das Gebräu finden. Die Antwort von @ sealocal zeigte aus irgendeinem Grund mehr.
Akauppi

11

Es ist 2020 und die meisten Antworten sind veraltet

Meine Situation: postgresqlwurde versehentlich von 11 auf 12 aktualisiert. Ich möchte 11 behalten.

  1. Stoppen Sie die DB:
brew services stop postgresql
  1. Installieren Sie Postgres 11:
brew install postgresql@11
  1. Aktivieren Sie es:
brew link postgresql@11 --force
  1. (Optional) Benennen Sie das DB-Datenverzeichnis um postgresin postgres@11:
cd /usr/local/var
ls -lh
mv postgresql@11 postgresql@11-fresh-backup
mv postgres postgresql@11
  1. Starten Sie die DB:
brew services start postgresql@11

Wenn Sie Fehler haben, überprüfen Sie /usr/local/var/log/postgresql@11.log(beachten Sie die @ 11).


6
Dies funktioniert nur für den Sonderfall von postgresql @ 11, der von Homebrew-Betreuern explizit beibehalten wird, um bei Datenspeichermigrationen zu helfen (ausgeführt mit dem Sonderbefehl brew postgresql-upgrade-database). Diese Antwort ist für fast jede andere Formel nicht nützlich.
Adam Wróbel

@ AdamWróbel Ich habe entschieden, dass es in Ordnung ist, die ursprüngliche Frage zu Postgres zu beantworten . brew postgresql-upgrade-databaseist gut für Upgrades . Meine Antwort bezieht sich auf die Verwendung einer älteren Postgres-Version. Das einfache Wechseln der Binärdateien funktioniert nicht.
Max Malysh

NodeJS-Benutzer, die keinen Versionsmanager verwenden, z. B. nvmFYI Ich hatte Glück, diese Technik für ältere LTS-Versionen zu verwenden. Zumindest zum Zeitpunkt des Schreibens sollten v10 und v12 verfügbar sein, z. B. brew install node@12 formulae.brew.sh/formula/node
paws

9

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-Core lokal

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

ODER

git clone git@github.com:Homebrew/homebrew-core.git

Listen Sie alle verfügbaren Versionen auf

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/Formula/flyway.rb


warum nicht einfach brew install Formula/flyway.rbaus dem homebrew-coreVerzeichnis laufen ? es funktionierte für mich ohne raw.github..Adresse
Kangkyu

9

Ich habe die meisten Lösungen hier ausprobiert und sie sind veraltet. Ich musste einige Ideen von hier mit meiner eigenen Arbeit kombinieren. Als Ergebnis habe ich ein Skript erstellt, das mir hilft, das schwere Heben zu erledigen, das Sie finden können hier

Verwendungszweck:

brewv.sh formula_name desired_version

6

Es könnte sehr einfach für die letzte Version von Brew 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)

2
... wenn sich jemand die Mühe gemacht hat, ein versioniertes Rezept für dieses Paket zu erstellen.
Clacke

6

Keines davon hat wirklich für meinen Fall (Python) funktioniert, also werde ich meine 2 Cent hinzufügen:

cd `brew --prefix`
git log Library/Formula/python.rb

Die Ausgabe sieht folgendermaßen aus:

commit 9ff2d8ca791ed1bd149fb8be063db0ed6a67a6de
Author: Dominyk Tiller <dominyktiller@gmail.com>
Date:   Thu Jun 30 17:42:18 2016 +0100

    python: clarify pour_bottle reason

commit cb3b29b824a264895434214e191d0d7ef4d51c85
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date:   Wed Jun 29 14:18:40 2016 +0100

    python: update 2.7.12 bottle.

commit 45bb1e220341894bbb7de6fd3f6df20987dc14f0
Author: Rakesh <rakkesh@users.noreply.github.com>
Date:   Wed Jun 29 10:02:26 2016 +0530

    python 2.7.12

    Closes #2452.

    Signed-off-by: Tim D. Smith <git@tim-smith.us>

commit cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date:   Fri Jun 17 20:14:36 2016 +0100

    python: update 2.7.11 bottle.

...

Ich möchte eine Version, 2.7.11also ist mein Hash cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9(oder cf5da05kurz). Als nächstes überprüfe ich diese Version und installiere die Formel python:

git checkout cf5da05
brew install python

Zum Schluss aufräumen:

git checkout master

2
Das Leben ändert sich und diese Antwort ist am relevantesten. Vergessen Sie nicht HOMEBREW_NO_AUTO_UPDATEund lesen Sie github.com/Homebrew/brew/issues/1188
Wile E.

Die richtigen Befehle sind cd Brew/Homebrewgit log Library/Taps/homebrew/homebrew-core/Formula/python.rb
Iulian Onofrei

Aber auch das funktioniert nicht, weil /Library/Tapses ignoriert wird.
Iulian Onofrei

Vergiss nicht HOMEBREW_NO_AUTO_UPDATE. Ja, vergessen Sie nicht über das , was Sie brauchen , bis nach dem Sie entdecken Sie es brauchen. xD
Josh Habdas

Wie wäre es mit diesem? HOMEBREW_NO_INSTALL_CLEANUPIst das nicht etwas, an das du dich erinnern musst?
Kangkyu

6

Wenn Sie Ihre Version mit nicht finden können brew search <formula>, können Sie auch versuchen, die Festschreibungsprotokolle für Ihre Formel zu durchsuchen, um die gewünschte Version zu finden:

Hier ist ein Beispiel für die Installation einer älteren Version von Nginx über Brew:

Von dort aus können wir 1.6.3mit der sha und raw git URL installieren :

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


3

Derzeit sind die alten Methoden zur Installation bestimmter Formelversionen veraltet. Es scheint also, als müssten wir verwenden brew edit [formula]. Angenommen, wir möchten eine 62.1Version von installieren icu4c(z postgresql 10.5. B. für ). Dann müsstest du

> brew edit icu4c
# drops you to editor

Hier würden Sie das ändern haben url, versionund sha256(vielleicht auch mirror) an den entsprechenden 62.1Saiten.

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 aus brew reinstall icu4c, um die 62.1Version endgültig herunterzuladen .


Wie bekomme ich das sha256 ? in meinem Fallhttps://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-macos-x64-release.zip
Simo

1

Update in der Zeile 8 Library / Formula / postgresql.rb auf

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 der postgresql could not create shared memory segmentFehler auftreten, um dieses Update /etc/sysctl.confwie folgt zu umgehen:

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

Versuchen initdb /usr/local/var/postgres erneut, und es sollte reibungslos funktionieren.

Postgresql beim Start ausführen

launchctl load -w /usr/local/Cellar/postgresql/8.4.6/org.postgresql.postgres.plist

Ich hoffe, das hilft :)


1

Ich habe gerade eine ältere Version von elasticsearch in das /usr/local/Cellar/elasticsearchVerzeichnis 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 für jeden nützlich.


Ein hässlicher Hack. Aber ja, es hat auch bei mir funktioniert, als ich versucht habe, eine ältere Version von consul zu suchen und zu installieren! Prost.
darkdefender27

0

Ich entschied mich gegen mein besseres Urteilsvermögen, eine Formel für Maven 3.1.1 zu erstellen, die homebrew/versionses nicht gab. Um dies zu tun:

  1. Ich gabelte mich homebrew/versionsauf Github.
  2. Ich habe eine Verknüpfung $(brew --prefix)/Library/Tapsmit der lokalen Arbeitskopie meiner Gabel hergestellt. Ich werde das nennen my-homebrew/versions.
  3. Ich habe getestet, indem ich die Formel als angegeben habe my-homebrew/versions/<formula>.
  4. Ich habe eine Pull-Anfrage homebrew/versionsfür meine neue Formel gesendet .

Yay.



0

Ich habe ein Tool erstellt , um den in dieser Antwort beschriebenen Prozess zu vereinfachen .

Führen Sie Folgendes aus, um ein Paket pkgmit Version zu finden a.b.c:

$ brew-install-specific pkg@a.b.c

Dadurch werden Commits in der pkgHomebrew-Formel aufgelistet, die die angegebene Version zusammen mit ihren GitHub-URLs erwähnen.

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

Select index: 

Überprüfen Sie das Commit anhand der angegebenen URL und geben Sie den Index des ausgewählten Commits ein.

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

Kopieren Sie den angegebenen zu installierenden Befehl und führen Sie ihn aus.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.