Ako nainštalujem konkrétnu verziu vzorca v homebrew? Napríklad postgresql-8.4.4 namiesto najnovšej verzie 9.0.
TLDR: brew install [email protected]
Viac informácií nájdete v odpoveď nižšie.
(Prepracoval som svoju odpoveď, aby som poskytol dôkladnejší postup práce pri inštalácii/používaní starších verzií softvéru s homebrew. Neváhajte pridať poznámku, ak sa vám stará verzia zdala lepšia.*) Začnime najjednoduchším prípadom:
Keď homebrew nainštaluje nový vzorec, umiestni ho do adresára s verziou, napríklad /usr/local/Cellar/postgresql/9.3.1
. Globálne sa potom nainštalujú iba symbolické odkazy na tento adresár. V zásade to umožňuje celkom jednoduché prepínanie medzi dvoma nainštalovanými verziami. (*)
Ak používate homebrew už dlhšie a nikdy ste neodstránili staršie verzie (napríklad pomocou brew cleanup
), je pravdepodobné, že niektorá staršia verzia programu môže byť stále k dispozícii. Ak chcete jednoducho aktivovať túto predchádzajúcu verziu, najjednoduchším spôsobom je brew switch
.
Pomocou príkazu brew info postgresql
(alebo brew switch postgresql <TAB>
) skontrolujte, či je nainštalovaná staršia verzia:
$ 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
Vidíme, že niektorá staršia verzia je už nainštalovaná. Môžeme ju aktivovať pomocou 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
Dvakrát skontrolujme, čo je aktivované:
$ 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
*
sa presunula na novo aktivovanú verziu
() Upozorňujeme, že brew switch
funguje len dovtedy, kým sú ešte k dispozícii všetky závislosti staršej verzie. V niektorých prípadoch môže byť potrebné obnovenie staršej verzie. Preto je použitie brew switch
užitočné hlavne vtedy, keď chceme prepínať medzi dvoma verziami, ktoré od seba nie sú príliš vzdialené.*
2) Skontrolujte, či je daná verzia k dispozícii ako tapNajmä pri väčších softvérových projektoch je veľmi pravdepodobné, že existuje dostatočne vysoký dopyt po niekoľkých (potenciálne API nekompatibilných) hlavných verziách určitého softvéru. Od marca 2012 poskytuje Homebrew 0.9 mechanizmus na tento účel: brew tap
& repozitár homebrew versions.
Tento repozitár verzií môže obsahovať backporty starších verzií pre niekoľko vzorcov. (Väčšinou len tie veľké a známe, ale samozrejme budú mať aj niekoľko formulárov pre postgresql).
brew search postgresql
vám ukáže, kde hľadať:
$ brew search postgresql
postgresql
homebrew/versions/postgresql8 homebrew/versions/postgresql91
homebrew/versions/postgresql9 homebrew/versions/postgresql92
Môžeme ho jednoducho nainštalovať zadaním príkazu
$ 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
# …
Všimnite si, že sa tým automaticky prepojil kohútik homebrew/versions
. (Skontrolujte pomocou brew tap
, odstráňte pomocou brew untap homebrew/versions
.) Nasledujúci postup by bol ekvivalentný:
$ brew tap homebrew/versions
$ brew install postgresql8
Nasledujúce prístupy sú uvedené najmä pre úplnosť. Oba sa pokúšajú vzkriesiť nejaký nemŕtvy vzorec z úložiska zaváranín. Kvôli zmeneným závislostiam, zmenám API v špecifikácii vzorca alebo jednoducho zmene adresy URL na stiahnutie veci môžu, ale nemusia fungovať.
Keďže celý adresár formula je repozitár git, je možné nainštalovať konkrétne verzie pomocou obyčajných príkazov git. Musíme však nájsť spôsob, ako sa dostať k revízii, v ktorej bola k dispozícii stará verzia.
a) historické časy
Medzi augustom 2011 a októbrom 2014 mal homebrew príkaz brew versions
, ktorý vypľul všetky dostupné verzie s ich príslušnými hashmi SHA. Od októbra 2014 musíte pred jeho použitím vykonať príkaz brew tap homebrew/boneyard
. Ako naznačuje názov príkazu tap, mali by ste to pravdepodobne robiť len v krajnom prípade.
Napr.
$ 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
Ako vidíte, neodporúča sa ho používať. Homebrew vypľuje všetky verzie, ktoré dokáže nájsť pomocou svojej internej heuristiky, a ukáže vám spôsob, ako získať staré vzorce. Vyskúšajme si to.
# 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
Teraz, keď je nainštalovaná staršia verzia postgresql, môžeme znovu nainštalovať najnovší vzorec, aby sme udržali naše úložisko čisté:
$ git checkout -- Library/Formula/postgresql.rb
Na zmenu medzi starou a novou verziou je vaším priateľom brew switch
.
b) predhistorické časy
V prípade špeciálnych potrieb sa môžeme pokúsiť aj o vlastné prekopanie repozitára homebrew.
$ cd Library/Taps/homebrew/homebrew-core && git log -S'8.4.4' -- Formula/postgresql.rb
git log -S
vyhľadá všetky revízie, v ktorých bol v súbore Library/Taps/homebrew/homebrew-core/Formula/postgresql.rb
pridaný alebo odstránený reťazec '8.4.4'
. Výsledkom sú dve revízie.
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
Je zrejmé, že fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
je revízia, ktorá nás zaujíma. Keďže táto revízia je dosť stará, pokúsime sa downgradovať kompletnú inštaláciu Homebrew (tak je viac-menej zaručené, že API vzorca bude platné):
$ git checkout -b postgresql-8.4.4 fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
$ brew install postgresql
$ git checkout master
$ git branch -d postgresql-8.4.4
Ak si chcete ponechať určitú verziu, povedzme postgresql, a zabrániť jej aktualizácii pri prirodzenom postupe brew update; brew upgrade
, môžete pripnúť vzorec:
$ brew pin postgresql
Pripnuté vzorce sú uvedené v zozname /usr/local/Library/PinnedKegs/
a akonáhle chcete priniesť najnovšie zmeny a aktualizácie, môžete ich opäť odpnúť:
$ brew unpin postgresql
Objavil som lepšie alternatívne riešenie ako ostatné komplexné riešenia.
brew install https://raw.github.com/Homebrew/homebrew-versions/master/postgresql8.rb
Toto stiahne a nainštaluje PostgreSQL 8.4.8
Toto riešenie som našiel tak, že som začal postupovať podľa krokov vyhľadávania v repozitári a komentár v repozitári .
Po malom prieskume zistil, že niekto má zbierku vzácnych formulárov na varenie.
Ak hľadáte MySQL 5.1.x, skúste toto.
brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb
Aktualizácia na riadku 8 Library/Formula/postgresql.rb na
http://ftp2.uk.postgresql.org/sites/ftp.postgresql.org/source/v8.4.6/postgresql-8.4.6.tar.bz2
A MD5 na riadku 9 na
fcc3daaf2292fa6bf1185ec45e512db6
Uložte a ukončite.
brew install postgres
initdb /usr/local/var/postgres
V tejto fáze sa môžete stretnúť s chybou postgresql nemohol vytvoriť segment zdieľanej pamäte
, ktorú môžete obísť tak, že aktualizujete súbor /etc/sysctl.conf
takto:
kern.sysv.shmall=65536
kern.sysv.shmmax=16777216
Skúste znova initdb /usr/local/var/postgres
a malo by to bežať bez problémov.
Spustenie postgresql pri štarte
launchctl load -w /usr/local/Cellar/postgresql/8.4.6/org.postgresql.postgres.plist
Dúfam, že to pomôže :)