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.4znajdziesz 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 switchjest 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 switchdział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 switchjest 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 tapi 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/versionskranu. (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 versionspolecenie, 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/boneyardzanim 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 -Sszuka 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 fa992c6a82eebdc4cc36a0c0d2837f4c02f3f422jest 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 upgradeprocedury, 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 updateustanowienie repozytorium Git.
cd $(brew --repository)/Library/Taps/homebrew/homebrew-core, wtedy możesz użyć git checkout 4cce79d -- Formula/go.rbi 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 cddo katalogu zamiast (bez FORMULANAME.rb), a następnie zrobićgit checkout 120938
cd /usr/localNajpierw 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 switchpo prostu zmienia dowiązania symboliczne, jest bardzo szybki. Zobacz dalszą dokumentację na Wiki Homebrew pod Poleceniami zewnętrznymi .
brew switchpolega 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 unlinknajpierw trzeba np. brew unlink docker)brew switch docker 1.3.3brew switch docker 1.4.1Z 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.
Rawprzycisk 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.rbpackage@version
git log master -- Formula/PACKAGENAME.rbaby uzyskać historię zatwierdzeń, sprawdź poprawne zatwierdzenie, a następnie uruchom, brew install Formula/PACKAGENAME.rbaby je zainstalować.
brew unlinkwcześniej brew installinnej wersji.
mxcljest
brew install https://github.com/Homebrew/homebrew-core/raw/afc10f17af8023906b87363a8340aeb62284329f/Formula/postgresql%409.6.rbale 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.rbwydawało się , że zawiodło z błędami składniowymi.
rawadresie URL
homebrew-versionsnie ma, a wszystko to na coreteraz, więc ogólny przypadek jest: brew install https://raw.github.com/Homebrew/homebrew-core/<COMMIT>/Formula/<FORMULA>.rb. COMMITmoż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 tna klawiaturze, aby aktywować wyszukiwarkę plików.
Zidentyfikuj formułę, która wygląda najtrafniej, na przykład: Formula/mysql.rbprowadząca do lokalizacji pliku forumla: https://github.com/Homebrew/homebrew-core/blob/master/Formula/mysql.rb .
Przejrzyj historię zmian, klikając Historyprzycisk 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.rbnazwą 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.comzraw.githubusercontent.comblob/masterskrótem zatwierdzenia, który znaleźliśmy w pierwszym kroku.Zainstaluj żądaną wersję, zastępując masterwcześ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 bashskró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 upgradepóź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 bashnastępnie zainstalować starszą wersję, którą chcesz, zgodnie ze skryptem powyżej, a następnie użyć brew switch bash 4.4.23do skonfigurowania dowiązań symbolicznych do starszej wersji. Teraz a brew upgradenie powinno wpływać na twoją wersję Bash. Możesz brew switch bashuzyskać 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@versionniestandardowego kranu, który można zainstalować zgodnie z powyższym przykładem. Minusem jest to, że prawdopodobnie nadal musisz, brew unlink basha następnie brew link bash@4.4.23, aby użyć określonej wersji Bash lub jakiejkolwiek innej formuły.
brew logwięc wszelkie dodatkowe -Flub --grepopcje 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 logbezpoś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, brewaby odzyskać tego rodzaju git logfiltrowanie. docs.brew.sh/External-Commands
brew extractużycie, dzięki!
Właśnie użyłem Homebrew, aby wrócić do Maven 2.2.1 od czasu prostej brew install maveninstalacji 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.1przełą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.rbjeśli lokalnie sklonowałeś repo.brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rbNiestety 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 bashna 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@versionniestandardowego kranu, który można zainstalować zgodnie z powyższym przykładem. Ważną uwagą jest to, że prawdopodobnie potrzebujesz, brew unlink bashjeś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 brewnią 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ż bashformuła obecnie instaluje wersję bash 5.
brew install bashbrew unlink bashbrew switch bash 4.4.23aby skonfigurować dowiązania symboliczne do swojej wersjiJeśli brew upgradewykonał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 upgradenie powinno to wpływać na twoją wersję Bash i zawsze możesz uruchomić, brew switch bashaby uzyskać listę wersji dostępnych do przełączenia.
Skopiuj i wklej i edytuj exportwiersze 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 mongodb26jak 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: postgresqlzostała przypadkowo zaktualizowana z 11 do 12. Chcę zachować 11.
brew services stop postgresql
brew install postgresql@11
brew link postgresql@11 --force
postgresna 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-databasejest, cóż, do aktualizacji . Moja odpowiedź dotyczy używania starszej wersji Postgres. Po prostu zmiana plików binarnych nie będzie działać.
nvmFYI 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/versionspolega na tym, że ktoś musi mieć tę konkretną wersję oprogramowania wymienioną w repozytorium, abyś mógł z niej korzystać. Ponadto, ponieważ brew versionsnie jest już obsługiwany, wymagane jest inne rozwiązanie. W przypadku rozwiązań wskazujących użycie brew switchbędzie to działać tylko wtedy, gdy nie zostało to zrobione, brew cleanupponieważ wersja musi istnieć na komputerze.
Miałem problem z instalacją konkretnej starszej wersji, docker-machinektó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-machinejako 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-machinedaje 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/locala 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.rbplik.
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-machinei brew install docker-machineuzyskać najnowszą wersję i iść do przodu.
git log --grep 0.4.1 docker-machine.rb.
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
caironaparu. 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.rbz homebrew-corekatalogu? 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.11więc mój skrót jest cf5da0547cd261f79d69e7ff62fdfbd2c2d646e9(lub cf5da05w 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_UPDATEi przeczytaj github.com/Homebrew/brew/issues/1188
cd brew/Homebrewgit log Library/Taps/homebrew/homebrew-core/Formula/python.rb
/Library/Tapsjest ignorowane.
HOMEBREW_NO_AUTO_UPDATE. Tak, nie zapomnij o rzeczy trzeba aż po odkryć jest to potrzebne. xD
HOMEBREW_NO_INSTALL_CLEANUPczy 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.3z 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.1wersję icu4c(potrzebną np. Do postgresql 10.5). Wtedy będziesz musiał
> brew edit icu4c
# drops you to editor
Że tu trzeba zmienić url, versioni sha256(być może mirror) do odpowiednich 62.1cią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 icu4caby w końcu pobrać 62.1wersję.
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 segmentbłąd, aby obejść tę aktualizację w /etc/sysctl.confnastępujący sposób:
kern.sysv.shmall=65536
kern.sysv.shmmax=16777216
Spróbuj initdb /usr/local/var/postgresponownie, 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/elasticsearchkatalogu.
$ 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/versionsnie ma. Aby to zrobić:
homebrew/versionsna github.$(brew --prefix)/Library/Tapsdo lokalnej kopii roboczej mojego widelca. Zadzwonię do tego my-homebrew/versions.my-homebrew/versions/<formula>.homebrew/versionsmojej 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/repoa potem brew extract --version='Major.minor' FORMULA user/repoi wtedy brew install FORMULA@Major.minor.
Stworzyłem narzędzie ułatwiające proces opisany w tej odpowiedzi .
Aby znaleźć pakiet pkgz wersją a.b.c, uruchom:
$ brew-install-specific pkg@a.b.c
Spowoduje to wyświetlenie zatwierdzeń w pkgformule 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ć.
postgresqljest dziwny, ponieważ w pewnym momencie miał osobne wersje w Homebrew, coś takiegobashmoż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