Homebrew zainstalować konkretną wersję formuły?


2195

Jak zainstalować określoną wersję formuły w Homebrew? Na przykład postgresql-8.4.4 zamiast najnowszej wersji 9.0.


2
postgresqljest dziwny, ponieważ w pewnym momencie miał osobne wersje w Homebrew, coś takiego bashmoż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
dragon788


2
Przeczytałem wszystkie odpowiedzi. Jest rok 2020 i nie ma na to łatwego sposobu ani oficjalnego polecenia
oluckyman

Odpowiedzi:


2556

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:

1) Sprawdź, czy wersja jest już zainstalowana (ale nie aktywowana)

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.

2) Sprawdź, czy wersja jest dostępna jako kran

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.

3) Wypróbuj jakąś formułę z przeszłości

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.

4) Ręcznie napisz wzór

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.

A.) Bonus: Przypinanie

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

18
Możesz także po prostu pobrać formułę za pomocą 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.
mipadi

18
Uwaga: w przypadku nowej instalacji Homebrew może być konieczne brew updateustanowienie repozytorium Git.
Bluu

555
To jest absurdalnie trudne.
Dogweather

29
Na dzień dzisiejszy właściwym katalogiem do wykonywania poleceń ręcznych dla repozytorium jest 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.
Calin

12
homebrew / wersje jest przestarzałe
Ezekiel Victor

775

Prosty przepływ pracy

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

8
Wydaje się to najprostsze, ale kiedy kopiuję i wklejam, rozumiem 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
Ramon Tayag

8
@RamonTayag, miałem ten sam problem. cd /usr/localNajpierw pamiętaj .
gjb,

13
Odkryłem, że potrzebujesz kroku 3.5:brew unlink FORMULANAME
Intentss

37
brew versions <formula>nie jest już obsługiwany.
ejoubaud

4
@ dem7w2, możesz tworzyć dowiązania symboliczne za pomocą 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.
Ryan

457

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 .


2
Próbowałem tego i powiodło się to z komunikatem „33 linki utworzone dla /usr/local/Cellar/node/0.4.7”, ale po uruchomieniu węzła komunikat kończy się niepowodzeniem z komunikatem „-bash: / usr / local / bin / node: brak takiego pliku lub katalogu ". Masz pojęcie, co mogło pójść nie tak? Uwaga: pobrałem ręcznie 0.4.7 i umieściłem w katalogu piwnicy, ponieważ nie wiem, jak pobrać cokolwiek poza najnowszą wersją węzła za pomocą brew.
Soroush Hakami,

6
Mam nadzieję, że wiesz, że istnieje coś takiego jak „nvm” [ github.com/creationix/nvm] !
Gaurav Agarwal

40
Opieram się na wersji pakietu już zainstalowanej. Jeśli brakuje Ci wersji, nadal będziesz musiał zastosować wybraną odpowiedź.
Nic Strong,

1
Zwłaszcza w przypadku wersji mgmt nvm jest lepszym rozwiązaniem, imho.
tydzień

5
@NicStrong Rzeczywiście, 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.
GDP2

250

Aktualizacja: 15.01.2015

  • Znajdź historię zatwierdzania żądanego oprogramowania i wersji. np. muszę przejść z wersji dokera 1.4.1 na 1.3.3: https://github.com/Homebrew/homebrew-core/commits/master/Formula/docker.rb
  • Wyświetl plik za pomocą tego przycisku: wprowadź opis zdjęcia tutaj
  • Kliknij przycisk Raw: Element listy
  • Skopiuj adres URL ( adres URL docker.rb w tym przykładzie) z paska adresu
  • brew install <url>(może brew unlinknajpierw trzeba np. brew unlink docker)
  • brew switch docker 1.3.3
  • Wróć do dokera 1.4.1 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

46
To jedyna rzecz, która działała dla mnie. Całkiem głupie jest to, że menedżer pakietów wymaga tak wielu niepotrzebnych działań, aby zainstalować wcześniejszą wersję. Być może rozpieszczają mnie ruby ​​RVM i bundler, ale ten proces naprawdę wymaga usprawnienia i abstrakcji.
poetmountain

3
Kiedy próbowałem przejść do poprzedniej wersji Ansible, musiałem rozłączyć formułę przed zainstalowaniem poprzedniej wersji, jak wskazano. Więc zanim robi 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.
bigsweater,

Nacisnąłeś Rawprzycisk na jakim pliku ?!
Iulian Onofrei

1
Działa, ale czasami musisz pobrać surowy plik .rb i zmienić sumę kontrolną, aby uniknąć narzekań Homebrew na niedopasowanie SHA. Wydaje się, że w GitHub duża część drzew repo została ponownie zarchiwizowana w 2017 roku, a ich sumy kontrolne uległy zmianie. (Właściwie spowodowało to duże zamieszanie w moim zespole, gdy Bazel zaczął ponieść porażkę w przypadku niedopasowania skrótu w lipcu ubiegłego roku)
Chang Qian

6
Adres łatwo brew log <formula>
znalazłem

128

Zgodnie z sugestią @ halfcube działa to naprawdę dobrze:

  1. Znajdź bibliotekę, której szukasz na https://github.com/Homebrew/homebrew-core/tree/master/Formula
  2. Kliknij: https://github.com/Homebrew/homebrew-core/blob/master/Formula/postgresql.rb
  3. Kliknij przycisk „historia”, aby zobaczyć stare zatwierdzenia: https://github.com/Homebrew/homebrew-core/commits/master/Formula/postgresql.rb
  4. Kliknij ten, który chcesz: „postgresql: zaktualizuj wersję do 8.4.4”, https://github.com/Homebrew/homebrew-core/blob/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  5. Kliknij link „raw”: https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb
  6. brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/postgresql.rb

8
Jest to najprostszy sposób na zainstalowanie potrzebnej wersji pakietu, jeśli nie jest dostępny w repozytorium rdzenia jakopackage@version
avy

7
Jeśli nie możesz użyć interfejsu internetowego, możesz sklonować repozytorium i zrobić to lokalnie: użyj, git log master -- Formula/PACKAGENAME.rbaby uzyskać historię zatwierdzeń, sprawdź poprawne zatwierdzenie, a następnie uruchom, brew install Formula/PACKAGENAME.rbaby je zainstalować.
hity

7
Myślę, że potrzebujesz brew unlinkwcześniej brew installinnej wersji.
studgeek

Kto to mxcljest
PJSCopeland

1
Robię to, 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?
msciwoj,

109

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

1
hmm, brew install https://github.com/Homebrew/homebrew-versions/blob/master/node06.rbwydawało się , że zawiodło z błędami składniowymi.
Brian Armstrong,

6
@BrianArmstrong Odwołujesz się do wersji pliku w formacie HTML, podczas gdy potrzebujesz wersji surowej .
Nikita Volkov

Wejdź na github.com/Homebrew/homebrew/commits/master/Library/Formula/… , wybierz swoją wersję, przeglądaj kod, raw - użyj tego adresu URL.
jpillora

1
Nie zapomnij o rawadresie URL
Faber

9
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/… .
PJSCopeland

78

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ć.

  1. Idź do https://github.com/Homebrew/homebrew-core

  2. Naciśnij tna klawiaturze, aby aktywować wyszukiwarkę plików.

  3. 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 .

  4. 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:

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

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.

  1. Kliknij przycisk „Widok”, aby wyświetlić źródło pliku mysql.rb po zastosowaniu zatwierdzenia.

  2. Następnie kliknij przycisk „Raw”, aby wyświetlić surowe źródło.

  3. 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).

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

  4. 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ł.


13
Niestety jest to zbyt daleko na liście odpowiedzi, ale jest najlepszym rozwiązaniem. To jest to, czego używam, z wyjątkiem tego, że zamiast braumeistera, po prostu przechodzę na stronę GitHub Homebrew formuły, którą chcę (np. Gcc przejdź do github.com/Homebrew/homebrew/blob/master/Library/Formula/gcc.rb ), a następnie przeglądam „Historię” pliku, aż dojdę do żądanej wersji.
Guy Kogus,

3
To zdecydowanie najlepsze rozwiązanie w moim przypadku - instalacja starszej wersji Watchmana, która nie wymagała Xcode 8.1
Zachary Keener,

3
To naprawdę najłatwiejszy sposób na zainstalowanie starszej wersji. Świetna odpowiedź
Martin

4
To działało dla mnie, ale najpierw musiałem zaparzyć oprogramowanie.
Brett Wagner,

3
To było dla mnie najprostsze rozwiązanie. Powinno to być wyższe, ponieważ przyjęta odpowiedź jest nieaktualna.
Tim W

35

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:

  1. 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).

  2. Znajdź adres URL, pod którym formuła znajduje się w repozytorium nadrzędnym:

    brew info ‹formula› | grep ^From:
    
  3. Napraw adres URL:

    1. wymienić github.comzraw.githubusercontent.com
    2. Zastąp blob/masterskrótem zatwierdzenia, który znaleźliśmy w pierwszym kroku.
  4. 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ć.


Alternatywnie przy użyciu niestandardowego kranu tylko lokalnego

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.


1
Najwyraźniej zmienili składnię, brew logwięc wszelkie dodatkowe -Flub --grepopcje zawiodły dla mnie.
dragon788

1
@ dragon788 Bloody hell, Homebrew 2 całkowicie się zepsuło 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.
Konrad Rudolph

Jeśli nie zaakceptują, że zmiana w zachowaniu jest błędem, wydaje się, External Commandże konieczne może być działanie w ramach struktury, brewaby odzyskać tego rodzaju git logfiltrowanie. docs.brew.sh/External-Commands
dragon788

To było jedyne miejsce, w którym mogłem znaleźć prawidłowe brew extractużycie, dzięki!
dognotdog

Sugeruję, aby niestandardowy local0 tylko dotknął pierwszej części odpowiedzi. To naprawdę wydaje się najlepszym rozwiązaniem.
studgeek

29

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ę.


To było bardzo pomocne. Uwaga: Fundacja Apache zreorganizowała pliki binarne maven na katalogi specyficzne dla wersji (1,2,3), więc będziesz musiał edytować plik maven.rb w wersji 2.2.1 i być może inne, aby dopasować je do nowej struktury. Na przykład plik binarny dla 2.2.1 znajdował się pod adresem: apache.org/dist/maven/maven-2/2.2.1/binaries/… . Zwróć uwagę na „maven-2 / 2.2.1 /” w adresie URL.
Charles Forcey

@CharlesForcey Masz rację co do reorganizacji repozytorium maven. Zaktualizuję odpowiedź, aby użyć naparu do kawy, aby użyć starszej formuły maven2. Dziękuję za komentarz.
Cameron Goodale,


18

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):

  1. Znajdź plik formuły, np .: https://github.com/Homebrew/homebrew-core/blob/master/Formula/terraform.rb
  2. Pobierz wersję zatwierdzenia z historii github z https://github.com/Homebrew/homebrew-core/commits/master/Formula/terraform.rb lub git log master -- Formula/terraform.rbjeśli lokalnie sklonowałeś repo.
  3. Uzyskaj surowy adres URL git z zatwierdzoną wersją formuły: jeśli link formuły w github.com to https://github.com/Homebrew/homebrew-core/blob/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb , Twój surowy adres URL będzie be: https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb
  4. Zainstaluj z: brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/e4ca4d2c41d4c1412994f9f1cb14993be5b2c59a/Formula/terraform.rb

Aby uzyskać nieprzetworzony adres URL git w kroku 3, możesz także nacisnąć przycisk „Raw” i skopiować adres URL, pod który zaprowadzi cię przeglądarka.
Brian Topping

15

Oficjalna metoda (na podstawie odpowiedzi na https://github.com/Homebrew/brew/issues/6028 )

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 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.


Metoda skryptowa (zalecana)

Ten przykład pokazuje instalację starszej wersji bash 4.4.23, przydatny przykład, ponieważ bashformuła obecnie instaluje wersję bash 5.

  • Najpierw zainstaluj najnowszą wersję formuły za pomocą brew install bash
  • następnie brew unlink bash
  • następnie zainstaluj starszą wersję, którą chcesz, zgodnie z poniższymi fragmentami
  • na koniec użyj, brew switch bash 4.4.23aby skonfigurować dowiązania symboliczne do swojej wersji

Jeś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ę.


12

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.


Chociaż może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Erik

1
@Erik Dzięki, naprawiono.
Alex Sharp

11

Jest rok 2020 i większość odpowiedzi jest nieaktualna

Moja sytuacja: postgresqlzostała przypadkowo zaktualizowana z 11 do 12. Chcę zachować 11.

  1. Zatrzymaj DB:
brew services stop postgresql
  1. Zainstaluj Postgres 11:
brew install postgresql@11
  1. Odblokuj to:
brew link postgresql@11 --force
  1. (Opcjonalnie) Zmień nazwę katalogu danych DB z postgresna postgres@11:
cd /usr/local/var
ls -lh
mv postgresql@11 postgresql@11-fresh-backup
mv postgres postgresql@11
  1. Uruchom DB:
brew services start postgresql@11

Jeśli masz jakieś błędy, sprawdź /usr/local/var/log/postgresql@11.log(zauważ @ 11).


6
Działa to tylko w specjalnym przypadku postgresql @ 11, który jest utrzymywany przez opiekunów Homebrew, aby pomóc w migracji magazynów danych (wykonywanych za pomocą specjalnego polecenia brew postgresql-upgrade-database). Ta odpowiedź nie jest przydatna w prawie żadnej innej formule.
Adam Wróbel

@ AdamWróbel Zdecydowałem, że dobrze jest odpowiedzieć na oryginalne pytanie dotyczące Postgres . 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ć.
Max Malysh

Użytkownicy NodeJS, którzy nie używają menedżera wersji, np. 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
łapy

10

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.

  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

  2. Znajdź konkretny plik formuły (.rb) dla swojego pakietu. Ponieważ chcę obniżyć wersję docker-machine, widzę docker-machine.rbplik.

  3. 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).

  1. 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

  2. Odinstaluj aktualną wersję pakietu. Wystarczy uruchomić normalne polecenia parzenia, aby odinstalować bieżącą wersję pakietu.
    Dawny.brew uninstall docker-machine

  3. 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.


1
Bardzo dokładne napisanie @rchawdry, dziękuję. BTW: aby znaleźć zatwierdzenie pasujące do żądanej wersji, szybko dodaj parametr --grep git log --grep 0.4.1 docker-machine.rb.
Jerry Mindek,

Dla mnie ścieżka była/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
akauppi

W ten sposób nie byłem w stanie znaleźć wystarczającej historii wersji dla caironaparu. Odpowiedź @ sealocal z jakiegoś powodu pokazała więcej.
akauppi

9

Zainstaluj starą wersję pakietu parzenia (przykład Flyway 4.2.0)

Znajdź lokalnego git dir lub klonuj Homebrew / homebrew-core lokalnie

cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/

LUB

git clone git@github.com:Homebrew/homebrew-core.git

Wyświetl wszystkie dostępne wersje

git log master -- Formula/flyway.rb

Skopiuj identyfikator zatwierdzenia dla żądanej wersji i zainstaluj go bezpośrednio

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/793abfa325531415184e1549836c982b39e89299/Formula/flyway.rb


dlaczego po prostu nie uruchomić brew install Formula/flyway.rbz homebrew-corekatalogu? zadziałało dla mnie bez raw.github..adresu
kangkyu

8

Wypróbowałem większość rozwiązań tutaj i są one nieaktualne. Odtąd musiałem połączyć kilka pomysłów z własną pracą. W rezultacie stworzyłem skrypt, który pomoże mi wykonać ciężkie podnoszenie, które można znaleźć tutaj

Stosowanie:

brewv.sh formula_name desired_version

6

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)

2
... jeśli ktoś zadał sobie trud, aby stworzyć wersjonowaną recepturę dla tego pakietu.
clacke

6

Ż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

2
Życie się zmienia i ta odpowiedź jest najbardziej istotna. Nie zapomnij HOMEBREW_NO_AUTO_UPDATEi przeczytaj github.com/Homebrew/brew/issues/1188
Wile E.,

Prawidłowe polecenia to cd brew/Homebrewgit log Library/Taps/homebrew/homebrew-core/Formula/python.rb
Iulian Onofrei

Ale nawet to nie działa, ponieważ /Library/Tapsjest ignorowane.
Iulian Onofrei

Nie zapomnij o HOMEBREW_NO_AUTO_UPDATE. Tak, nie zapomnij o rzeczy trzeba aż po odkryć jest to potrzebne. xD
Josh Habdas,

Co powiesz na ten? HOMEBREW_NO_INSTALL_CLEANUPczy nie jest to coś, o czym musisz pamiętać?
kangkyu

6

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:

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


3

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ę.


jak zdobyć sha256 ? w moim przypadkuhttps://storage.googleapis.com/dart-archive/channels/stable/release/1.24.3/sdk/dartsdk-macos-x64-release.zip
simo

1

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 :)


1

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.


Brzydki hack. Ale tak, to również zadziałało dla mnie, kiedy próbowałem wyszukać i zainstalować starszą wersję konsula! Twoje zdrowie.
darkdefender27

0

Zdecydowałem, wbrew mojej lepszej ocenie, stworzyć formułę dla Maven 3.1.1, której homebrew/versionsnie ma. Aby to zrobić:

  1. Rozwidliłem się homebrew/versionsna github.
  2. Odsyłam symbolicznie $(brew --prefix)/Library/Tapsdo lokalnej kopii roboczej mojego widelca. Zadzwonię do tego my-homebrew/versions.
  3. Testowałem, określając formułę jako my-homebrew/versions/<formula>.
  4. Wysłałem żądanie ściągnięcia do homebrew/versionsmojej nowej formuły.

Tak



0

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ć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.