Jak zainstalować określoną wersję formuły w Homebrew? Na przykład postgresql-8.4.4 zamiast najnowszej wersji 9.0.
Jak zainstalować określoną wersję formuły w Homebrew? Na przykład postgresql-8.4.4 zamiast najnowszej wersji 9.0.
Odpowiedzi:
TLDR: więcej szczegółów brew install postgresql@8.4.4
znajdziesz w odpowiedzi poniżej .
* ( Ponownie zredagowałem moją odpowiedź, aby zapewnić dokładniejszy obieg pracy podczas instalowania / używania starszych wersji oprogramowania z Homebrew. Możesz dodać notatkę, jeśli starsza wersja była lepsza. )
Zacznijmy od najprostszego przypadku:
Kiedy homebrew instaluje nową formułę, umieszcza ją w wersjonowanym katalogu, takim jak /usr/local/Cellar/postgresql/9.3.1
. Tylko dowiązania symboliczne do tego folderu są następnie instalowane globalnie. Zasadniczo czyni to dość łatwym przełączanie między dwiema zainstalowanymi wersjami. (*)
Jeśli używasz homebrew przez dłuższy czas i nigdy nie usunąłeś starszych wersji (używając na przykład brew cleanup
), istnieje szansa, że niektóre starsze wersje twojego programu mogą być nadal dostępne. Jeśli chcesz po prostu aktywować poprzednią wersję, brew switch
jest to najłatwiejszy sposób.
Sprawdź za pomocą brew info postgresql
(lub brew switch postgresql <TAB>
), czy starsza wersja jest zainstalowana:
$ 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
Widzimy, że niektóre starsze wersje są już zainstalowane. Możemy go aktywować za pomocą 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
Sprawdźmy dokładnie, co jest aktywowane:
$ 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
Pamiętaj, że gwiazda *
została przeniesiona do nowo aktywowanej wersji
(*) Należy pamiętać, że brew switch
działa tylko tak długo, jak długo istnieją wszystkie zależności starszej wersji. W niektórych przypadkach może być konieczna przebudowa starszej wersji. Dlatego używanie brew switch
jest szczególnie przydatne, gdy chce się przełączać między dwiema wersjami niezbyt daleko od siebie.
Zwłaszcza w przypadku większych projektów oprogramowania jest bardzo prawdopodobne, że istnieje wystarczająco duże zapotrzebowanie na kilka (potencjalnie niekompatybilnych z API) głównych wersji określonego oprogramowania. Od marca 2012 r. Homebrew 0.9 zapewnia taki mechanizm: brew tap
i repozytorium wersji Homebrew .
To repozytorium wersji może zawierać backporty starszych wersji dla kilku formuł. (Przeważnie tylko duże i znane, ale oczywiście będą miały również kilka formuł dla postgresql.)
brew search postgresql
pokaże Ci, gdzie szukać:
$ brew search postgresql
postgresql
homebrew/versions/postgresql8 homebrew/versions/postgresql91
homebrew/versions/postgresql9 homebrew/versions/postgresql92
Możemy po prostu zainstalować, pisząc
$ 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
# …
Pamiętaj, że automatycznie dotknęło to homebrew/versions
kranu. (Sprawdź za pomocą brew tap
, usuń za pomocą brew untap homebrew/versions
.) Poniższe byłoby równoważne:
$ brew tap homebrew/versions
$ brew install postgresql8
Tak długo, jak formułowane wersje są aktualne, podejście to jest prawdopodobnie najlepszym sposobem radzenia sobie ze starszym oprogramowaniem.
Następujące podejścia są wymienione głównie dla kompletności. Obaj próbują wskrzesić jakąś nieumarłą formułę z repozytorium naparu. Ze względu na zmienione zależności, zmiany interfejsu API w specyfikacji formuły lub po prostu zmianę adresu URL pobierania rzeczy mogą, ale nie muszą działać.
Ponieważ cały katalog formuł jest repozytorium git, można instalować określone wersje za pomocą zwykłych poleceń git. Musimy jednak znaleźć sposób na uzyskanie zatwierdzenia, w którym dostępna była stara wersja.
a) czasy historyczne
Pomiędzy sierpniem 2011 r. A październikiem 2014 r. Homebrew wydało brew versions
polecenie, które wypluwało wszystkie dostępne wersje za pomocą odpowiednich skrótów SHA. Od października 2014 r. Musisz to zrobić, brew tap homebrew/boneyard
zanim będziesz mógł z niego korzystać. Jak sugeruje nazwa kranu, prawdopodobnie powinieneś to zrobić tylko w ostateczności.
Na przykład
$ 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
Jak widać, odradza się go używać. Homebrew wyrzuca wszystkie wersje, które może znaleźć dzięki swojej wewnętrznej heurystyce i pokazuje sposób na odzyskanie starych formuł. Spróbujmy.
# 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
Po zainstalowaniu starszej wersji postgresql możemy ponownie zainstalować najnowszą formułę, aby utrzymać nasze repozytorium w czystości:
$ git checkout -- Library/Formula/postgresql.rb
brew switch
jest twoim przyjacielem do zmiany między starym a nowym.
b) czasy prehistoryczne
Na specjalne potrzeby możemy również spróbować samodzielnie sięgnąć po repozytorium homebrew.
$ cd Library/Taps/homebrew/homebrew-core && git log -S'8.4.4' -- Formula/postgresql.rb
git log -S
szuka wszystkich zatwierdzeń, w których ciąg '8.4.4'
został dodany lub usunięty w pliku Library/Taps/homebrew/homebrew-core/Formula/postgresql.rb
. W rezultacie otrzymujemy dwa commity.
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
Oczywiście fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
jest to zatwierdzenie, którym jesteśmy zainteresowani. Ponieważ to zatwierdzenie jest dość stare, spróbujemy obniżyć wersję pełnej instalacji homebrew (w ten sposób API formuły jest mniej więcej gwarantowane):
$ git checkout -b postgresql-8.4.4 fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422
$ brew install postgresql
$ git checkout master
$ git branch -d postgresql-8.4.4
Możesz pominąć ostatnie polecenie, aby zachować odwołanie w repozytorium git.
Jedna uwaga: Podczas sprawdzania starszego zatwierdzenia tymczasowo obniżasz instalację Homebrew. Dlatego należy zachować ostrożność, ponieważ niektóre polecenia w homebrew mogą różnić się od najnowszej wersji.
Nie jest to zbyt trudne i możesz następnie przesłać je do własnego repozytorium. Kiedyś były to wersje Homebrew , ale teraz jest to wycofane.
Jeśli chcesz zachować pewną wersję, powiedzmy postgresql, i zatrzymać aktualizację podczas wykonywania naturalnej brew update; brew upgrade
procedury, możesz przypiąć formułę:
$ brew pin postgresql
Przypięte formuły są wymienione na liście, /usr/local/Library/PinnedKegs/
a gdy chcesz wprowadzić najnowsze zmiany i aktualizacje, możesz je ponownie odpiąć :
$ brew unpin postgresql
git checkout fa992 -- Library/Formula/postgresql.rb
. Po zakończeniu możesz cofnąć zmiany w formule za pomocą git revert HEAD Library/Formula/postgresql.rb && git checkout -- Library/Formula/postgresql.rb
.
brew update
ustanowienie repozytorium Git.
cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
, wtedy możesz użyć git checkout 4cce79d -- Formula/go.rb
i HOMEBREW_NO_AUTO_UPDATE=1 brew install go
.
Teraz, gdy Homebrew / wersje jest przestarzałe, Homebrew / core obsługuje wiele wersji formuł z nowym formatem nazewnictwa.
Aby zainstalować określoną wersję, np. Postgresql 9.5, wystarczy uruchomić:
$ brew install postgresql@9.5
Aby wyświetlić listę dostępnych wersji, uruchom wyszukiwanie za pomocą @:
$ brew search postgresql@
==> Searching local taps...
postgresql@10.1 ✔ postgresql@9.4 postgresql@9.5 postgresql@9.6
fatal: Not a git repository (or any of the parent directories): .git
. Właśnie cd
do katalogu zamiast (bez FORMULANAME.rb), a następnie zrobićgit checkout 120938
cd /usr/local
Najpierw pamiętaj .
brew unlink FORMULANAME
brew versions <formula>
nie jest już obsługiwany.
brew link --force postgresql@9.5
. Jeśli masz już zainstalowaną nowszą wersję i chcesz, aby starsza wersja była domyślna, również tam będziesz potrzebować --overwrite
.
Jest teraz o wiele łatwiejszy sposób na zainstalowanie starszej wersji formuły, którą wcześniej zainstalowałeś. Po prostu użyj
brew switch [formula] [version]
Na przykład regularnie zmieniam między Node.js 0.4.12 i 0.6.5:
brew switch node 0.4.12
brew switch node 0.6.5
Ponieważ brew switch
po prostu zmienia dowiązania symboliczne, jest bardzo szybki. Zobacz dalszą dokumentację na Wiki Homebrew pod Poleceniami zewnętrznymi .
brew switch
polega na tym, że poszukiwana wersja jest już zainstalowana. Niestety, obecnie przyjęta odpowiedź jest niesamowicie nieprzydatna, skomplikowana i nieaktualna. Poniżej znajdują się lepsze odpowiedzi, które są znacznie bardziej pomocne.
Aktualizacja: 15.01.2015
brew install <url>
(może brew unlink
najpierw trzeba np. brew unlink docker
)brew switch docker 1.3.3
brew switch docker 1.4.1
Z tego sedna
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
brew install <url>
, brew unlink <formulaname>
. W przeciwnym razie jest to najprostszy i najbardziej zwięzły (jak dotąd) sposób przełączenia się na określoną wersję formuły.
Raw
przycisk na jakim pliku ?!
brew log <formula>
Zgodnie z sugestią @ halfcube działa to naprawdę dobrze:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
package@version
git log master -- Formula/PACKAGENAME.rb
aby uzyskać historię zatwierdzeń, sprawdź poprawne zatwierdzenie, a następnie uruchom, brew install Formula/PACKAGENAME.rb
aby je zainstalować.
brew unlink
wcześniej brew install
innej wersji.
mxcl
jest
brew install https://github.com/Homebrew/homebrew-core/raw/afc10f17af8023906b87363a8340aeb62284329f/Formula/postgresql%409.6.rb
ale dostaję błąd, prawdopodobnie ze względu na @
znak: 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.
jakieś pomysły?
Odkryłem lepsze rozwiązanie alternatywne niż inne złożone rozwiązania.
brew install https://raw.github.com/Homebrew/homebrew-versions/master/postgresql8.rb
Spowoduje to pobranie i zainstalowanie PostgreSQL 8.4.8
Znalazłem to rozwiązanie, rozpoczynając od przeszukiwania repozytorium i komentarza w repozytorium.
Po drobnych badaniach odkryto, że ktoś ma kolekcję rzadkich formułek do zaparzenia.
Jeśli szukasz MySQL 5.1.x, spróbuj.
brew install https://raw.github.com/Homebrew/homebrew-versions/master/mysql51.rb
brew install https://github.com/Homebrew/homebrew-versions/blob/master/node06.rb
wydawało się , że zawiodło z błędami składniowymi.
raw
adresie URL
homebrew-versions
nie ma, a wszystko to na core
teraz, więc ogólny przypadek jest: brew install https://raw.github.com/Homebrew/homebrew-core/<COMMIT>/Formula/<FORMULA>.rb
. COMMIT
można je znaleźć na stronie github.com/Homebrew/homebrew-core/commits/master/Formula/… .
Możesz użyć strategii identyfikacji formuły i konkretnego zatwierdzenia w historii formuły, która pasuje do wersji pakietu, który chcesz zainstalować.
Naciśnij t
na klawiaturze, aby aktywować wyszukiwarkę plików.
Zidentyfikuj formułę, która wygląda najtrafniej, na przykład: Formula/mysql.rb
prowadząca do lokalizacji pliku forumla: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb .
Przejrzyj historię zmian, klikając History
przycisk znajdujący się na stronie https://github.com/Homebrew/homebrew-core/commits/master/Formula/mysql.rb . Jeśli interesuje Cię MySQL 5.7.10, możesz chcieć kliknąć najnowszą wersję przed 5.7.11, która prowadzi do zatwierdzenia GitHub:
UWAGA: Konieczne może być przejrzenie historii zatwierdzeń w konsoli zgodnie z sugestią GitHub, jeśli historia zatwierdzeń nie ładuje się w przeglądarce. Zamień powyżej zatwierdzenie SHA w adresie URL, jeśli chcesz zobaczyć to zatwierdzenie na GitHub. Alternatywnie przejdź do kroku 7 poniżej.
Kliknij przycisk „Widok”, aby wyświetlić źródło pliku mysql.rb po zastosowaniu zatwierdzenia.
Następnie kliknij przycisk „Raw”, aby wyświetlić surowe źródło.
Skopiuj adres URL. Alternatywnie, sam zbuduj adres URL z mysql.rb
nazwą pliku, aby zidentyfikować formułę i konkretną wersję tej formuły (zidentyfikowaną przez comma SHA w poniższym adresie URL).
Zainstaluj za pomocą $ brew install [URL from step 7]
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/c77882756a832ac1d87e7396c114158e5619016c/Formula/mysql.rb
UWAGA: Ta odpowiedź została zaktualizowana w celu uwzględnienia usunięcia witryny braumeister.org. Obowiązuje ta sama zasada, Braumeister po prostu zapewnił przyjazny dla początkujących sposób poruszania się po wersjach formuł.
Większość innych odpowiedzi jest już nieaktualna. Niestety Homebrew nadal nie posiada wbudowanego sposób instalowania przestarzałej wersji, chyba że wersja istnieje jako odrębny wzoru (np python@2
, postgresql@9.4
...).
Na szczęście w przypadku innych formuł istnieje znacznie łatwiejszy sposób niż zawiły bałagan, który kiedyś był konieczny. Oto pełne instrukcje:
Wyszukaj poprawną wersję w dziennikach:
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›
Spowoduje to wyświetlenie listy skrótów zatwierdzeń. Wybierz taki, który jest odpowiedni (przeważnie powinien być dość oczywisty i zwykle jest najnowszy (tj. Najwyższy).
Znajdź adres URL, pod którym formuła znajduje się w repozytorium nadrzędnym:
brew info ‹formula› | grep ^From:
Napraw adres URL:
github.com
zraw.githubusercontent.com
blob/master
skrótem zatwierdzenia, który znaleźliśmy w pierwszym kroku.Zainstaluj żądaną wersję, zastępując master
wcześniej znaleziony adres URL hashem zatwierdzenia, np .:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/‹hash›/Formula/‹formula›.rb
(Ostatni krok może wymagać uruchomienia brew unlink ‹formula›
wcześniej.)
Jeśli skopiowałeś skrót zatwierdzenia, którego chcesz użyć, możesz użyć czegoś takiego jak ten przykład, aby zainstalować tę wersję, zastępując wartość oraz bash
skrótem zatwierdzenia i żądaną formułą.
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
W tym przykładzie zainstalowano wersję bash 4.4.23 zamiast bash 5, ale jeśli wykonałeś brew upgrade
później, bash 5 zostałby zainstalowany ponad, chyba że najpierw wykonałeś brew pin bash
. Zamiast tego, aby uczynić to płynniejszym BEZ przypinania, należy najpierw zainstalować najnowszą wersję brew install bash
, a brew unlink bash
następnie zainstalować starszą wersję, którą chcesz, zgodnie ze skryptem powyżej, a następnie użyć brew switch bash 4.4.23
do skonfigurowania dowiązań symbolicznych do starszej wersji. Teraz a brew upgrade
nie powinno wpływać na twoją wersję Bash. Możesz brew switch bash
uzyskać listę dostępnych wersji, na które możesz się przełączyć.
Innym sposobem osiągnięcia tego samego celu wydaje się:
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.
Spowoduje to utworzenie formula@version
niestandardowego kranu, który można zainstalować zgodnie z powyższym przykładem. Minusem jest to, że prawdopodobnie nadal musisz, brew unlink bash
a następnie brew link bash@4.4.23
, aby użyć określonej wersji Bash lub jakiejkolwiek innej formuły.
brew log
więc wszelkie dodatkowe -F
lub --grep
opcje zawiodły dla mnie.
brew log
. Nie mogę sobie teraz pozwolić na napisanie nowej wersji, ponieważ wymaga to prawidłowego parsowania komunikatu dziennika git lub alternatywnego uruchomienia git log
bezpośrednio w odpowiednim repozytorium. Dziennik zmian nawet nie wspomina o tej przełomowej zmianie. Bardziej irytujące.
External Command
że konieczne może być działanie w ramach struktury, brew
aby odzyskać tego rodzaju git log
filtrowanie. docs.brew.sh/External-Commands
brew extract
użycie, dzięki!
Właśnie użyłem Homebrew, aby wrócić do Maven 2.2.1 od czasu prostej brew install maven
instalacji Maven 3.0.3.
Najpierw musisz opuścić tam maven reż
$ brew unlink maven
Użyj polecenia zaparzania
$ brew tap homebrew / wersje Klonowanie do „/ usr / local / Library / Taps / homebrew-wersje” ... pilot: Zliczanie obiektów: 590, gotowe. zdalne: Kompresowanie obiektów: 100% (265/265), gotowe. zdalne: łącznie 590 (delta 362), ponownie wykorzystane 549 (delta 325) Otrzymywanie przedmiotów: 100% (590/590), 117,49 KiB | 79 KiB / s, gotowe. Rozwiązywanie delt: 100% (362/362), gotowe. Formuła Tapped 50
Teraz możesz zainstalować formułę maven2:
$ brew install maven2 ==> Pobieranie 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 plików, 3,1M, zbudowany w 6 sekund
$ mvn --version Apache Maven 2.2.1 (r801777; 2009-08-06 12: 16: 01-0700) Wersja Java: 1.6.0_37 Strona główna Java: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home Domyślne ustawienia regionalne: en_US, kodowanie platformy: MacRoman Nazwa systemu operacyjnego: „mac os x” wersja: „10.7.4” arch: „x86_64” Rodzina: „mac”
Edycja:
Możesz także brew switch maven 2.2.1
przełączyć się na inną wersję.
Edycja: Projekt Apache Maven zreorganizował swoje repozytorium. Zaktualizowałem tę odpowiedź, aby uwzględnić tę zmianę.
W oparciu o przepływ pracy opisany przez @tschundeee i aktualizację 1 Debilskiego 1 zautomatyzowałem procedurę i dodałem czyszczenie w tym skrypcie .
Pobierz , umieść na swojej ścieżce i brewv <formula_name> <wanted_version>
. W przypadku konkretnego PO byłoby to:
cd path/to/downloaded/script/
./brewv postgresql 8.4.4
:)
Zaktualizowana odpowiedź, ponieważ dodaje do tego, co @ lance-pollard już opublikował jako odpowiedź roboczą.
Jak zainstalować określoną wersję formuły (w tym przykładzie użyto wzoru terraform
):
git log master -- Formula/terraform.rb
jeśli lokalnie sklonowałeś repo.brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
Niestety Homebrew wciąż nie ma oczywistego wbudowanego sposobu instalowania starszej wersji.
Na szczęście dla większości formuł istnieje o wiele łatwiejszy sposób niż zawiły bałagan, który kiedyś był potrzebny. Oto pełne instrukcje bash
na przykładzie:
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.
Spowoduje to utworzenie formula@version
niestandardowego kranu, który można zainstalować zgodnie z powyższym przykładem. Ważną uwagą jest to, że prawdopodobnie potrzebujesz, brew unlink bash
jeśli wcześniej zainstalowałeś domyślną / najnowszą wersję formuły, a następnie brew link bash@4.4.23
, aby użyć konkretnej wersji Bash (lub innej formuły, w której masz zainstalowaną najnowszą i starszą wersję).
Potencjalnym minusem tej metody jest to, że nie można łatwo przełączać się między wersjami, ponieważ zgodnie z brew
nią jest to „inna formuła”.
Jeśli chcesz mieć możliwość korzystania brew switch $FORMULA $VERSION
, powinieneś użyć następnej metody.
Ten przykład pokazuje instalację starszej wersji bash 4.4.23, przydatny przykład, ponieważ bash
formuła obecnie instaluje wersję bash 5.
brew install bash
brew unlink bash
brew switch bash 4.4.23
aby skonfigurować dowiązania symboliczne do swojej wersjiJeśli brew upgrade
wykonałeś po zainstalowaniu starszej wersji bez instalowania najnowszej wersji, najnowsza wersja zostanie zainstalowana, zamykając starszą wersję, chyba że najpierw ją wykonałeś brew pin bash
.
Kroki tutaj UNIKAJ przypinania, ponieważ łatwo jest o nim zapomnieć i możesz przypiąć do wersji, która stanie się niepewna w przyszłości (patrz Shellshock / etc). Dzięki tej konfiguracji brew upgrade
nie powinno to wpływać na twoją wersję Bash i zawsze możesz uruchomić, brew switch bash
aby uzyskać listę wersji dostępnych do przełączenia.
Skopiuj i wklej i edytuj export
wiersze z fragmentu kodu poniżej, aby zaktualizować żądaną wersję i nazwę formuły, a następnie skopiuj i wklej resztę w niezmienionej postaci, a ona wykorzysta te zmienne do wykonania magii.
# 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
Jeśli masz pewność, że wersja istnieje w formule, możesz użyć poniższego:
# 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}')
Po wyeksportowaniu skrótu zatwierdzenia, którego chcesz użyć, możesz go użyć do zainstalowania tej wersji pakietu.
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
Postępuj zgodnie ze wskazówkami w formule wyjściowej, aby umieścić ją w zmiennej PATH lub ustawić jako domyślną powłokę.
W najnowszej wersji homebrew (od wersji 0.9.5) będzie określony przepis na wersję beczki homebrew, którą chcesz zainstalować. Przykład:
$ brew search mongodb
mongodb mongodb24 mongodb26
Więc po prostu rób brew install mongodb26
jak normalnie.
W przypadku, gdy jesteś już zainstalowaną najnowszą wersję, należy odłączyć najnowszą wersję i połączyć żądaną wersję: brew unlink mongodb && brew link mongodb26
.
Moja sytuacja: postgresql
została przypadkowo zaktualizowana z 11 do 12. Chcę zachować 11.
brew services stop postgresql
brew install postgresql@11
brew link postgresql@11 --force
postgres
na postgres@11
:cd /usr/local/var
ls -lh
mv postgresql@11 postgresql@11-fresh-backup
mv postgres postgresql@11
brew services start postgresql@11
Jeśli masz jakieś błędy, sprawdź /usr/local/var/log/postgresql@11.log
(zauważ @ 11).
brew postgresql-upgrade-database
). Ta odpowiedź nie jest przydatna w prawie żadnej innej formule.
brew postgresql-upgrade-database
jest, cóż, do aktualizacji . Moja odpowiedź dotyczy używania starszej wersji Postgres. Po prostu zmiana plików binarnych nie będzie działać.
nvm
FYI Miałem szczęście, używając tej techniki do starszych wersji LTS. Przynajmniej w momencie pisania wersji 10 i 12 powinna być dostępna, np. brew install node@12
Formulae.brew.sh/formula/node
Problem homebrew/versions
polega na tym, że ktoś musi mieć tę konkretną wersję oprogramowania wymienioną w repozytorium, abyś mógł z niej korzystać. Ponadto, ponieważ brew versions
nie jest już obsługiwany, wymagane jest inne rozwiązanie. W przypadku rozwiązań wskazujących użycie brew switch
będzie to działać tylko wtedy, gdy nie zostało to zrobione, brew cleanup
ponieważ wersja musi istnieć na komputerze.
Miałem problem z instalacją konkretnej starszej wersji, docker-machine
której nie wymieniono w homebrew/versions
. Rozwiązałem to, korzystając z poniższej instrukcji, która powinna również działać w przypadku dowolnego oprogramowania zainstalowanego w napoju. Poniższy przykład posłuży docker-machine
jako pakiet, który chcę obniżyć z wersji 0.5.0 do 0.4.1.
Idź do swojego domu Formula
katalogu .
Możesz to ustalić, uruchamiając brew info [any package name]
. Na przykład, brew info docker-machine
daje mi linię, która pokazuje mi ścieżkę - /usr/local/Cellar/docker-machine/0.5.0
. To mówi mi, że na moim komputerze homebrew jest zainstalowany w, /usr/local
a mój Formula
katalog domyślnie znajduje się w/usr/local/Library/Formula
Znajdź konkretny plik formuły (.rb) dla swojego pakietu.
Ponieważ chcę obniżyć wersję docker-machine
, widzę docker-machine.rb
plik.
Pobierz historię wersji tego pliku formuły . Enter git log docker-machine.rb
. Spowoduje to wyświetlenie pełnej historii zatwierdzeń dla tego pliku. Zobaczysz takie dane wyjściowe:
...więcej zatwierdzić 20c7abc13d2edd67c8c1d30c407bd5e31229cacc Autor: BrewTestBot Data: czw. 5 listopada 16:14:18 2015 +0000 maszyna dokująca: zaktualizuj butelkę 0,5.0. zatwierdzić 8f615708184884e501bf5c16482c95eff6aea637 Autor: Vincent Lesierse Data: wt 27 października 22:25:30 2015 +0100 maszyna dokująca 0,5.0 Zaktualizowano maszynę dokującą do wersji 0.5.0 Zamyka # 45403. Podpisano: Dominyk Tiller commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423 Autor: BrewTestBot Data: pon 21 września 14:04:04 2015 +0100 maszyna dokująca: zaktualizuj butelkę 0.4.1. commit 18fcbd36d22fa0c19406d699308fafb44e4c8dcd Autor: BrewTestBot Data: nie 16 sierpnia 09:05:56 2015 +0100 maszyna dokująca: zaktualizuj butelkę 0.4.1. ...więcej
Trudność polega na znalezieniu najnowszego zatwierdzenia dla konkretnej wersji, którą chcesz. W powyższym przykładzie, mogę powiedzieć, najnowsza wersja 0.4.1 został popełniony przy tym popełnić tag: commit 5970e1af9b13dcbeffd281ae57c9ab90316ba423
. Zatwierdzenia powyżej tego punktu zaczynają korzystać z wersji 0.5.0 (wpisy dziennika git są wymienione od najnowszej do najwcześniejszej daty).
Pobierz poprzednią wersję pliku formuły. Korzystając ze znacznika zatwierdzenia z kroku 3 (możesz użyć pierwszych 6 znaków), możesz uzyskać starszą wersję pliku formuły, używając:
git checkout 5970e1 docker-machine.rb
Odinstaluj aktualną wersję pakietu.
Wystarczy uruchomić normalne polecenia parzenia, aby odinstalować bieżącą wersję pakietu.
Dawny.brew uninstall docker-machine
Zainstaluj starszą wersję pakietu
Teraz możesz po prostu uruchomić normalną komendę brew, aby zainstalować formułę, którą wypisałeś. Dawny.brew install docker-machine
W razie potrzeby konieczne może być ponowne połączenie brew link docker-machine
.
Jeśli w dowolnym momencie chcesz przywrócić najnowszą wersję określonego pakietu, przejdź do katalogu Formula i wydaj następujące polecenia w pliku formuły (.rb)
git reset HEAD docker-machine.rb
git checkout -- docker-machine.rb
Następnie możesz brew uninstall docker-machine
i brew install docker-machine
uzyskać najnowszą wersję i iść do przodu.
git log --grep 0.4.1 docker-machine.rb
.
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
cairo
naparu. Odpowiedź @ sealocal z jakiegoś powodu pokazała więcej.
cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/
LUB
git clone git@github.com:Homebrew/homebrew-core.git
git log master -- Formula/flyway.rb
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/793abfa325531415184e1549836c982b39e89299/Formula/flyway.rb
brew install Formula/flyway.rb
z homebrew-core
katalogu? zadziałało dla mnie bez raw.github..
adresu
można to zrobić bardzo łatwo dla ostatniej wersji naparu.
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)
Żaden z nich tak naprawdę nie działał w mojej sprawie (Python), więc dodam moje 2 centy:
cd `brew --prefix`
git log Library/Formula/python.rb
Dane wyjściowe wyglądają tak:
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. ...
Chcę wersję, 2.7.11
więc mój skrót jest cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9
(lub cf5da05
w skrócie). Następnie sprawdzam tę wersję i instaluję formułę python
:
git checkout cf5da05
brew install python
Wreszcie posprzątaj:
git checkout master
HOMEBREW_NO_AUTO_UPDATE
i przeczytaj github.com/Homebrew/brew/issues/1188
cd
brew/Homebrew
git log Library/Taps/homebrew/homebrew-core/Formula/python.rb
/Library/Taps
jest ignorowane.
HOMEBREW_NO_AUTO_UPDATE
. Tak, nie zapomnij o rzeczy trzeba aż po odkryć jest to potrzebne. xD
HOMEBREW_NO_INSTALL_CLEANUP
czy nie jest to coś, o czym musisz pamiętać?
Jeśli nie możesz znaleźć swojej wersji brew search <formula>
, możesz także przejrzeć dzienniki zatwierdzeń dla formuły, aby znaleźć żądaną wersję:
oto przykład instalacji starszej wersji nginx przez brew:
widzieć nginx: update 1.6.3 bottle eba75b9a1a474b9fc4df30bd0a32637fa31ec049
Stamtąd możemy zainstalować 1.6.3
z sha i raw git url:
brew install https://raw.githubusercontent.com/Homebrew/homebrew/eba75b9a1a474b9fc4df30bd0a32637fa31ec049/Library/Formula/nginx.rb
Obecnie stare sposoby instalowania określonych wersji formuł są przestarzałe. Wygląda na to, że musimy użyć brew edit [formula]
. Powiedzmy na przykład, że chcemy zainstalować 62.1
wersję icu4c
(potrzebną np. Do postgresql 10.5
). Wtedy będziesz musiał
> brew edit icu4c
# drops you to editor
Że tu trzeba zmienić url
, version
i sha256
(być może mirror
) do odpowiednich 62.1
ciągów.
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"
następnie uruchom, brew reinstall icu4c
aby w końcu pobrać 62.1
wersję.
sha256
? w moim przypadkuhttps://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-macos-x64-release.zip
Zaktualizuj w Bibliotece / Formule / postgresql.rb wiersz 8 do
http://ftp2.uk.postgresql.org/sites/ftp.postgresql.org/source/v8.4.6/postgresql-8.4.6.tar.bz2
I MD5 na linii 9 do
fcc3daaf2292fa6bf1185ec45e512db6
Zapisz i wyjdź.
brew install postgres
initdb /usr/local/var/postgres
Teraz na tym etapie możesz napotkać postgresql could not create shared memory segment
błąd, aby obejść tę aktualizację w /etc/sysctl.conf
następujący sposób:
kern.sysv.shmall=65536
kern.sysv.shmmax=16777216
Spróbuj initdb /usr/local/var/postgres
ponownie, a powinno działać płynnie.
Aby uruchomić postgresql przy starcie
launchctl load -w /usr/local/Cellar/postgresql/8.4.6/org.postgresql.postgres.plist
Mam nadzieję, że to pomoże :)
Właśnie skopiowałem starszą wersję elasticsearch do /usr/local/Cellar/elasticsearch
katalogu.
$ 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
Otóż to. Może jest to przydatne dla każdego.
Zdecydowałem, wbrew mojej lepszej ocenie, stworzyć formułę dla Maven 3.1.1, której homebrew/versions
nie ma. Aby to zrobić:
homebrew/versions
na github.$(brew --prefix)/Library/Taps
do lokalnej kopii roboczej mojego widelca. Zadzwonię do tego my-homebrew/versions
.my-homebrew/versions/<formula>
.homebrew/versions
mojej nowej formuły.Tak
W przypadku wersji, które nie są obecnie w domyślnych formułach zaparzania, możesz łatwo utworzyć własny kran za pomocą narzędzia z https://github.com/buildtools-version-taps/homebrew-versions-tap-tool
brew tap-new user/repo
a potem brew extract --version='Major.minor' FORMULA user/repo
i wtedy brew install FORMULA@Major.minor
.
Stworzyłem narzędzie ułatwiające proces opisany w tej odpowiedzi .
Aby znaleźć pakiet pkg
z wersją a.b.c
, uruchom:
$ brew-install-specific pkg@a.b.c
Spowoduje to wyświetlenie zatwierdzeń w pkg
formule homebrew, które wspominają daną wersję wraz z ich adresami 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:
Sprawdź zatwierdzenie z podanego adresu URL i wprowadź indeks wybranego zatwierdzenia.
Select index: 2
Run:
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/<COMMIT-SHA>/Formula/pkg.rb
Skopiuj i uruchom podane polecenie, aby zainstalować.
postgresql
jest dziwny, ponieważ w pewnym momencie miał osobne wersje w Homebrew, coś takiegobash
może być lepszym przykładem, ponieważ zmienił się z 4.x na 5.x w obrębie tej samej nazwy formuły. Zobacz stackoverflow.com/a/55764594/3794873