Homebrew installa la versione specifica della formula?


2197

Come installo una versione specifica di una formula in homebrew? Ad esempio, postgresql-8.4.4 invece dell'ultimo 9.0.


2
postgresqlè strano perché aveva versioni separate in Homebrew ad un certo punto, qualcosa del genere bashpotrebbe essere un esempio migliore poiché è passato da 4.xa 5.x con lo stesso nome di formula. Vedere stackoverflow.com/a/55764594/3794873
dragon788


2
Ho letto tutte le risposte. È il 2020 e non esiste un modo semplice o un comando ufficiale per farlo
Oluckyman,

Risposte:


2556

TLDR: brew install postgresql@8.4.4 vedi la risposta sotto per maggiori dettagli.


* ( Ho modificato nuovamente la mia risposta per fornire un flusso di lavoro più approfondito per l'installazione / l'utilizzo di versioni software precedenti con homebrew. Sentiti libero di aggiungere una nota se hai trovato la versione precedente migliore. )

Cominciamo con il caso più semplice:

1) Verifica se la versione è già installata (ma non attivata)

Quando homebrew installa una nuova formula, la inserisce in una directory con versione come /usr/local/Cellar/postgresql/9.3.1. Solo i collegamenti simbolici a questa cartella vengono quindi installati a livello globale. In linea di principio, ciò semplifica il passaggio tra due versioni installate. (*)

Se stai usando homebrew da più tempo e non hai mai rimosso versioni precedenti (usando, ad esempio brew cleanup), è probabile che alcune versioni precedenti del tuo programma possano essere ancora in circolazione. Se vuoi semplicemente attivare quella versione precedente, brew switchè il modo più semplice per farlo.

Verificare con brew info postgresql(o brew switch postgresql <TAB>) se è installata la versione precedente:

$ 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

Vediamo che alcune versioni precedenti sono già installate. Potremmo attivarlo utilizzando 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

Ricontrolliamo cosa è attivato:

$ 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

Nota che la stella *è passata alla versione appena attivata

(*) Nota che brew switchfunziona solo finché tutte le dipendenze della versione precedente sono ancora in circolazione. In alcuni casi, potrebbe essere necessario ricostruire la versione precedente. Pertanto, l'utilizzo brew switchè utile soprattutto quando si desidera passare da una versione all'altra non troppo distanti.

2) Controlla se la versione è disponibile come tocco

Soprattutto per progetti software più grandi, è molto probabile che vi sia una richiesta abbastanza elevata per diverse versioni principali (potenzialmente incompatibili con le API) di un determinato software. A partire da marzo 2012, Homebrew 0.9 fornisce un meccanismo per questo: brew tap& il repository di versioni homebrew .

Il repository di versioni può includere backport di versioni precedenti per diverse formule. (Principalmente solo quelli grandi e famosi, ma ovviamente avranno anche diverse formule per postgresql.)

brew search postgresql ti mostrerà dove cercare:

$ brew search postgresql
postgresql
homebrew/versions/postgresql8    homebrew/versions/postgresql91
homebrew/versions/postgresql9    homebrew/versions/postgresql92

Possiamo semplicemente installarlo digitando

$ 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
# …

Si noti che questo ha automaticamente toccato il homebrew/versionsrubinetto. (Verificare con brew tap, rimuovere con brew untap homebrew/versions.) Quanto segue sarebbe stato equivalente:

$ brew tap homebrew/versions
$ brew install postgresql8

Fintanto che le formule della versione backport rimarranno aggiornate, questo approccio è probabilmente il modo migliore per gestire software meno recenti.

3) Prova qualche formula del passato

I seguenti approcci sono elencati principalmente per completezza. Entrambi provano a resuscitare una formula di non morti dal repository della birra. A causa delle dipendenze modificate, delle modifiche dell'API nelle specifiche della formula o semplicemente di una modifica nell'URL di download, le cose potrebbero non funzionare.

Poiché l'intera directory della formula è un repository git, è possibile installare versioni specifiche usando semplici comandi git. Tuttavia, dobbiamo trovare un modo per arrivare a un commit in cui era disponibile la versione precedente.

a) tempi storici

Tra agosto 2011 e ottobre 2014 , l'homebrew ha ricevuto un brew versionscomando, che ha sputato fuori tutte le versioni disponibili con i rispettivi hash SHA. A partire da ottobre 2014, devi farlo brew tap homebrew/boneyardprima di poterlo utilizzare. Come suggerisce il nome del rubinetto, probabilmente dovresti farlo solo come ultima risorsa.

Per esempio

$ 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

Come puoi vedere, sconsiglia di usarlo. Homebrew sputa tutte le versioni che può trovare con la sua euristica interna e ti mostra un modo per recuperare le vecchie formule. Proviamolo.

# 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

Ora che è installata la versione postgresql precedente, possiamo reinstallare la formula più recente per mantenere pulito il nostro repository:

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

brew switch è il tuo amico a cambiare tra il vecchio e il nuovo.

b) preistoria

Per esigenze speciali, possiamo anche provare a scavare nel repository homebrew.

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

git log -Scerca tutti i commit in cui la stringa è '8.4.4'stata aggiunta o rimossa nel file Library/Taps/homebrew/homebrew-core/Formula/postgresql.rb. Di conseguenza otteniamo due commit.

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

Ovviamente, fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422è il commit a cui siamo interessati. Poiché questo commit è piuttosto vecchio, proveremo a eseguire il downgrade dell'installazione homebrew completa (in questo modo, l'API della formula è più o meno garantita per essere valida):

$ git checkout -b postgresql-8.4.4 fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
$ brew install postgresql
$ git checkout master
$ git branch -d postgresql-8.4.4

È possibile saltare l'ultimo comando per mantenere il riferimento nel proprio repository git.

Una nota: quando si verifica il commit precedente, si esegue il downgrade temporaneo dell'installazione homebrew. Quindi, dovresti stare attento poiché alcuni comandi in homebrew potrebbero essere diversi dalla versione più recente.

4) Scrivi manualmente una formula

Non è troppo difficile e puoi quindi caricarlo sul tuo repository. Una volta erano versioni Homebrew , ma ora è fuori produzione.

A.) Bonus: Appuntamento

Se vuoi mantenere una certa versione di, diciamo postgresql, in giro e impedirne l'aggiornamento quando esegui la brew update; brew upgradeprocedura naturale , puoi aggiungere una formula:

$ brew pin postgresql

Le formule bloccate sono elencate in /usr/local/Library/PinnedKegs/e una volta che desideri apportare le ultime modifiche e gli aggiornamenti, puoi sbloccarlo di nuovo:

$ brew unpin postgresql

18
Puoi anche controllare la formula usando git checkout fa992 -- Library/Formula/postgresql.rb. Al termine, puoi annullare le modifiche alla formula utilizzando git revert HEAD Library/Formula/postgresql.rb && git checkout -- Library/Formula/postgresql.rb.
mipadi,

18
Nota: su una nuova installazione di Homebrew, potrebbe essere necessario brew updatestabilire il suo repository Git.
Bluu,

557
Questo è ridicolmente difficile.
Dogweather,

30
Ad oggi, la directory corretta per eseguire i comandi manuali sul repository è cd $(brew --repository)/Library/Taps/homebrew/homebrew-core, quindi è possibile utilizzare git checkout 4cce79d -- Formula/go.rbe HOMEBREW_NO_AUTO_UPDATE=1 brew install go.
Calin,

12
homebrew / version è deprecato
Ezechiele Victor

775

Flusso di lavoro semplice

Ora che Homebrew / version è stato deprecato, Homebrew / core supporta più versioni di formule con un nuovo formato di denominazione.

Per installare una versione specifica, ad esempio postgresql 9.5, devi semplicemente eseguire:

$ brew install postgresql@9.5

Per elencare le versioni disponibili, esegui una ricerca con @:

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

8
Sembra il più semplice, ma quando copio e incolla, ottengo fatal: Not a git repository (or any of the parent directories): .git. cdInvece mi inserisco nella directory (senza FORMULANAME.rb), quindi git checkout 120938
eseguo

8
@RamonTayag, ho avuto lo stesso problema. Assicurati di cd /usr/localprima.
gjb

13
Ho scoperto che hai bisogno di un passaggio 3.5:brew unlink FORMULANAME
Intenti

37
brew versions <formula>non è più supportato.
ejoubaud,

4
@ dem7w2, puoi creare i symlink con brew link --force postgresql@9.5. Se hai già installato una versione più recente e desideri che la versione precedente sia quella predefinita, ti servirà anche una versione --overwrite.
Ryan,

457

Ora c'è un modo molto più semplice per installare una versione precedente di una formula che avevi installato in precedenza. Basta usare

brew switch [formula] [version]

Ad esempio, alterno regolarmente tra Node.js 0.4.12 e 0.6.5:

brew switch node 0.4.12
brew switch node 0.6.5

Dal momento brew switchche cambia solo i collegamenti simbolici, è molto veloce. Vedi ulteriore documentazione sul Wiki Homebrew alla voce Comandi esterni .


2
Ho provato questo, e ha avuto successo con il messaggio "33 collegamenti creati per /usr/local/Cellar/node/0.4.7", ma quando eseguo il nodo in seguito, fallisce con il messaggio "-bash: / usr / local / bin / node: nessun file o directory ". Hai idea di cosa potrebbe andare storto? Nota: ho scaricato 0.4.7 manualmente e l'ho inserito nella directory della cantina, perché non so come scaricare nulla ma l'ultima versione del nodo usando brew.
Soroush Hakami,

6
Spero che tu sappia che c'è qualcosa chiamato 'nvm' [ github.com/creationix/nvm] !
Gaurav Agarwal,

40
Mi affido alla versione del pacchetto già installata. Se ti manca la versione, dovrai comunque applicare la risposta selezionata.
Nic Strong,

1
Per la versione del nodo mgmt in particolare, nvm è una soluzione migliore, imho.
circa il

5
@NicStrong In effetti, brew switchsi affida alla versione ricercata già installata. Sfortunatamente, la risposta attualmente accettata è incredibilmente inutile, contorta e obsoleta. Di seguito ci sono risposte migliori che sono molto più utili.
PIL2,

250

Aggiornamento: 15/01/2015

  • Trova la cronologia di commit del software e della versione desiderati. ad esempio, devo passare dalla versione docker 1.4.1 alla 1.3.3: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • Visualizza il file con questo pulsante: inserisci qui la descrizione dell'immagine
  • Fai clic sul pulsante Raw: Voce di elenco
  • Copia il URL ( URL docker.rb in questo esempio) dalla barra degli indirizzi
  • brew install <url>(potrebbe essere necessario brew unlinkprima, ad es. brew unlink docker)
  • brew switch docker 1.3.3
  • Tornare alla finestra mobile 1.4.1 brew switch docker 1.4.1

Da questo senso

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
Questa è l'unica cosa che ha funzionato per me. Abbastanza sciocco che un gestore di pacchetti richiede così tanto inutile solo per installare una versione precedente. Forse sono viziato dal rubino RVM e dal bundler, ma questo processo ha davvero bisogno di essere semplificato e astratto.
poetmountain,

3
Quando ho provato ad andare a una versione precedente di Ansible, ho dovuto scollegare la formula prima di installare la versione precedente come indicato. Quindi prima di fare brew install <url>, brew unlink <formulaname>. Altrimenti, questo è il modo più semplice e conciso (finora) per passare a una versione specifica di una formula.
bigsweater

Hai Rawpremuto il pulsante su quale file ?!
Iulian Onofrei,

1
Funziona, ma a volte devi scaricare il file .rb non elaborato e modificare il checksum per evitare che Homebrew si lamenti per la mancata corrispondenza SHA. GitHub sembra avere una gran parte degli alberi pronti contro termine recuperati nel 2017 e il loro checksum è cambiato. (In realtà ha causato molta confusione nella mia squadra quando Bazel ha iniziato a fallire in disallineamenti di hash lo scorso luglio)
Chang Qian,

6
Ho trovato facilmente l'indirizzo dabrew log <formula>
kangkyu il

128

Sulla falsariga del suggerimento di @ halfcube, questo funziona davvero bene:

  1. Trova la biblioteca che stai cercando https://github.com/Homebrew/homebrew-core/tree/master/Formula
  2. Cliccalo: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
  3. Fai clic sul pulsante "cronologia" per visualizzare i vecchi commit: https://github.com/Homebrew/homebrew-core/commits/master/Formula/postgresql.rb
  4. Fai clic su quello che desideri: "postgresql: aggiorna la versione alla 8.4.4", https://github.com/Homebrew/homebrew-core/blob/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  5. Fai clic sul 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
Questo è il modo più semplice per installare la versione necessaria di un pacchetto se non è disponibile nel repository principale comepackage@version
avy

7
Se non è possibile utilizzare l'interfaccia Web, è possibile clonare il repository ed eseguirlo localmente: utilizzare git log master -- Formula/PACKAGENAME.rbper ottenere la cronologia del commit, controllare il commit corretto, quindi eseguirlo brew install Formula/PACKAGENAME.rbper installarlo.
Chipbuster

7
Penso che sia necessario brew unlinkprima brew installdi altre versioni.
Studgeek

Chi è questo mxcl?
PJSCopeland

1
Faccio questo brew install https://github.com/Homebrew/homebrew-core/raw/afc10f17af8023906b87363a8340aeb62284329f/Formula/postgresql%409.6.rbma ottengo l'errore, probabilmente dovuto alla @firma: 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.Qualche idea?
msciwoj,

109

Ho scoperto una soluzione alternativa migliore rispetto alle altre soluzioni complesse.

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

Questo scaricherà e installerà PostgreSQL 8.4.8


Ho trovato questa soluzione iniziando a seguire i passaggi della ricerca nel repository e un commento nel repository.

Dopo un po 'di ricerca è emerso che qualcuno ha una collezione di formule rare con cui preparare.


Se stai cercando MySQL 5.1.x, provalo.

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.rbsembrava non riuscire con errori di sintassi.
Brian Armstrong,

6
@BrianArmstrong Ti riferisci a una versione del file in formato html, mentre hai bisogno di una versione non elaborata .
Nikita Volkov,

Vai su github.com/Homebrew/homebrew/commits/master/Library/Formula/… , scegli la tua versione, sfoglia il codice, raw - usa questo url.
jpillora,

1
Non dimenticare l' rawURL
Faber,

9
homebrew-versionsè andato e tutto è su coreora, in modo che il caso generale è: brew install https://raw.github.com/Homebrew/homebrew-core/<COMMIT>/Formula/<FORMULA>.rb. COMMITpuò essere trovato andando su github.com/Homebrew/homebrew-core/commits/master/Formula/… .
PJSCopeland

78

È possibile utilizzare la strategia di identificazione della formula e un particolare commit nella cronologia della formula che corrisponde alla versione del pacchetto che si desidera installare.

  1. Vai su https://github.com/Homebrew/homebrew-core

  2. Premi tsulla tastiera per attivare il file finder.

  3. Identifica una formula che appaia più pertinente, forse Formula/mysql.rb:, portandoti in una posizione del file forumla: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb .

  4. Guarda la cronologia delle revisioni facendo clic sul Historypulsante, che si trova su https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb . Se sei interessato a MySQL 5.7.10, potresti fare clic sull'ultima revisione precedente alla 5.7.11, che passa a un commit GitHub:

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

NOTA: potrebbe essere necessario visualizzare la cronologia di commit nella console in base al suggerimento di GitHub se la cronologia di commit non viene caricata nel browser. Sostituisci il commit SHA sopra nell'URL se sei interessato a vedere quel commit su GitHub. In alternativa, vai al passaggio 7, di seguito.

  1. Fare clic sul pulsante "Visualizza" per visualizzare l'origine del file mysql.rb dopo l'applicazione del commit.

  2. Quindi fare clic sul pulsante "Raw" per visualizzare la fonte raw.

  3. Copia l'URL. In alternativa, crea tu stesso l'URL con il mysql.rbnome del file per identificare la tua formula e la particolare versione di quella formula (identificata dal commit SHA nell'URL seguente).

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

  4. Installalo con $ brew install [URL from step 7]

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

NOTA: questa risposta è stata aggiornata per tenere conto della rimozione del sito Web braumeister.org. Lo stesso principio si applica, braumeister ha semplicemente fornito un modo adatto ai principianti per navigare tra le versioni delle formule.


13
Purtroppo questo è troppo in basso nell'elenco delle risposte ma è la soluzione migliore. Questo è quello che uso, tranne che invece di usare braumeister vado semplicemente alla pagina Homebrew GitHub della formula che desidero (ad es. Per gcc vai a github.com/Homebrew/homebrew/blob/master/Library/Formula/gcc.rb ) e poi passo attraverso la "Cronologia" del file fino ad arrivare alla versione che desidero.
Guy Kogus

3
Questa è stata sicuramente la migliore soluzione nel mio caso - installare una versione precedente di Watchman che non richiedeva Xcode 8.1
Zachary Keener

3
Questo è davvero il modo più semplice per installare una versione precedente. Ottima risposta
Martin

4
Questo ha funzionato per me, ma ho dovuto preparare prima scollegare il software.
Brett Wagner

3
Questa è stata la soluzione più semplice per me. Questo dovrebbe essere più elevato poiché la risposta accettata è obsoleta.
Tim W,

35

La maggior parte delle altre risposte sono ormai obsolete. Sfortunatamente Homebrew non ha ancora un modo integrato di installare una versione obsoleta, a meno che quella versione non esista come formula separata (ad es. python@2, postgresql@9.4 ...).

Fortunatamente, per altre formule c'è un modo molto più semplice del disordine contorto che era necessario. Ecco le istruzioni complete:

  1. Cerca la versione corretta nei log:

    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›
    

    Questo mostrerà un elenco di hash di commit. Prendi quello che è appropriato (per lo più dovrebbe essere abbastanza ovvio, e di solito è il più recente (cioè in alto).

  2. Trova l'URL in cui risiede la formula nel repository upstream:

    brew info ‹formula› | grep ^From:
    
  3. Correggi l'URL:

    1. Sostituisci github.comconraw.githubusercontent.com
    2. Sostituisci blob/mastercon l'hash di commit che abbiamo trovato nel primo passaggio.
  4. Installa la versione desiderata sostituendo masterl'URL precedentemente trovato con l'hash di commit, ad esempio:

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

(L'ultimo passaggio può richiedere l'esecuzione brew unlink ‹formula›prima.)


Se hai copiato un hash di commit che desideri utilizzare, puoi utilizzare qualcosa come questo esempio per installare quella versione, sostituendo il valore e bashcon il tuo hash di commit e la formula desiderata.

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

Questo esempio sta installando bash 4.4.23 invece di bash 5, sebbene se in seguito si eseguisse un brew upgradebash, bash 5 verrebbe installato sopra, a meno che non sia stato eseguito per la prima volta brew pin bash. Invece di fare questo più liscia senza pinning, si deve prima installare l'ultima con brew install bash, quindi brew unlink bash, quindi installare la versione precedente che si desidera per lo script di cui sopra, e quindi utilizzare brew switch bash 4.4.23per impostare i link simbolici alla versione precedente. Ora a brew upgradenon dovrebbe influenzare la tua versione di Bash. È possibile brew switch bashottenere un elenco delle versioni disponibili per passare a.


Alternativa utilizzando un tocco solo locale personalizzato

Un altro modo per raggiungere lo stesso obiettivo sembra essere:

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.

Questo crea un formula@versiontocco personalizzato che puoi installare nell'esempio sopra. Il rovescio della medaglia è che probabilmente è ancora necessario brew unlink bashe quindi brew link bash@4.4.23per utilizzare la versione specifica di Bash o qualsiasi altra formula.


1
Apparentemente hanno cambiato la sintassi per brew logcui eventuali extra -Fo --grepopzioni stavano fallendo per me.
dragon788,

1
@ dragon788 Bloody hell, Homebrew 2 si è completamente rotto brew log. Non posso preoccuparmi di scrivere una nuova versione ora perché ciò richiede un'analisi corretta del messaggio di log git, o in alternativa in esecuzione git logdirettamente sul repository corrispondente. E il log delle modifiche non sembra nemmeno menzionare questo cambiamento radicale. Oltre fastidioso.
Konrad Rudolph,

A meno che non accettino che il cambiamento nel comportamento sia un bug, sembra che External Commandpotrebbe essere necessario operare all'interno della struttura brewper ottenere quel tipo di git logfiltro. docs.brew.sh/External-Commands
dragon788

Questo è stato l'unico posto in cui sono stato in grado di trovare l' brew extractuso corretto , grazie!
dognotdog

Suggerirei di creare local0 personalizzato solo toccare la prima parte della tua risposta. Sembra davvero la soluzione migliore in assoluto.
Studgeek,

29

Ho appena usato Homebrew per tornare a Maven 2.2.1 dal semplice brew install maven Maven 3.0.3 installato.

Per prima cosa devi lasciare lì il dir del Maven

$ brew unlink maven

Utilizzare il comando brew tap

$ brew tap homebrew / versioni
Clonazione in '/ usr / local / Library / Taps / homebrew-version' ...
telecomando: conteggio degli oggetti: 590, fatto.
remoto: compressione degli oggetti: 100% (265/265), fatto.
remoto: totale 590 (delta 362), riutilizzato 549 (delta 325)
Ricezione di oggetti: 100% (590/590), 117,49 KiB | 79 KiB / s, fatto.
Delta di risoluzione: 100% (362/362), fatto.
Maschiato 50 formula

Ora puoi installare la formula di maven2:

$ brew install maven2
==> Download 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 file, 3,1 M, integrato in 6 secondi
$ mvn --version
Apache Maven 2.2.1 (r801777; 2009-08-06 12: 16: 01-0700)
Versione Java: 1.6.0_37
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Impostazioni internazionali predefinite: en_US, codifica piattaforma: MacRoman
Nome del sistema operativo: "mac os x" versione: "10.7.4" arch: "x86_64" Famiglia: "mac" 

Modifica: puoi anche brew switch maven 2.2.1passare a una versione diversa.

Modifica: il progetto Apache Maven ha riorganizzato il loro repository. Aggiornato questa risposta per tenere conto di questa modifica.


Questo è stato molto utile. Nota, la fondazione apache ha riorganizzato i binari di maven in directory specifiche della versione (1,2,3), quindi dovrai modificare maven.rb per 2.2.1 e forse altri per adattarli alla nuova struttura. Ad esempio, il binario per 2.2.1 si trovava in: apache.org/dist/maven/maven-2/2.2.1/binaries/… . Nota "maven-2 / 2.2.1 /" nell'URL.
Charles Forcey,

@CharlesForcey Hai ragione sul riorganizzazione del maven dist repo. Aggiornerò la risposta per utilizzare brew tap per utilizzare la formula di maven2 precedente. Grazie per il commento.
Cameron Goodale,


18

Una risposta aggiornata da allora si aggiunge a ciò che @ lance-pollard ha già pubblicato come risposta funzionante.

Come installare una versione specifica di una formula (la formula utilizzata in questo esempio è terraform):

  1. Trova il tuo file formula, ad esempio: https://github.com/Homebrew/homebrew-core/blob/master/Formula/terraform.rb
  2. Ottieni la versione di commit dalla cronologia di github con https://github.com/Homebrew/homebrew-core/commits/master/Formula/terraform.rb o git log master -- Formula/terraform.rbse hai clonato il repository localmente.
  3. Ottieni l'URL git grezzo con la versione di commit della tua formula: se il link della formula in github.com è https://github.com/Homebrew/homebrew-core/blob/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb , il tuo URL non elaborato verrà visualizzato essere: https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
  4. Installalo con: brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb

Per ottenere l'URL git grezzo nel passaggio 3, puoi anche semplicemente premere il pulsante "Raw" e copiare l'URL a cui ti porta il browser.
Brian Topping il

15

Metodo ufficiale (a giudicare dalla risposta a https://github.com/Homebrew/brew/issues/6028 )

Sfortunatamente Homebrew non ha ancora un modo ovvio per installare una versione precedente.

Fortunatamente, per la maggior parte delle formule c'è un modo molto più semplice del disordine contorto che era necessario. Ecco le istruzioni complete usando bashcome esempio:

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.

Questo crea il formula@versiontocco personalizzato che puoi installare nell'esempio sopra. Una nota importante è che probabilmente è necessario brew unlink bashse in precedenza fosse stata installata la versione predefinita / più recente della formula e quindi brew link bash@4.4.23per utilizzare la versione specifica di Bash (o qualsiasi altra formula in cui è installata la versione più recente e una precedente).

Un potenziale svantaggio di questo metodo è che non si può facilmente passare avanti e indietro tra le versioni perché secondo brewesso è una "formula diversa".

Se vuoi essere in grado di usare brew switch $FORMULA $VERSIONdovresti usare il metodo successivo.


Metodo con script (consigliato)

Questo esempio mostra l'installazione della bash 4.4.23 precedente, un esempio utile poiché la bashformula attualmente installa bash 5.

  • Prima installa l'ultima versione della formula con brew install bash
  • poi brew unlink bash
  • quindi installa la versione precedente desiderata per i frammenti di seguito
  • infine usa brew switch bash 4.4.23per impostare i collegamenti simbolici alla tua versione

Se hai eseguito una brew upgradedopo l'installazione di una versione precedente senza prima installare l'ultima, allora l'ultima verrebbe installata bloccando la tua versione precedente, a meno che non sia stata eseguita per la prima volta brew pin bash.

I passaggi qui EVITANO di appuntare perché è facile dimenticarsene e potresti appuntare una versione che diventerà insicura in futuro (vedi Shellshock / etc). Con questa configurazione a brew upgradenon dovrebbe interessare la tua versione di Bash ed è sempre possibile eseguire brew switch bashper ottenere un elenco delle versioni disponibili per passare a.

Copia e incolla e modifica le exportrighe dallo snippet di codice in basso per aggiornare con la versione e il nome della formula desiderati, quindi copia e incolla il resto così com'è e utilizzerà tali variabili per fare la magia.

# 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

Quando sei sicuro che la versione esiste nella formula, puoi usare quanto segue:

# 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}')

Dopo aver esportato l'hash di commit che si desidera utilizzare, è possibile utilizzarlo per installare quella versione del pacchetto.

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

Segui le indicazioni nell'output della formula per inserirlo nel tuo PERCORSO o impostalo come shell predefinita.


12

Sulla versione più recente di homebrew (0.9.5 al momento della stesura di questo documento) ci sarà una ricetta specifica per la versione del fusto homebrew che si desidera installare. Esempio:

$ brew search mongodb
mongodb    mongodb24  mongodb26

Quindi fai brew install mongodb26come al solito.

Nel caso in cui si era già installato la versione più recente, assicurarsi di scollegare la versione più recente e collegare la versione desiderata: brew unlink mongodb && brew link mongodb26.


Sebbene ciò possa rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Erik,

1
@Erik Grazie, risolto.
Alex Sharp,

11

Il problema homebrew/versionsè che qualcuno deve avere quella versione specifica del software elencata nel repository affinché tu possa usarla. Inoltre, poiché brew versionsnon è più supportato, è necessaria un'altra soluzione. Per le soluzioni che indicano l'utilizzo brew switch, questo funzionerà solo se non l'hai fatto brew cleanuppoiché la versione deve esistere sul tuo computer.

Ho avuto un problema con il voler installare una versione precedente specifica di docker-machinecui non era elencato homebrew/versions. Ho risolto questo problema usando il seguente, che dovrebbe funzionare anche con qualsiasi software installato brew. L'esempio che segue utilizzerà docker-machineil pacchetto che voglio effettuare il downgrade dalla versione 0.5.0 alla 0.4.1.

  1. Vai alla tua Formuladirectory homebrew .
    Puoi determinarlo eseguendo brew info [any package name]. Ad esempio, brew info docker-machinemi dà una linea che mi mostra un percorso - /usr/local/Cellar/docker-machine/0.5.0. Questo mi dice che sul mio computer, homebrew è installato in /usr/locale la mia Formula directory si trova di default in/usr/local/Library/Formula

  2. Individua il file formula specifico (.rb) per il tuo pacchetto. Dal momento che voglio effettuare il downgrade docker-machine, posso vedere un docker-machine.rbfile.

  3. Ottieni la cronologia delle versioni per questo file formula . accederegit log docker-machine.rb . Questo elencherà la cronologia completa del commit per questo file. Vedrai un output in questo modo:

    ...Di Più 

    commit 20c7abc13d2edd67c8c1d30c407bd5e31229cacc
    Autore: BrewTestBot 
    Data: gio 5 nov 16:14:18 2015 +0000

        docker-machine: aggiornamento bottiglia 0.5.0.

    commit 8f615708184884e501bf5c16482c95eff6aea637
    Autore: Vincent Lesierse 
    Data: mar 27 ott 22:25:30 2015 +0100

        docker-machine 0.5.0

        Finestra mobile aggiornata alla 0.5.0

        Chiude # 45403.

        Firmato-fuori-da: Dominyk Tiller 

    commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423
    Autore: BrewTestBot 
    Data: lunedì 21 settembre 14:04:04 2015 +0100

        docker-machine: aggiornamento bottiglia 0.4.1.

    commit 18fcbd36d22fa0c19406d699308fafb44e4c8dcd
    Autore: BrewTestBot 
    Data: dom 16 ago 09:05:56 2015 +0100

        docker-machine: aggiornamento bottiglia 0.4.1.

    ...Di Più

La parte difficile è trovare l'ultimo commit per la versione specifica desiderata. In quanto sopra, posso dire l'ultima versione 0.4.1 è stato commesso con questo commettere tag: commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423. I commit sopra questo punto iniziano con la versione 0.5.0 (le voci del registro git sono elencate dalla data più recente alla prima).

  1. Ottieni una versione precedente del file della formula. Utilizzando il tag commit dal passaggio 3 (è possibile utilizzare i primi 6 caratteri), è possibile ottenere una versione precedente del file formula utilizzando quanto segue:

    git checkout 5970e1 docker-machine.rb

  2. Disinstallare la versione del pacchetto corrente. Basta eseguire i normali comandi brew per disinstallare la versione corrente del pacchetto.
    Ex.brew uninstall docker-machine

  3. Installa la versione precedente del pacchetto Ora, puoi semplicemente eseguire il normale comando brew install e installerà la formula che hai verificato. Ex.brew install docker-machine

Potrebbe essere necessario ricollegare utilizzando il brew link docker-machinese necessario.

Se in qualsiasi momento desideri ripristinare la versione più recente di un pacchetto specifico, vai nella directory Formula ed esegui i seguenti comandi sul tuo file formula (.rb)

git reset HEAD docker-machine.rb
git checkout -- docker-machine.rb

Quindi è possibile brew uninstall docker-machinee brew install docker-machineottenere l'ultima versione e continuare così.


1
@Rchawdry molto scrupoloso, grazie. A proposito: per trovare il commit corrispondente alla versione che desideri aggiungere rapidamente il parametro --grep git log --grep 0.4.1 docker-machine.rb.
Jerry Mindek,

Per me, il percorso era/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
akauppi il

Non sono riuscito a trovare abbastanza della cronologia delle versioni per la cairobirra in questo modo. La risposta di @ Sealocal ha mostrato di più, per qualche motivo.
akauppi,

11

È il 2020 e la maggior parte delle risposte è obsoleta

La mia situazione: è postgresqlstato aggiornato da 11 a 12 per errore. Voglio mantenere 11.

  1. Ferma il DB:
brew services stop postgresql
  1. Installa Postgres 11:
brew install postgresql@11
  1. Abilitalo:
brew link postgresql@11 --force
  1. (Facoltativo) Rinomina directory dati DB da postgresa postgres@11:
cd /usr/local/var
ls -lh
mv postgresql@11 postgresql@11-fresh-backup
mv postgres postgresql@11
  1. Avviare il DB:
brew services start postgresql@11

In caso di errori, controllare /usr/local/var/log/postgresql@11.log(notare @ 11).


6
Questo funziona solo per il caso speciale di postgresql @ 11 che è esplicitamente tenuto in mano dai manutentori di Homebrew per aiutare con le migrazioni dei datastore (eseguite con il comando speciale brew postgresql-upgrade-database). Questa risposta non è utile per quasi qualsiasi altra formula.
Adam Wróbel,

@ AdamWróbel Ho deciso che va bene rispondere alla domanda originale su Postgres . brew postgresql-upgrade-databaseè, beh, per gli aggiornamenti . La mia risposta riguarda l'uso di una versione precedente di Postgres. Il semplice cambio di binari non funzionerà.
Max Malysh,

Utenti di NodeJS che non utilizzano un gestore versioni, ad esempio nvmFYI, ho avuto fortuna con questa tecnica per le versioni precedenti di LTS. Almeno al momento della stesura di v10 e v12 dovrebbe essere disponibile, ad esempio brew install node@12 formulae.brew.sh/formula/node
zampe

9

Installa una versione precedente del pacchetto brew (esempio Flyway 4.2.0)

Trova la tua directory git homebrew locale o clona Homebrew / homebrew-core localmente

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

O

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

Elencare tutte le versioni disponibili

git log master -- Formula/flyway.rb

Copia l'ID commit per la versione desiderata e installalo direttamente

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


perché non semplicemente eseguire brew install Formula/flyway.rbdalla homebrew-coredirectory? ha funzionato per me senza usare l' raw.github..indirizzo
kangkyu

9

Ho provato la maggior parte delle soluzioni qui e sono obsolete. Ho dovuto combinare alcune idee da qui con il mio lavoro. Di conseguenza ho creato uno script per aiutarmi a fare il lavoro pesante che puoi trovare qui

Uso:

brewv.sh formula_name desired_version

6

potrebbe essere fatto molto facilmente per l'ultima versione di brew.

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
... se qualcuno si prendesse la briga di creare una ricetta con versione per quel pacchetto.
clacke,

6

Nessuno di questi ha funzionato davvero per il mio caso (Python), quindi aggiungerò i miei 2 centesimi:

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

L'output è simile al seguente:

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.

...

Voglio la versione 2.7.11così il mio hash è cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9(o cf5da05in breve). Successivamente, controllo quella versione e installo la formula python:

git checkout cf5da05
brew install python

Infine, pulisci:

git checkout master

2
La vita cambia e questa risposta è molto rilevante. Non dimenticare HOMEBREW_NO_AUTO_UPDATEe leggere github.com/Homebrew/brew/issues/1188
Wile E.

I comandi corretti sono cd brew --prefix /Homebrewegit log Library/Taps/homebrew/homebrew-core/Formula/python.rb
Iulian Onofrei il

Ma anche quello non funziona perché /Library/Tapsviene ignorato.
Iulian Onofrei,

Non dimenticartene HOMEBREW_NO_AUTO_UPDATE. Sì, non dimenticare ciò di cui hai bisogno fino a quando non scopri di averne bisogno. xD
Josh Habdas,

Che ne dici di questo? HOMEBREW_NO_INSTALL_CLEANUPnon è qualcosa che devi ricordare?
kangkyu,

6

Se non riesci a trovare la tua versione brew search <formula>, puoi anche provare a consultare i registri di commit per la tua formula per trovare la versione desiderata:

ecco un esempio per l'installazione di una versione precedente di nginx tramite brew:

Da lì, possiamo installare 1.6.3con l'URL sha e raw git:

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


3

Attualmente i vecchi modi di installare specifiche versioni di formula sono stati deprecati. Quindi sembra che dobbiamo usare brew edit [formula]. Ad esempio, diciamo che vogliamo installare una 62.1versione di icu4c(necessaria ad esempio per postgresql 10.5). Quindi dovresti

> brew edit icu4c
# drops you to editor

Qui dovresti modificare url, versione sha256(forse anche mirror) le 62.1stringhe corrispondenti .

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"

quindi corri brew reinstall icu4cper scaricare finalmente la 62.1versione.


come ottenere il sha256 ? nel mio casohttps://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-macos-x64-release.zip
simo

1

Aggiornamento sulla libreria / formula / postgresql.rb riga 8 a

http://ftp2.uk.postgresql.org/sites/ftp.postgresql.org/source/v8.4.6/postgresql-8.4.6.tar.bz2

E MD5 sulla linea 9 a

fcc3daaf2292fa6bf1185ec45e512db6

Salva ed esci.

brew install postgres
initdb /usr/local/var/postgres

Ora in questa fase potresti riscontrare l' postgresql could not create shared memory segmenterrore, per aggirare quell'aggiornamento in /etc/sysctl.confquesto modo:

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

Riprova initdb /usr/local/var/postgrese dovrebbe funzionare senza problemi.

Per eseguire postgresql all'avvio

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

Spero che aiuti :)


1

Ho appena copiato una versione precedente di elasticsearch nella /usr/local/Cellar/elasticsearchdirectory.

$ 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

Questo è tutto. Forse è utile per chiunque.


Un brutto trucco. Ma sì, ha funzionato anche per me, mentre cercavo di cercare e installare una versione precedente di console! Saluti.
darkdefender27

0

Ho deciso, contro il mio miglior giudizio, di creare una formula per Maven 3.1.1, che homebrew/versionsnon aveva. Per farlo:

  1. Ho biforcato homebrew/versionssu Github.
  2. Ho effettuato il collegamento simbolico $(brew --prefix)/Library/Tapsalla copia di lavoro locale del mio fork. Chiamerò questo my-homebrew/versions.
  3. Ho provato specificando la formula come my-homebrew/versions/<formula>.
  4. Ho inviato una richiesta pull a homebrew/versionsper la mia nuova formula.

Sìì.



0

Ho creato uno strumento per facilitare il processo prescritto in questa risposta .

Per trovare un pacchetto pkgcon versione a.b.c, eseguire:

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

Questo elencherà i commit sulla pkgformula homebrew che menziona la versione data insieme ai loro URL GitHub.

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: 

Verifica il commit dall'URL specificato e inserisci l'indice del commit selezionato.

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

Copia ed esegui il comando dato per l'installazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.