Wie installiere ich eine bestimmte Version einer Formel in Homebrew? Zum Beispiel postgresql-8.4.4 anstelle der neuesten Version 9.0.
installation
versioning
homebrew
Gravis
quelle
quelle
postgresql
ist seltsam, weil es zu einem bestimmten Zeitpunkt separate Versionen in Homebrew gab. So etwasbash
könnte ein besseres Beispiel sein, da es innerhalb desselben Formelnamens von 4.x auf 5.x ging. Siehe stackoverflow.com/a/55764594/3794873Antworten:
TLDR:
brew install [email protected]
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 switch
ist dies der einfachste Weg.Überprüfen Sie mit
brew info postgresql
(oderbrew switch postgresql <TAB>
), ob die ältere Version installiert ist:Wir sehen, dass einige ältere Versionen bereits installiert sind. Wir können es aktivieren mit
brew switch
:Überprüfen wir noch einmal, was aktiviert ist:
Beachten Sie, dass der Stern
*
auf die neu aktivierte Version verschoben wurde(*) Bitte beachten Sie, dass dies
brew switch
nur funktioniert, solange alle Abhängigkeiten der älteren Version bestehen. In einigen Fällen kann eine Neuerstellung der älteren Version erforderlich werden. Daher ist die Verwendungbrew switch
meistens 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:Wir können es einfach durch Eingabe installieren
Beachten Sie, dass dies automatisch auf den
homebrew/versions
Wasserhahn getippt hat. (Überprüfen Sie mitbrew tap
, entfernen Sie mitbrew untap homebrew/versions
.) Folgendes wäre gleichwertig gewesen: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 versions
Befehl, der alle verfügbaren Versionen mit ihren jeweiligen SHA-Hashes ausspuckte. Ab Oktober 2014 müssen Sie eine ausführen,brew tap homebrew/boneyard
bevor Sie sie verwenden können. Wie der Name des Wasserhahns andeutet, sollten Sie dies wahrscheinlich nur als letzten Ausweg tun.Z.B
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.
Nachdem die ältere postgresql-Version installiert ist, können wir die neueste Formel erneut installieren, um unser Repository sauber zu halten:
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.
git log -S
Sucht nach allen Commits, bei denen die Zeichenfolge'8.4.4'
in der Datei hinzugefügt oder entfernt wurdeLibrary/Taps/homebrew/homebrew-core/Formula/postgresql.rb
. Als Ergebnis erhalten wir zwei Commits.Offensichtlich
fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
ist 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):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 upgrade
Prozedur können Sie Stift eine Formel: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 :quelle
git checkout fa992 -- Library/Formula/postgresql.rb
. Wenn Sie fertig sind, können Sie die Änderungen an der Formel mit rückgängig machengit revert HEAD Library/Formula/postgresql.rb && git checkout -- Library/Formula/postgresql.rb
.brew update
das Git-Repo einrichten.cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
, dann können Siegit checkout 4cce79d -- Formula/go.rb
und verwendenHOMEBREW_NO_AUTO_UPDATE=1 brew install go
.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:
Um die verfügbaren Versionen aufzulisten, führen Sie eine Suche mit @ durch:
quelle
fatal: Not a git repository (or any of the parent directories): .git
. Ichcd
gehe stattdessen einfach in das Verzeichnis (ohne FORMULANAME.rb) und mache dann dengit checkout 120938
cd /usr/local
zuerst.brew unlink FORMULANAME
brew versions <formula>
wird nicht mehr unterstützt.brew link --force [email protected]
. Wenn Sie bereits eine neuere Version installiert haben und möchten, dass die ältere Version Ihre Standardversion ist, benötigen Sie--overwrite
dort auch eine.Es gibt jetzt eine viel einfachere Möglichkeit, eine ältere Version einer Formel zu installieren, die Sie zuvor installiert hatten. Einfach benutzen
Zum Beispiel wechsle ich regelmäßig zwischen Node.js 0.4.12 und 0.6.5:
Da
brew switch
nur die Symlinks geändert werden, ist es sehr schnell. Weitere Dokumentation im Homebrew-Wiki finden Sie unter Externe Befehle .quelle
brew switch
die gesuchte Version bereits installiert. Leider ist die derzeit akzeptierte Antwort unglaublich wenig hilfreich, verworren und veraltet. Es gibt bessere Antworten, die viel hilfreicher sind.Update: 15.01.2015
brew install <url>
(muss vielleichtbrew unlink
zuerst, zBbrew unlink docker
)brew switch docker 1.3.3
brew switch docker 1.4.1
Aus diesem Kern
quelle
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.Raw
drücken die Taste auf welcher Datei?!brew log <formula>
In Anlehnung an den Vorschlag von @ halfcube funktioniert dies wirklich gut:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
quelle
package@version
git log master -- Formula/PACKAGENAME.rb
ausführen : Verwenden Sie diese Option , um den Commit-Verlauf abzurufen, das richtige Commit zu überprüfen und dann auszuführenbrew install Formula/PACKAGENAME.rb
, um es zu installieren.brew unlink
vorher einebrew install
andere Version.mxcl
?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?Ich habe eine bessere alternative Lösung als die anderen komplexen Lösungen gefunden.
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.
quelle
brew install https://github.com/Homebrew/homebrew-versions/blob/master/node06.rb
schien mit Syntaxfehlern zu scheitern.raw
in der URLhomebrew-versions
ist weg und alles läuftcore
jetzt, also ist der allgemeine Fall :brew install https://raw.github.com/Homebrew/homebrew-core/<COMMIT>/Formula/<FORMULA>.rb
.COMMIT
finden Sie unter github.com/Homebrew/homebrew-core/commits/master/Formula/… .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.
Gehen Sie zu https://github.com/Homebrew/homebrew-core
Drücken Sie
t
auf Ihrer Tastatur, um den Dateisucher zu aktivieren.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 .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.
Klicken Sie auf die Schaltfläche "Anzeigen", um die Quelle für die Datei mysql.rb anzuzeigen, nachdem das Commit angewendet wurde.
Klicken Sie dann auf die Schaltfläche "Raw", um die Raw-Quelle anzuzeigen.
Kopieren Sie die URL. Alternativ können Sie die URL selbst mit dem erstellen
mysql.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
Installieren Sie es mit
$ brew install [URL from step 7]
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.
quelle
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
,[email protected]
...).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:
Suchen Sie in den Protokollen nach der richtigen Version:
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).
Suchen Sie die URL, unter der sich die Formel im Upstream-Repository befindet:
Korrigieren Sie die URL:
github.com
durchraw.githubusercontent.com
blob/master
durch den Commit-Hash, den wir im ersten Schritt gefunden haben.Installieren Sie die gewünschte Version, indem Sie
master
die zuvor gefundene URL durch den Commit-Hash ersetzen , z.(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
bash
durch Ihren Commit-Hash und Ihre gewünschte Formel ersetzen .In diesem Beispiel wird Bash 4.4.23 anstelle von Bash 5 installiert. Wenn Sie jedoch
brew upgrade
danach Bash 5 ausführen, wird Bash 5 oben installiert, sofern Sie es nicht zuerst ausgeführt habenbrew pin bash
. Statt diesen glatten OHNE Pinning, sollten Sie zunächst die neueste mit installierenbrew install bash
, dannbrew unlink bash
, dann installieren Sie die ältere Version , die Sie per Skript oben wollen, und dann verwenden ,brew switch bash 4.4.23
um die ältere Version die symbolischen Links einzurichten. Jetztbrew upgrade
sollte a Ihre Version von Bash nicht beeinflussen. Sie könnenbrew switch bash
eine 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:
Dadurch wird
formula@version
in Ihrem benutzerdefinierten Tap ein Tipp erstellt, den Sie gemäß dem obigen Beispiel installieren können. Der Nachteil ist, dass Sie wahrscheinlich nochbrew unlink bash
und dann benötigen,brew link [email protected]
um Ihre spezifische Version von Bash oder eine andere Formel zu verwenden.quelle
brew log
sodass zusätzliche-F
oder--grep
Optionen für mich fehlgeschlagen sind.brew log
. Ich kann mir jetzt nicht die Mühe machen, eine neue Version zu schreiben, da dazu die Git-Protokollnachricht ordnungsgemäß analysiert oder alternativgit log
direkt im entsprechenden Repository ausgeführt werden muss. Und das Changelog scheint diese bahnbrechende Änderung nicht einmal zu erwähnen. Mehr als nervig.External Command
es erforderlich zu sein, innerhalb der Struktur vonbrew
zu arbeiten, um diese Art dergit log
Filterung zurückzubekommen. docs.brew.sh/External-Commandsbrew extract
Verwendung finden konnte, danke!Ich habe gerade Homebrew verwendet, um zu Maven 2.2.1 zurückzukehren, seit der einfach
brew install maven
installierten Maven 3.0.3.Zuerst muss man das Maven-Verzeichnis dort also lassen
Verwenden Sie den Befehl Brew Tap
Jetzt können Sie die Formel maven2 installieren:
Bearbeiten: Sie können auch einfach
brew switch maven 2.2.1
zu einer anderen Version wechseln.Bearbeiten: Das Apache Maven-Projekt hat das Repo neu organisiert. Diese Antwort wurde aktualisiert, um diese Änderung zu berücksichtigen.
quelle
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::) :)
quelle
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
):git log master -- Formula/terraform.rb
wenn Sie das Repo lokal geklont haben.brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
quelle
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
bash
Beispiel:Dadurch wird der
formula@version
in 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 bash
wenn Sie zuvor die Standard- / neueste Version der Formel installiert haben, und dannbrew link [email protected]
, 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
brew
es sich um eine "andere Formel" handelt.Wenn Sie verwenden möchten, sollten
brew switch $FORMULA $VERSION
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
bash
Formel derzeit Bash 5 installiert.brew install bash
brew unlink bash
brew switch bash 4.4.23
, um die Symlinks zu Ihrer Version einzurichtenWenn Sie
brew upgrade
nach 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ührtbrew 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 upgrade
sollte sich a nicht auf Ihre Version von Bash auswirken, und Sie können jederzeitbrew switch bash
eine Liste der verfügbaren Versionen abrufen, zu denen Sie wechseln können.Kopieren Sie die
export
Zeilen 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.Wenn Sie sicher sind, dass die Version in der Formel vorhanden ist, können Sie Folgendes verwenden:
Nachdem Sie den Commit-Hash exportiert haben, den Sie verwenden möchten, können Sie damit die Version des Pakets installieren.
Befolgen Sie die Anweisungen in der Formelausgabe, um sie in Ihren PATH einzufügen, oder legen Sie sie als Standard-Shell fest.
quelle
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:
Dann mach es einfach
brew install mongodb26
wie 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
.quelle
Das Problem dabei
homebrew/versions
ist, dass jemand diese bestimmte Version der Software im Repository haben muss, damit Sie sie verwenden können. Da diesbrew versions
nicht mehr unterstützt wird, ist eine andere Lösung erforderlich. Bei Lösungen, die auf die Verwendung hinweisenbrew switch
, funktioniert dies nur, wenn Sie dies nicht getan haben,brew cleanup
da die Version auf Ihrem Computer vorhanden sein muss.Ich hatte ein Problem mit dem Wunsch, eine bestimmte ältere Version zu installieren,
docker-machine
die nicht in aufgeführt isthomebrew/versions
. Ich habe dies mit dem folgenden Problem gelöst, das auch für jede von Brew installierte Software funktionieren sollte. Das folgende Beispiel wirddocker-machine
als Paket verwendet, das ich von Version 0.5.0 auf 0.4.1 downgraden möchte.Gehen Sie zu Ihrem Homebrew-
Formula
Verzeichnis.Sie können dies durch Ausführen feststellen
brew info [any package name]
. Zum Beispielbrew info docker-machine
gibt 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/local
und sich meinFormula
Verzeichnis standardmäßig unter befindet/usr/local/Library/Formula
Suchen Sie die spezifische Formeldatei (.rb) für Ihr Paket. Da ich ein Downgrade durchführen möchte
docker-machine
, kann ich einedocker-machine.rb
Datei sehen.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: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).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
Deinstallieren Sie Ihre aktuelle Paketversion. Führen Sie einfach die normalen Brew-Befehle aus, um die aktuelle Version Ihres Pakets zu deinstallieren.
Ex.
brew uninstall docker-machine
Installieren 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.
Dann können
brew uninstall docker-machine
und könnenbrew install docker-machine
Sie die neueste Version erhalten und diese auch in Zukunft beibehalten.quelle
git log --grep 0.4.1 docker-machine.rb
./usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
cairo
diese Weise konnte ich nicht genug Versionsgeschichte für das Gebräu finden. Die Antwort von @ sealocal zeigte aus irgendeinem Grund mehr.Es ist 2020 und die meisten Antworten sind veraltet
Meine Situation:
postgresql
wurde versehentlich von 11 auf 12 aktualisiert. Ich möchte 11 behalten.postgres
inpostgres@11
:Wenn Sie Fehler haben, überprüfen Sie
/usr/local/var/log/[email protected]
(beachten Sie die @ 11).quelle
brew postgresql-upgrade-database
). Diese Antwort ist für fast jede andere Formel nicht nützlich.brew postgresql-upgrade-database
ist gut für Upgrades . Meine Antwort bezieht sich auf die Verwendung einer älteren Postgres-Version. Das einfache Wechseln der Binärdateien funktioniert nicht.nvm
FYI 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/nodeInstallieren 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 [email protected]: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
quelle
brew install Formula/flyway.rb
aus demhomebrew-core
Verzeichnis laufen ? es funktionierte für mich ohneraw.github..
AdresseIch 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:
quelle
Es könnte sehr einfach für die letzte Version von Brew gemacht werden.
quelle
Keines davon hat wirklich für meinen Fall (Python) funktioniert, also werde ich meine 2 Cent hinzufügen:
Die Ausgabe sieht folgendermaßen aus:
Ich möchte eine Version,
2.7.11
also ist mein Hashcf5da0547cd261f79d69e7ff62fdfbd2c2d646e9
(odercf5da05
kurz). Als nächstes überprüfe ich diese Version und installiere die Formelpython
:Zum Schluss aufräumen:
quelle
HOMEBREW_NO_AUTO_UPDATE
und lesen Sie github.com/Homebrew/brew/issues/1188cd
Brew/Homebrew
git log Library/Taps/homebrew/homebrew-core/Formula/python.rb
/Library/Taps
es ignoriert wird.HOMEBREW_NO_AUTO_UPDATE
. Ja, vergessen Sie nicht über das , was Sie brauchen , bis nach dem Sie entdecken Sie es brauchen. xDHOMEBREW_NO_INSTALL_CLEANUP
Ist das nicht etwas, an das du dich erinnern musst?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:
Festschreibungsprotokoll für die ngxnx-Formel
sehen
nginx: update 1.6.3 bottle eba75b9a1a474b9fc4df30bd0a32637fa31ec049
Von dort aus können wir
1.6.3
mit der sha und raw git URL installieren :brew install https://raw.githubusercontent.com/Homebrew/homebrew/eba75b9a1a474b9fc4df30bd0a32637fa31ec049/Library/Formula/nginx.rb
quelle
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 eine62.1
Version von installierenicu4c
(zpostgresql 10.5
. B. für ). Dann müsstest duHier würden Sie das ändern haben
url
,version
undsha256
(vielleicht auchmirror
) an den entsprechenden62.1
Saiten.Führen Sie dann aus
brew reinstall icu4c
, um die62.1
Version endgültig herunterzuladen .quelle
sha256
? in meinem Fallhttps://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-macos-x64-release.zip
Update in der Zeile 8 Library / Formula / postgresql.rb auf
Und MD5 in Zeile 9 bis
Speichern und schließen.
In dieser Phase könnte der
postgresql could not create shared memory segment
Fehler auftreten, um dieses Update/etc/sysctl.conf
wie folgt zu umgehen:Versuchen
initdb /usr/local/var/postgres
erneut, und es sollte reibungslos funktionieren.Postgresql beim Start ausführen
Ich hoffe, das hilft :)
quelle
Ich habe gerade eine ältere Version von elasticsearch in das
/usr/local/Cellar/elasticsearch
Verzeichnis kopiert .Das ist es. Vielleicht ist es für jeden nützlich.
quelle
Ich entschied mich gegen mein besseres Urteilsvermögen, eine Formel für Maven 3.1.1 zu erstellen, die
homebrew/versions
es nicht gab. Um dies zu tun:homebrew/versions
auf Github.$(brew --prefix)/Library/Taps
mit der lokalen Arbeitskopie meiner Gabel hergestellt. Ich werde das nennenmy-homebrew/versions
.my-homebrew/versions/<formula>
.homebrew/versions
für meine neue Formel gesendet .Yay.
quelle
Für Versionen, die derzeit nicht in den Standardbrühformeln enthalten sind, können Sie mit dem Tool unter https://github.com/buildtools-version-taps/homebrew-versions-tap-tool ganz einfach Ihren eigenen Tipp erstellen
quelle
brew tap-new user/repo
und dannbrew extract --version='Major.minor' FORMULA user/repo
und dannbrew install [email protected]
.Ich habe ein Tool erstellt , um den in dieser Antwort beschriebenen Prozess zu vereinfachen .
Führen Sie Folgendes aus, um ein Paket
pkg
mit Version zu findena.b.c
:Dadurch werden Commits in der
pkg
Homebrew-Formel aufgelistet, die die angegebene Version zusammen mit ihren GitHub-URLs erwähnen.Überprüfen Sie das Commit anhand der angegebenen URL und geben Sie den Index des ausgewählten Commits ein.
Kopieren Sie den angegebenen zu installierenden Befehl und führen Sie ihn aus.
quelle