Domanda Homebrew installa la versione specifica della formula?


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


1709
2017-10-21 12:58


origine


risposte:


(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 vecchia versione migliore.)

Iniziamo 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 simile /usr/local/Cellar/postgresql/9.3.1. Solo i collegamenti simbolici a questa cartella vengono quindi installati a livello globale. In linea di principio, è abbastanza semplice passare da una versione all'altra. (*)

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

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

$ 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. Possiamo attivarlo usando 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

Controlliamo due volte 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

Si noti che la stella * si è trasferito alla versione appena attivata

(*) Si prega di notare che brew switch funziona solo finché tutte le dipendenze della versione precedente sono ancora in circolazione. In alcuni casi, potrebbe essere necessaria una ricostruzione della versione precedente. Pertanto, utilizzando brew switch è utile soprattutto quando si desidera passare tra due versioni non troppo distanti.

2) Controllare, se la versione è disponibile come tocco

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

Quel 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 sfruttato il homebrew/versions rubinetto. (Controllare con brew tap, rimuovere con brew untap homebrew/versions.) Quanto segue sarebbe stato equivalente:

$ brew tap homebrew/versions
$ brew install postgresql8

Finché le formule della versione backported rimangono aggiornate, questo approccio è probabilmente il modo migliore per gestire i vecchi software.

3) Prova qualche formula del passato

I seguenti approcci sono elencati principalmente per completezza. Entrambi cercano di far risorgere alcune formule non morte dal repository brew. A causa delle dipendenze modificate, delle modifiche API nella specifica della formula o semplicemente di una modifica nell'URL di download, le cose possono o non possono funzionare.

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

a) tempi storici

Fra Agosto 2011 e ottobre 2014, l'homebrew ha avuto un brew versions comando, che sputa tutte le versioni disponibili con i rispettivi hash SHA. A partire da ottobre 2014, devi fare a brew tap homebrew/boneyard prima che tu possa usarlo 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, si sconsiglia di usarlo. Homebrew sputa tutte le versioni che può trovare con la sua euristica interna e 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 è tuo amico cambiare tra il vecchio e il nuovo.

b) tempi preistorici

Per esigenze speciali, potremmo anche provare a scavare attraverso il repository homebrew.

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

git log -S cerca tutti i commit in cui la stringa '8.4.4' è stato aggiunto o rimosso nel file Library/Formula/postgresql.rb. Come risultato 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, la formula API è più o meno garantita come valida):

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

Puoi saltare l'ultimo comando per mantenere il riferimento nel tuo repository git.

Una nota: quando estrai il commit più vecchio, esegui temporaneamente il downgrade della tua installazione homebrew. Quindi, dovresti fare attenzione poiché alcuni comandi in homebrew potrebbero essere diversi dalla versione più recente.

4) Scrivi manualmente una formula

Non è troppo difficile e puoi quindi caricarlo Homebrew-Versioni.

A.) Bonus: appuntare

Se vuoi mantenere una certa versione di, ad esempio postgresql, in giro e impedirgli di essere aggiornata quando fai il naturale brew update; brew upgrade procedura, è possibile perno una formula:

$ brew pin postgresql

Le formule bloccate sono elencate in /usr/local/Library/PinnedKegs/ e una volta che vuoi apportare le ultime modifiche e aggiornamenti, puoi farlo sbloccare nuovamente:

$ brew unpin postgresql

2117
2017-11-11 20:04



Flusso di lavoro semplice

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

Per installare una versione specifica, ad es. postgresql 9.5 si esegue semplicemente:

$ brew install postgresql@9.5

Per elencare le versioni disponibili eseguire una ricerca con @:

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

632
2018-03-22 23:29



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

brew switch [formula] [version]

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

brew switch node 0.4.12
brew switch node 0.6.5

Da brew switch cambia semplicemente i collegamenti simbolici, è molto veloce. Vedi ulteriore documentazione sulla Homebrew Wiki sotto Comandi esterni.


425
2017-12-14 16:33



Aggiornamento: 15/01/2015

  • Trova la cronologia di commit del software e della versione desiderati. per esempio. Devo passare dalla finestra mobile versione 1.4.1 alla 1.3.3: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • Visualizza il file con questo pulsante: enter image description here 
  • Fai clic sul pulsante Raw: List item
  • Copia il URL (URL docker.rb in questo esempio) dalla barra degli indirizzi
  • brew install <url> (potrebbe essere necessario brew unlink primo, ad es. brew unlink docker)
  • brew switch docker 1.3.3
  • Passa alla finestra mobile 1.4.1 brew switch docker 1.4.1

Da questa nocciolo

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

182
2017-07-19 23:42



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 del repository e a commento nel repository.

Dopo una piccola ricerca, ho scoperto che qualcuno ha una collezione di formule rare da preparare.


Se stai cercando MySQL 5.1.x, provalo.

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

92
2017-09-19 11:55



Sulla falsariga del suggerimento di @ halfcube, funziona molto bene:

  1. Trova la biblioteca che stai cercando https://github.com/mxcl/homebrew/tree/master/Library/Formula
  2. Cliccalo: https://github.com/mxcl/homebrew/blob/master/Library/Formula/postgresql.rb
  3. Fai clic sul pulsante "cronologia" per visualizzare i vecchi commit: https://github.com/mxcl/homebrew/commits/master/Library/Formula/postgresql.rb
  4. Fare clic su quello desiderato: "postgresql: aggiornamento versione 8.4.4", https://github.com/mxcl/homebrew/blob/fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422/Library/Formula/postgresql.rb
  5. Fai clic sul link "raw": 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



Puoi utilizzare la strategia di identificazione della formula e di un particolare commit nella cronologia della formula che corrisponde alla versione del pacchetto che desideri installare.

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

  2. stampa t sulla tastiera per attivare il cercatore di file.

  3. Identificare una formula che sembra più rilevante, forse: Formula/mysql.rb, portandoti in una posizione del file forum: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb.

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

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

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

  1. Fare clic sul pulsante "Visualizza" per visualizzare l'origine per il 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 l'URL tu stesso con il mysql.rb nome del file per identificare la tua formula e la versione specifica di quella formula (identificata dal commit SHA nell'URL sottostante).

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

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

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

NOTA: questa risposta è stata aggiornata per tenere conto della rimozione del sito Web di braumeister.org. Lo stesso principio si applica, braumeister aveva semplicemente fornito un modo amichevole per principianti per navigare le versioni di formula.


49
2018-02-24 05:38