Mai mult
Homebrew instala versiune specifică a formula?
Cum pot instala o versiune specifică a o formula în homebrew? De exemplu, postgresql-8.4.4 în loc de cele mai recente 9.0.
2061
24
TLDR:
brew instala postgresql@8.4.4
a se Vedea răspuns de mai jos pentru mai multe detalii.(Am re-editat răspunsul meu pentru a da o mai aprofundată flux de lucru pentru instalarea/utilizarea software-ul mai vechi versiuni cu homebrew. Simțiți-vă liber pentru a adăuga o notă dacă ați găsit versiunea veche mai bine.*) Să începem cu cel mai simplu caz:
Verifica, dacă versiunea este deja instalat (dar nu este activat)
Când homebrew instalează o nouă formulă, se pune într-o versiune director ca
/usr/local/Crama/postgresql/9.3.1
. Doar link-uri simbolice în acest dosar sunt apoi instalate la nivel global. În principiu, acest lucru îl face destul de ușor pentru a comuta între două versiuni instalate. (*) Dacă ați fost utilizați homebrew pentru mai mult timp și nu a scos versiuni mai vechi (folosind, de exemplu, o fiertură de curățire), sunt șanse ca unele versiune mai veche a programului poate fi în continuare în jurul valorii de. Dacă doriți să pur și simplu a activa că versiunea anterioară, o fiertură de schimb este cel mai simplu mod de a face acest lucru. Verifica cu o fiertură de informații postgresql "(sau " brew comutator postgresql <TAB>
) dacă versiunea mai veche este instalat:Vom vedea că unele versiuni mai vechi este deja instalat. Ne poate activa folosind o fiertură de schimb:
Să verificați ceea ce este activat:
Rețineți că steaua
*
a mutat la noua versiune activat () Vă rugăm să rețineți că o fiertură de schimb funcționează doar atâta timp cât toate dependențele de versiunea mai veche sunt încă în jurul valorii de. În unele cazuri, o reconstrui cu o versiune mai veche poate deveni necesară. Prin urmare, folosind o fiertură de comutator este util mai ales atunci când unul vrea să comutați între două versiuni nu prea departe unul de altul.* 2) Verificați dacă versiunea este disponibil ca un robinetMai ales pentru mari proiecte software, este foarte probabil că există o cerere suficient de mare pentru mai multe (potențial API incompatibile) versiuni majore a unui anumit bucată de software. În Martie 2012, Homebrew 0.9 oferă un mecanism pentru acest lucru: `brew apăsați & homebrew versiunile depozit. Care versiuni depozit pot include conflicte de versiuni mai vechi pentru mai multe formule. (Cea mai mare parte doar cele mari și celebre, dar, desigur, ei vor avea, de asemenea, mai multe formule pentru postgresql.) o fiertură de căutare postgresql vă va arăta unde să se uite:
Putem instala pur și simplu prin tastarea
Rețineți că acest lucru are în mod automat exploatat a
homebrew/versiuni
de la robinet. (Verificați cu o fiertură de la robinet, se scoate cu o fiertură de untap homebrew/versiuni
.) Următoarele ar fi fost echivalentă:Atâta timp cât portate versiune formule de ședere de până-la-data, această abordare este, probabil, cel mai bun mod de a face cu software-ul mai vechi. 3) a Încerca o formulă din trecut
Următoarele abordări sunt enumerate mai ales pentru completitudine. Ambele încearcă să reînvie niște strigoi formula de preparare a cafelei depozit. Din cauza schimbat dependențe, API modificări în formula de spec sau pur și simplu o schimbare în URL-ul de descărcare, lucrurile pot sau nu pot lucra. Deoarece întreaga formulă director este un depozit git, se poate instala versiuni specifice folosind simplu git comenzi. Cu toate acestea, trebuie să găsim o modalitate de a obține de la un comis-în cazul în care versiunea veche a fost disponibil. a) istoric ori Între August 2011 și octombrie 2014, homebrew avut o fiertură de versiuni de comandă, care a scuipat toate disponibile versiuni cu normele lor SHA hash-uri. Începând din octombrie 2014, trebuie să faci o fiertură de la robinet homebrew/boneyard` înainte de a putea utiliza. Ca nume de la robinet sugerează, probabil, ar trebui să faci acest lucru doar ca o ultimă soluție. E. g.
După cum puteți vedea, se recomandă utilizarea acestuia. Homebrew scuipă toate versiunile se pot găsi cu sale interne euristică și vă arată o modalitate de a prelua vechile formule. Hai să încercăm.
Acum că mai în vârstă postgresql versiunea este instalat, putem să re-a instala cea mai recentă formulă în scopul de a păstra depozit curat:
o fiertură de schimb este prietenul tău pentru a schimba între vechi și nou. b) timpurile preistorice Pentru nevoi speciale, am putea încerca, de asemenea, propriile noastre săpat prin homebrew repo.
git log-S
pare pentru toate comite în care string'8.4.4'
fost fie adăugate sau eliminate în fișierul Bibliotecii/Robinete/homebrew/homebrew-core/Formula/postgresql.rb`. Avem două comite ca urmare.Evident,
fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
este comis de care suntem interesați. Deoarece acest lucru comite este destul de vechi, vom încerca să downgrade complet de instalare homebrew (în acest fel, formula API este mai mult sau mai puțin garantat pentru a fi valabil):Puteți sări peste ultima comandă pentru a menține referință în depozit git. Unul rețineți: la check-out, în vârstă comis-o, temporar downgrade homebrew instalare. Deci, tu ar trebui să fii atent ca unele comenzi în homebrew-ar putea să fie diferite de cea mai recentă versiune. 4) Manual scrie o formulă
Nu e prea greu și puteți apoi încărcați-l la propriul depozit. Folosit pentru a fi Homebrew-Versiunile, dar care este acum întreruptă. A.) Bonus: Fixarea
Dacă doriți să păstrați o anumită versiune de, să zicem postgresql, în jurul valorii de și de a opri de la a fi actualizate atunci când faci naturale fiertură de actualizare; prepara upgrade` procedură, puteți pin o formulă:
Prins formule sunt enumerate în
/usr/local/Library/PinnedKegs/
și dacă doriți pentru a aduce în cele mai recente modificări și actualizări, puteți unpin din nou:Flux De Lucru Simplu
Acum, că Homebrew/versiuni a fost depreciat, Homebrew/core suportă mai multe versiuni de formule cu un nou format de nume.
Pentru a instala o versiune specifică, de exemplu, postgresql 9.5 pur și simplu rulați:
Pentru a lista versiuni disponibile rula o căutare cu @:
Nu's acum un mod mult mai ușor pentru a instala o versiune mai veche de o formula care'd instalate anterior. Pur și simplu utilizați
De exemplu, am alternează în mod regulat între Node.js 0.4.12 și 0.6.5:
Din
brew switch
schimbă doar simbolice, l's foarte repede. Vezi documente suplimentare cu privire la Homebrew Wiki sub Comenzi Externe.Update: 1/15/2015
(ar trebui să brew deconectați mai întâi, de exemplu, bere deconectați docker
)brew comutator docker 1.4.1
Din acest sinteza
Am'am descoperit o alternativă mai bună soluție atunci alte soluții complexe.
Acest lucru va descărca și instala PostgreSQL 8.4.8
Am găsit această soluție, de a începe să urmați pașii de căutare repo și un comentariu în repo .
După un pic de cercetare a constatat că cineva are o colecție de rare formulars pentru a prepara cu.
Dacă vă căutați pentru MySQL 5.1.x, da acest un try.
De-a lungul liniilor de @halfcube's sugestie, acest lucru funcționează foarte bine:
Puteți utiliza strategia de identificare a formula și un anumit comite din istoria formula care se potrivește cu versiunea de pachetul'd place să instalați.
Du-te la https://github.com/Homebrew/homebrew-core
Apăsați " t " de pe tastatură pentru a activa file finder.
Identifica o formulă care pare cel mai relevant, poate: Formula/mysql.rb`, aducându-vă la o formula de fișier de localizare: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb.
Uita-te la revizuirea istorie, făcând clic pe butonul
Istoric
, care este situat la https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb. Daca're interesat în MySQL 5.7.10, ați putea dori să faceți clic pe cele mai recente revizuiri înainte de a 5.7.11, care navighează la o GitHub comite:https://github.com/Homebrew/homebrew-core/commit/c77882756a832ac1d87e7396c114158e5619016c#Formula/mysql.rb
NOTĂ: este posibil să Aveți pentru a vizualiza comite istorie în consola de pe GitHub's sugestie dacă comite istoria nu a încărca în browser-ul dumneavoastră. Înlocuiți comite SHA mai sus în URL-ul daca're interesat în a vedea că a comis pe GitHub. Alternativ, treceți la pasul 7, de mai jos.
Faceți clic pe "Vezi" buton pentru a vizualiza sursa pentru mysql.rb fișier după comiterea a fost aplicat.
Apoi, faceți clic pe "Prime" buton pentru a vizualiza prime de sursă.
Copiați URL-ul. Alternativ, construi URL-te cu mysql.rb` nume fișier pentru a identifica, formula și o anumită versiune de formula (identificate prin commmit SHA în URL-ul de mai jos).
https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb
$ prepara instala [URL-ul de la pasul 7]
$ prepara instala https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb
NOTĂ: Acest răspuns a fost actualizat pentru a ține cont de îndepărtare a braumeister.org site-ul web. Același principiu se aplică, braumeister a oferit pur și simplu de un incepator-friendly mod de a naviga formula versiuni.
Am folosit doar Homebrew pentru a merge înapoi la Maven 2.2.1 din simplu
brew instala maven
instalat Maven 3.0.3.În primul rând trebuie să părăsească maven dir acolo deci
Utilizați prepara atingeți comanda
Acum puteți instala maven2 formula:
Edit: Puteți, de asemenea, doar pentru a prepara comutator maven 2.2.1` pentru a comuta la o altă versiune.
Edit: Apache Maven proiect reorganizat lor repo. Actualizat acest răspuns a ține cont de această schimbare.
Bazat pe fluxul de lucru descris de @tschundeee și @Debilski de actualizare 1, am automatizat procedură și a adăugat curățare în acest script.
Descarca, pune-l în calea ta și
brewv <formula_name> <wanted_version>
. Pentru OPERAȚIUNEA asta, ar fi::)
Cele mai multe dintre celelalte răspunsuri sunt depășite până acum. Din păcate Homebrew încă nu are un built-in modul de a instala o versiune învechită, cu excepția cazului în care versiunea există ca o formulă separată (de exemplu,
python@2
,postgresql@9.4
...).Din fericire, pentru alte formule există un mod mult mai ușor decât complicată, care folosit pentru a fi necesar. Aici sunt instrucțiuni complete:
brew log formula
Defilați în jos/sus cu j/k sau tastele săgeată
sau de a folosi de exemplu. /4.4.23 pentru a căuta o anumită versiune
Această sintaxă funcționează doar pe pre-2.0 Homebrew versiuni
brew log --format=format:%H\ %s -F --grep="versiune" "formulă"
Aceasta va afișa o listă a comite hash-uri. Ia una care este corespunzătoare (cea mai mare parte ar trebui să fie destul de evident, și de obicei este cea mai recentă (de exemplu, partea de sus) unul.
brew info "formula" | grep ^Din:
Fix URL-ul:
Înlocuiți
github.com " cu " raw.githubusercontent.com
Înlocuiți `blob/master cu comită hash-am găsit în primul pas.
Instalați versiunea dorită prin înlocuirea "maestru" în anterior a fost găsit URL-ul de comite hash, de exemplu:
brew instala https://raw.githubusercontent.com/Homebrew/homebrew-core/"hash"/Formula/"formula".rb
(Ultimul pas poate necesita rularea `brew unlink "formula" înainte.)
Dacă ați copiat o comite hash doriți să o utilizați, puteți folosi acest exemplu pentru a instala această versiune, înlocuind valoarea și
bash
cu comită hash și formula dorită.Acest exemplu este instalarea bash 4.4.23 în loc de bash 5, deși, dacă ați efectuat o fiertură de upgrade
după aceea bash 5 ar obține instalat pe partea de sus, dacă nu primul executat
de infuzie pin bash. În loc de a face acest lucru mai lin, FĂRĂ fixare, trebuie să instalați mai întâi cea mai recentă, cu o fiertură de a instala bash", apoi " brew deconectați bash
, apoi instalați versiunea mai veche pe care doriți pe script-ul de mai sus, și apoi utilizați o fiertură de a comuta bash 4.4.23a înființat simbolice în versiunea mai veche. Acum o fiertură de upgrade
ar n't afecta versiune de Bash. Poți prepara comutator bash` pentru a obține o listă de versiuni disponibile pentru a comuta la.Alternative, folosind un obicei local-doar atingeți
Un alt mod de a atinge același scop pare a fi:
`` brew atingeți-noul nume de utilizator/repo-numele
extras cu o versiune pare să ruleze un grep sub capota
prepara extract --version='4.4.23' bash numele de utilizator/repo-numele brew instala bash@4.4.23
Notă acest "nu" atunci când încearcă să ia o sticlă de pe pachet și se pare că a
unele ciudat dublarea versiune în care de ieșire, dar acest lucru nu't fatale.
``
Acest lucru creează o formulă@versiunea în custom de la robinet pe care o puteți instala pe exemplul de mai sus. Dezavantajul este că, probabil, încă mai trebuie să `brew deconectați bash "și apoi" brew link bash@4.4.23 în scopul de a utiliza versiunea dvs. specifice de Bash sau orice altă formulă.
O actualizare a răspuns din care se adaugă la ceea ce @lance-pollard deja postate ca răspuns de lucru.
Cum pentru a Instala versiune specifică a unei Formule (formula utilizată în acest exemplu este
terraform
):git log master-Formula/terraform.rb
daca ai clonat repo la nivel local.Pe cea mai noua versiune de homebrew (0.9.5 ca din acest scris) nu va exista o reteta anume pentru versiunea homebrew butoi doriți să instalați. Exemplu:
Atunci fă-o fiertură de a instala mongodb26` cum ar fi normal.
În cazul în care ai avut deja instalat cea mai recentă versiune, asigurați-vă că pentru a anula cea mai recentă versiune și link-ul dorit versiune:
brew deconectați mongodb && prepara link-ul de mongodb26
.Metodă oficială ( judecând după răspunsul la https://github.com/Homebrew/brew/issues/6028 )
Din păcate Homebrew încă nu are o evident built-in modul de a instala o versiune mai veche.
Din fericire, de cele mai multe formule de acolo e un mod mult mai ușor decât complicată, care folosit pentru a fi necesar. Aici sunt instrucțiuni complete folosind
bash
ca un exemplu:`` brew atingeți-nou $USER/local-robinet
extras cu o versiune pare să ruleze o
git log --grep
sub capotaprepara extract --version=4.4.23 bash $USER/local-robinet
Instala noua versiune de la robinet
brew instala bash@4.4.23
Notă acest "nu" încercarea de a apuca o sticla pentru ambalaj și se pare că a
unele ciudat dublarea versiune în care de ieșire, dar acest lucru nu't fatale.
``
Acest lucru creează formula lui@versiunea în custom de la robinet pe care o puteți instala pe exemplul de mai sus. O notă importantă este că, probabil, ai nevoie să brew deconectați bash` dacă ați avut instalat anterior default/mai recentă versiune a formula și apoi bere link bash@4.4.23 în scopul de a utiliza versiunea dvs. specifice de Bash (sau orice altă formulă în cazul în care aveți cele mai recente și o versiune mai veche instalat).
Un potențial dezavantaj al acestei metode este că poate't de ușor comuta înainte și înapoi între versiunile pentru că în conformitate cu "brew" este un "diferite formule".
Dacă doriți să fie capabil de a utiliza o fiertură de comuta $FORMULA $VERSIUNE` ar trebui să utilizați următoarea metodă.
Scripted Metoda (Recomandat)
Acest exemplu arată instalarea în vârstă bash 4.4.23, un exemplu util de la
bash
formula în prezent instalează bash 5.brew deconectați bash
Dacă ați efectuat o fiertură de upgrade după instalarea unei versiuni mai vechi, fără a instala cea mai recentă prima, apoi cea mai recentă ar obține instalat ciomăgeală ta versiune mai veche, dacă nu mai întâi executat
de infuzie pin bash
.Pasii de aici a EVITA fixarea pentru că este ușor să uităm despre și s-ar putea pin-ul la o versiune care devine nesigur în viitor (a se vedea Shellshock/etc). Cu acest setup o fiertură de upgrade
ar n't afecta versiune de Bash și puteți rula întotdeauna o fiertură de a comuta bash
pentru a obține o listă de versiuni disponibile pentru a comuta la.Copiați și inserați și edita "export" linii din fragmentul de cod de mai jos pentru a actualiza cu versiunea dorită și formula de nume, apoi copiați și inserați codul restul ca-este și va folosi aceste variabile pentru a face magie.
``
Această sintaxă de căutare funcționează cu noi Homebrew
export BREW_FORMULA_SEARCH_VERSION=4.4.23 BREW_FORMULA_NAME=bash
Acest lucru se va imprima orice/toate se angajează ca se potrivesc la versiunea și numele de formula
git-C $(brew --repo homebrew/core) log \ --format=format:%H\ %s -F --toate-meci \ --grep=$BREW_FORMULA_SEARCH_VERSION --grep=$BREW_FORMULA_NAME ``
Atunci când sunt anumite versiunea există în formulă, puteți utiliza de mai jos:
``
Devine doar cele mai recente Git commit SHA pentru script-ul de mai jos
export BREW_FORMULA_VERSION_SHA=$(git-C $(brew --repo homebrew/core) log \ --format=format:%H\ %s -F --toate-meci \ --grep=$BREW_FORMULA_SEARCH_VERSION --grep=$BREW_FORMULA_NAME | \ capul -1 | awk '{print $1}') ``
După ce ați exportat comite hash doriți să o utilizați, puteți utiliza acest pentru a instala această versiune a pachetului.
brew info $BREW_FORMULA_NAME \ | sed -n \ -e '/^De: /s///' \ -e 's/github.com/prime.githubusercontent.com/' \ -e 's%blob/%%' \ -e "s/master/$BREW_FORMULA_VERSION_SHA/p" \ | xargs prepara instala
Urmați instrucțiunile în formula de ieșire să-l pună în CALEA ta, sau setați-l ca implicit shell.
Problema cu homebrew/versiuni este ca cineva să aibă o anumită versiune de software enumerate în depozit pentru tine de a fi capabil să-l folosească. De asemenea, din
brew versiuni
nu mai este acceptat, o altă soluție este necesar. Pentru soluții care să indice, folosind o fiertură de schimb, acest lucru va funcționa numai dacă te-ai't face o fiertură de curățire din moment ce versiune trebuie să existe pe calculatorul dumneavoastră.Am avut o problema cu care doresc să instaleze o anumită versiune mai veche de
docker-mașină
, care nu a fost't enumerate în homebrew/versiuni. Am rezolvat acest lucru, folosind de mai jos, care ar trebui să funcționeze, de asemenea, pentru orice prepara software-ul instalat. Exemplul de mai jos se va folosi docker-mașină
ca pachetul vreau să downgrade de la versiunea 0.5.0 la 0.4.1.Du-te la homebrew
Formula
director. Puteți determina acest lucru prin rulareabrew info [orice nume pachet]
. De exemplu, o fiertură de informații docker-mașinădă-mi o linie care arată mine o cale -
/usr/local/Crama/docker-mașină/0.5.0. Acest lucru îmi spune că pe masina mea, homebrew este instalat în
/usr/local și miFormula
directorul se află în mod implicit în/usr/local/Library/Formula
Localiza formula de fișier (.rb) pentru pachet. Deoarece vreau să downgrade
docker-mașină
, eu pot vedea un docher-mașină.rb` de fișier.Obține versiunea istorie pentru această formulă de fișiere . Introduceți
git log docker-mașină.rb
. Aceasta va lista completă a comis istorie pentru acest fișier. Veți vedea de ieșire de genul asta:Partea dificilă este de a găsi cele mai recente comite specifice versiune vrei. În cele de mai sus, pot spune cea mai recentă versiunea 0.4.1 a fost săvârșită cu acest comite tag-ul :
comite 5970e1af9b13dcbeffd281ae57c9ab90316ba423
. Angajează mai sus de acest punct începe să utilizați versiunea 0.5.0 (git log intrări sunt listate de la cele mai recente la data cea mai apropiată).git checkout 5970e1 docker-mașină.rb
Dezinstalarea pachetului actual versiune. Doar rula normal prepara comenzile să dezinstalați versiunea curentă de pachet. Ex. o fiertură de dezinstalare docker-mașină`
Instalați cea mai veche versiune pachet Acum, puteți rula doar bere normală a instala comandă și se va instala formula care trebuie checkout afară. Ex.
brew instala docker-mașină
Poate fi necesar să re-link-ul de la infuzat link-ul de docker masina, daca este necesar.
Dacă în orice moment doriți pentru a reveni la cea mai recentă versiune a unui pachet specific, du-te în Formula director și problema următoarele comenzi pe formula de fișier (.rb)
Atunci prepara dezinstalare docker-mașină " și " infuzie instala docker-mașină` pentru a obține cea mai recentă versiune și păstrați-l în acest mod de a merge înainte.
Instala un vechi prepara versiune pachet (Migratoare 4.2.0 exemplu)
Găsi local homebrew git dir sau clona Homebrew/homebrew-core la nivel local
cd /usr/local/Homebrew/Library/Robinete/homebrew/homebrew-core/
SAU
git clona git@github.com:Homebrew/homebrew-core.git
Lista cu toate versiunile disponibile
git log master-Formula/ruta de zbor.rb
Copia comite ID-ul pentru versiunea dorită și instalați-o direct
o fiertură de a instala https://raw.githubusercontent.com/Homebrew/homebrew-core/793abfa325531415184e1549836c982b39e89299/Formula/flyway.rb `
Am'am încercat cele mai multe dintre soluțiile aici și sunt depășite. Am avut de a combina unele idei de aici cu munca mea. Ca urmare am'am creat un script pentru a ajuta-mi face munca grea pe care o puteți găsi aici
Utilizare:
s-ar putea face foarte ușor pentru ultima versiune de preparare a cafelei.
Dacă poți't găsi versiunea cu fiertură de căutare `, puteți încerca, de asemenea, merge de-a lungul comite busteni pentru formulă pentru a găsi versiunea vrei:
aici este un exemplu pentru a instala o versiune mai veche de nginx prin intermediul prepara:
ngxnx formula comite log
vezi, nginx: actualizare 1.6.3 sticla eba75b9a1a474b9fc4df30bd0a32637fa31ec049`
De acolo, putem instala `1.6.3 cu sha și prime git url:
o fiertură de a instala https://raw.githubusercontent.com/Homebrew/homebrew/eba75b9a1a474b9fc4df30bd0a32637fa31ec049/Library/Formula/nginx.rb`
Nici unul din ei chiar a lucrat pentru cazul meu (Python), așa că am'll add my 2 cents:
De ieșire arată astfel:
Vreau versiune
2.7.11
meu hash estecf5da0547cd261f79d69e7ff62fdfbd2c2d646e9 "(sau " cf5da05
pentru scurt). Apoi, am check out această versiune și instalați formula "pitonul":În cele din urmă, curat:
În prezent, vechile moduri de instalarea formule specifice versiuni au fost depreciat. Deci se pare ca avem de a folosi o fiertură de editare [formula]
. E. g. spunem că vrem să instalați un
62.1versiune
icu4c(necesare de exemplu pentru postgresql 10.5
). Atunci'd trebuie săAici ai'd trebuie să-și modifice
url
,versiune
șisha256
(probabil, de asemenea, "oglindă") corespunzătoare62.1
siruri de caractere.apoi rulați-o fiertură de reinstalați icu4c
în cele din urmă să descărcați
62.1` versiune.