Frage Homebrew installieren spezifische Version der Formel?


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


1709
2017-10-21 12:58


Ursprung


Antworten:


(Ich habe meine Antwort überarbeitet, um einen gründlicheren Arbeitsablauf für die Installation / Verwendung älterer Softwareversionen mit Homebrew zu geben. Fühlen Sie sich frei, eine Notiz hinzuzufü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 z /usr/local/Cellar/postgresql/9.3.1. Nur symbolische Links zu diesem Ordner werden dann global installiert. Dies macht es im Prinzip sehr einfach, zwischen zwei installierten Versionen zu wechseln. (*)

Wenn Sie Homebrew länger verwenden und nie ältere Versionen entfernen (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 switch ist der einfachste Weg, dies zu tun.

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

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 * ist in die neu aktivierte Version gewechselt

(*) Bitte beachte, dass brew switch funktioniert nur, solange alle Abhängigkeiten der älteren Version noch vorhanden sind. In einigen Fällen kann eine Neuerstellung der älteren Version erforderlich sein. Daher verwenden brew switch ist vor allem dann nützlich, wenn man zwischen zwei nicht zu weit auseinander liegenden Versionen wechseln möchte.

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

Insbesondere bei größeren Softwareprojekten ist es sehr wahrscheinlich, dass die Nachfrage nach mehreren (möglicherweise API-inkompatiblen) Hauptversionen einer bestimmten Software hoch genug ist. Stand März 2012, Homebrew 0.9 bietet dafür einen Mechanismus: brew tap & das Homebrew-Versionen Repository.

Das Versionsrepository 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 installieren, indem Sie tippen

$ 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 erfolgt geklopft das homebrew/versions Zapfhahn. (Überprüfen mit brew tap, entfernen mit brew untap homebrew/versions.) Folgendes wäre äquivalent gewesen:

$ brew tap homebrew/versions
$ brew install postgresql8

Solange die zurückportierten Versionsformeln auf dem neuesten Stand bleiben, ist dieser Ansatz wahrscheinlich der beste Weg, mit älterer Software umzugehen.

3) Probieren Sie einige Formeln aus der Vergangenheit

Die folgenden Ansätze sind hauptsächlich der Vollständigkeit halber aufgeführt. Beide versuchen, eine untote Formel aus dem Sudhaus wieder auferstehen zu lassen. Aufgrund geänderter Abhängigkeiten, API-Änderungen in der Formula-Spezifikation oder einfach einer Änderung der Download-URL können Dinge funktionieren oder nicht.

Da das gesamte Formelverzeichnis ein Git-Repository ist, kann man bestimmte Versionen mit einfachen Git-Befehlen installieren. 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, Homebrew hatte eine brew versions Befehl, der alle verfügbaren Versionen mit ihren jeweiligen SHA-Hashes ausspuckte. Ab Oktober 2014 müssen Sie ein tun brew tap homebrew/boneyard bevor du es benutzen kannst. Wie der Name des Tapes 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 benutzen. Homebrew spuckt alle Versionen aus, die es mit seiner internen Heuristik finden kann, und zeigt Ihnen 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

Jetzt, da die ältere postgresql-Version installiert ist, können wir die neueste Formel neu installieren, um unser Repository sauber zu halten:

$ git checkout -- Library/Formula/postgresql.rb

brew switch ist dein Freund, um zwischen alt und neu zu wechseln.

b) prähistorische Zeiten

Für spezielle Bedürfnisse können wir auch unser eigenes Grabbrew Repo ausprobieren.

$ git log -S'8.4.4' -- Library/Formula/postgresql.rb

git log -S sucht nach allen Commits, in denen die Zeichenfolge steht '8.4.4' wurde entweder hinzugefügt oder in der Datei entfernt Library/Formula/postgresql.rb. Wir bekommen zwei Commits als Ergebnis.

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, fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422 ist das Commit, an dem wir interessiert sind. Da dieses Commit ziemlich alt ist, werden wir versuchen, die komplette Homebrew-Installation downzugraden (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 den Verweis in Ihrem Git-Repository zu behalten.

Eine Anmerkung: Wenn Sie das ältere Commit auschecken, stufen Sie Ihre Homebrew-Installation vorübergehend zurück. Sie sollten also vorsichtig sein, da einige Befehle in Homebrew sich von der neuesten Version unterscheiden.

4) Schreiben Sie manuell eine Formel

Es ist nicht zu schwer und Sie können es dann hochladen Homebrew-Versionen.

A.) Bonus: Pinning

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

$ brew pin postgresql

Fixierte Formeln sind in aufgelistet /usr/local/Library/PinnedKegs/ und sobald Sie die neuesten Änderungen und Aktualisierungen einbringen möchten, können Sie unpin es wieder:

$ brew unpin postgresql

2117
2017-11-11 20:04



Einfacher Arbeitsablauf

Jetzt, da Homebrew / versions veraltet ist, unterstützt Homebrew / core mehrere Versionen von Formeln mit einem neuen Namensformat.

Um eine spezifische Version zu installieren, z.B. postgresql 9.5 Sie einfach ausführen:

$ 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

632
2018-03-22 23:29



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

Schon seit brew switch Ändert einfach die Symlinks, es ist sehr schnell. Siehe weitere Dokumentation zum Homebrew Wiki unter Externe Befehle.


425
2017-12-14 16:33



Update: 15.1.2015

  • Finden Sie den Commit-Verlauf 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 Schaltfläche "Raw": List item
  • Kopiere das URL (docker.rb URL in diesem Beispiel) aus der Adressleiste
  • brew install <url> (müssen vielleicht brew unlink zuerst z.B. brew unlink docker)
  • brew switch docker 1.3.3
  • Wechseln Sie zurück zu Docker 1.4.1 brew switch docker 1.4.1

Davon 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

183
2017-07-19 23:42



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 anfing, die Schritte des Suchens des Repos und a zu folgen Kommentar im Repo.

Nach ein wenig Nachforschungen fand man heraus, dass jemand eine Sammlung von seltenen Rezepturen hat, mit denen er sich zusammenbrauen kann.


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

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

92
2017-09-19 11:55



In Anlehnung an den Vorschlag von @ halfcube funktioniert das sehr gut:

  1. Suchen Sie die Bibliothek, nach der Sie suchen https://github.com/mxcl/homebrew/tree/master/Library/Formula
  2. Klick es: https://github.com/mxcl/homebrew/blob/master/Library/Formula/postgresql.rb
  3. Klicken Sie auf die Schaltfläche "Verlauf", um alte Commits anzuzeigen: https://github.com/mxcl/homebrew/commits/master/Library/Formula/postgresql.rb
  4. Klicken Sie auf die gewünschte Version: "postgresql: update version to 8.4.4", https://github.com/mxcl/homebrew/blob/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
  5. Klicken Sie auf den Link "roh": https://raw.github.com/mxcl/homebrew/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
  6. brew install https://raw.github.com/mxcl/homebrew/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb

50
2017-10-16 22:12



Sie können die Strategie zum Identifizieren der Formel und eines bestimmten Commits im Verlauf der Formel verwenden, 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 Dateifinder zu aktivieren.

  3. Identifizieren Sie eine Formel, die am relevantesten erscheint, vielleicht: Formula/mysql.rbund bringt dich zu einem forumla-Speicherort: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb.

  4. Sehen Sie sich den Überarbeitungsverlauf an, indem Sie auf die Schaltfläche klicken History Knopf, der bei liegt https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb. Wenn Sie sich für MySQL 5.7.10 interessieren, können Sie auf die neueste Version vor 5.7.11 klicken, die zu einem GitHub-Commit führt:

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

HINWEIS: Möglicherweise müssen Sie den Commit-Verlauf in Ihrer Konsole nach GitHubs Vorschlag anzeigen, wenn der Commit-Verlauf in Ihrem Browser nicht geladen wird. Ersetzen Sie die obige SHA für das Commit in der URL, wenn Sie dieses Commit auf GitHub sehen möchten. Wechseln Sie alternativ zu Schritt 7 weiter unten.

  1. Klicken Sie auf die Schaltfläche "View", um die Quelle für die mysql.rb-Datei anzuzeigen, nachdem das Commit angewendet wurde.

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

  3. Kopieren Sie die URL. Alternativ erstellen Sie die URL selbst mit dem mysql.rb Dateiname, um Ihre Formel und die bestimmte Version dieser Formel zu identifizieren (identifiziert durch den SHA-Commit in der URL unten).

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

  4. Installieren Sie es mit $ brew install [URL from step 7]

    $ brew install https://raw.githubusercontent.com/Homebrew/homebrew/c77882756a832ac1d87e7396c114158e5619016c/Library/Formula/mysql.rb
    

HINWEIS: Diese Antwort wurde aktualisiert, um die Entfernung der Website von braumeister.org zu berücksichtigen. Das gleiche Prinzip gilt, Braumeister hatte einfach eine anfängerfreundliche Möglichkeit geschaffen, Formelversionen zu navigieren.


49
2018-02-24 05:38



Ich habe gerade Homebrew verwendet, um zu Maven 2.2.1 seit dem einfachen zurückzukehren brew install maven installiert Maven 3.0.3.

Zuerst musst du das Maven Dir dort verlassen

$ brew unlink maven

Verwenden Sie den Befehl zum Brühen

$ Brew Tap Homebrew / Versionen
Klonen in '/ usr / local / Library / Taps / Homebrew-Versionen' ...
remote: Zählen von Objekten: 590, fertig.
remote: Objekte komprimieren: 100% (265/265), fertig.
remote: Gesamt 590 (Delta 362), wiederverwendet 549 (Delta 325)
Empfangsobjekte: 100% (590/590), 117,49 KiB | 79 KiB / s, fertig.
Auflösungsdeltas: 100% (362/362), fertig.
Tapped 50 Formel

Jetzt können Sie die maven2-Formel installieren:

$ brauen installieren maven2
==> Herunterladen 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, eingebaut 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: Du kannst auch einfach brew switch maven 2.2.1 um zu einer anderen Version zu wechseln.

Bearbeiten: Das Apache Maven-Projekt reorganisierte sein Repo. Diese Antwort wurde aktualisiert, um diese Änderung zu berücksichtigen.


27
2018-02-12 20:35



Basierend auf dem von. Beschriebenen Workflow @tschundee und @ Debilskis Update 1Ich habe den Vorgang automatisiert und die Bereinigung hinzugefügt Dieses Skript.

Lade es herunter, leg es dir in den 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

:)


21
2017-07-09 14:06