Jak mogę obniżyć wersję węzła lub zainstalować określoną poprzednią wersję za pomocą homebrew?

228

Używam naparu. Mam zainstalowany węzeł, używając naparu. Chcę użyć wcześniejszej wersji węzła.

Online, znaleźć instrukcje , takie jak , na przykład :

cd /usr/local/Library/Formula
brew remove node --force
brew versions node
git checkout 83988e4 /usr/local/Library/Formula/node.rb
brew install node

Mam z tym problem, że brewwydaje się, że nie ma versionspodkomendy:

$ brew versions node
Error: Unknown command: versions
$ brew --version
0.9.5

Jestem nowy do warzenia. Czy muszę versionsjakoś włączyć podkomendę? Czy zamiast tego powinienem użyć innej podkomendy? Czy jest jakaś inna metoda, którą powinienem wypróbować?

Korzystam z systemu OS X Yosemite (10.10.1); warzyć 0.9.5.

dave4420
źródło
Którą wersję node.js chcesz zainstalować?
bmike
Mój szef mówi mi o 10,32. Chyba ma na myśli 0.10.32. Mam teraz zainstalowaną wersję 0.12.0.
dave4420
W tym dniu czytelnik powinien przejść do tej odpowiedzi: stackoverflow.com/a/4158763/48136
Brice

Odpowiedzi:

352

W tych dniach, jeśli chcesz zainstalować inną wersję node, zrób to w ten sposób:

Najpierw wyszukaj żądany pakiet:

brew search node

Może to dać następujące wyniki:

heroku/brew/heroku-node ✔
llnode
node@10
nodebrew
leafnode
node ✔
node@8
....

A następnie zainstaluj żądaną wersję:

brew install node@8

Pamiętaj również, że możesz zainstalować więcej niż 1 pakiet węzłów w tym samym czasie, ale nie możesz mieć ich dostępnych jednocześnie. Więc jeśli masz nodejuż zainstalowany najnowszy / ogólny pakiet, najpierw musisz go odłączyć:

brew unlink node

Następnie możesz połączyć inną wersję:

brew link node@8

W przypadku niektórych starszych wersji węzłów (które są tylko w beczkach) może być konieczne połączenie ich z opcjami --forcei --overwrite:

brew link --force --overwrite node@8
Paweł Gościcki
źródło
10
najlepsza odpowiedź tutaj.
chovy,
3
Pamiętaj, że może zostać wyświetlony monit o „odłączenie” istniejącej wersji węzła przed pomyślnym zainstalowaniem jednej z pozostałych wersji wymienionych na liście (zgodnie z instrukcjami powyżej). Po „odłączeniu” pozostawiasz inną wersję fizycznie zainstalowaną w systemie, ale ta, którą instalujesz (po odłączeniu) stanie się „domyślną” wersją w twoim systemie. Na przykład może być konieczne wpisanie, brew unlink nodejeśli został zainstalowany brew install node. Następnie możesz to zrobić brew install homebrew/versions/node4-lts(którą powinieneś zobaczyć jako wersję podaną zgodnie z instrukcjami w tej odpowiedzi).
xmnboy
1
Zamiast homebrew/versions/node06tego teraz homebrew/versions/node6-lts. Zrób też brew link node6-lts.
akauppi,
1
Zaktualizowałem swoją odpowiedź, aby odzwierciedlić najnowsze zmiany naparu. Dzięki!
Paweł Gościcki,
2
ale jak możemy zainstalować konkretną wersję, taką jak węzeł 8.2.1, używając brew?
Nadav B
39

Oto krok po kroku.

Aby zobaczyć aktualną wersję węzła

$ node --version

Aby zobaczyć dostępne wersje węzłów

$ brew search node

Aby odłączyć od bieżącej wersji

$ brew unlink node

Zainstaluj dowolną wersję, np. 8

$ brew install node@8

Aby połączyć zainstalowaną wersję

$ brew link node@8

Aby zobaczyć aktualną wersję węzła (ponownie)

$ node --version
katopz
źródło
Właśnie tego potrzebowałem
Brian Colavito,
Jak rozwiązać ten problem? brew link node @ 10 Ostrzeżenie: węzeł @ 10 jest tylko w beczce i musi być połączony z --force Jeśli potrzebujesz najpierw tego oprogramowania w ścieżce, rozważ uruchomienie: echo 'export PATH = "/ usr / local / opt / node @ 10 / bin: $ PATH "'>> ~ / .bash_profile
vikramvi
nie działa w systemie Mac OS 10.13.5, pojawia się błąd stackoverflow.com/questions/53043476/...
vikramvi
15

Od tego PR do homebrew / wersji i tego PR do homebrew , odpowiedzi dotyczące pakietów brew tap homebrew/versionslub *-ltspakietów już nie działają.

Prawidłowa odpowiedź to teraz:

brew install node@<version>

Gdzie <version>jest 0.10, 0.12, 4, itd. Na przykład, aby zainstalować node.js v6 (jak to pisze, najnowsza wersja LTS):

brew install node@6

Może być konieczne uruchomienie brew updateprzed tymi poleceniami, aby upewnić się, że te nowe formułowane wersje są dostępne. Jeśli masz nodezainstalowaną inną wersję formuły, musisz brew unlink nodenajpierw uruchomić .

Jan
źródło
2
nie działa z systemem Mac OS 10.13.5 stackoverflow.com/questions/53043476/...
vikramvi
11

brew versionsmusi zostać zainstalowany w pewnym momencie po instalacji brew.

$ brew tap homebrew/boneyard

Następnie możesz użyć brew versionspolecenia zgodnie z założeniami instrukcji.

dave4420
źródło
4
homebrew/boneyardjest przestarzały i zostanie zastąpiony przez github.com/Homebrew/homebrew-versions od marca 2015 r. Zainstaluj za pośrednictwem brew tap homebrew/versions.
Jakub Holý
12
Z homebrew/versionswas dostanie wersjonowanych nazwę pakietu: brew search node => leafnode node node010 node04 node06 node08 nodebrew .... brew install node010Następnie wykonaj brew link --overwrite node010instalację Node.JS w wersji 0.10.
Jakub Holý
3
Być może będziesz musiał to zrobić brew unlink nodeprzed tobąbrew install node010
chananelb
10

Do Twojej wiadomości, jeśli poprzednio była zainstalowana stara wersja i nie została uruchomiona brew cleanup(która usuwa stare wersje), możesz przełączyć się na coś takiegobrew switch node 5.7.0

Wszystkie zainstalowane wersje węzła można wyświetlić, uruchamiając brew info nodelubls -l /usr/local/Cellar/node/

Zobacz ściągawka polecenia brew: http://ricostacruz.com/cheatsheets/homebrew.html

Loren
źródło
Działa od 2017/12! Homebrew 1.4.0-17-gc912d26
Jason Harrison
5

Jeśli potrzebujesz go specjalnie dla Węzła, możesz użyć nvm. Jest to bardzo wygodne, jeśli dużo pracujesz z Node.

mik01aj
źródło
Według nvm docs brew i nvm nie są obsługiwaną kombinacją. Skomentowałem to tutaj. github.com/angular/quare-cli-cli/issues/ ... Chciałbym usłyszeć jakieś historie wojenne na ten temat. Ponieważ na pozór wydaje mi się, że działa, mimo że „nie jest obsługiwany”
JGFMK
3

Możesz to zrobić bez homebrew.

Możesz odinstalować, a następnie zainstalować węzeł ręcznie.

Musisz pobrać bieżącą wersję. Oto lista .

Pobierz węzeł-v {numer bieżącej wersji} .tar.gz, rozpakuj go, a następnie przejdź do wiersza poleceń.

cd node-v{your-current-version-number}
./configure
make
sudo make install

Aby go odinstalować sudo make uninstall

Następnie pobierz wersję, którą chcesz zainstalować, i wykonaj powyższe kroki.

Z tego postu na blogu

Terente Ionut Alexandru
źródło
+1 tej odpowiedzi. FWIW, właśnie udało mi się skopiować nieoprawiony bin/folder do mojej ŚCIEŻKI, aby uruchomić to.
shicholas
Co więcej, możesz stamtąd pobrać plik .pkg i kliknąć go dwukrotnie, aby zainstalować.
Henrik N
3

Jeśli napotkałeś problemy z instalacją homebrew w celu zainstalowania dowolnej wersji węzła, możesz po prostu pobrać plik .pkg dla OSX z https://nodejs.org/dist/[VERSION_YOU_NEED] . Pomaga mi to tylko w ponownej instalacji węzła

Firuz Narzikulov
źródło
3

Istnieje wiele odpowiedzi tutaj i innych miejsc, które mówią o używaniu wersji Homebrew, ale daje to bardzo ograniczone opcje, dla której wersji Węzła można zainstalować.

Korzystanie z NVM jest znacznie łatwiejsze i pozwala bardzo łatwo przełączać się między wersjami.

homebrew install nvm

Następnie postępuj zgodnie z instrukcjami w zastrzeżeniach - mkdir ~/.nvmi dodaj dwie linie do swojej .bash_profileisource .bash_profile

Następnie po prostu uruchom nvm install <version>wszystkie potrzebne wersje. Następnie, nvm use <version>aby przełączyć.

DSG
źródło
To nie jest zaakceptowana odpowiedź, ale tylko ta działała dla mnie. Chciałbym spróbować tego pierwszego, ponieważ zaoszczędziłbym dużo czasu.
Alex
1

Wyobraźmy sobie, że masz wersję 0.12. *. Aby zainstalować (obniżyć) wersję węzła 0.10 wrzuć napar w OSX, musisz:

$ sudo brew tap homebrew-versions
$ brew unlink node
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-versions/master/node010.rb
$ node -v

Lista wszystkich wersji węzłów znajduje się tutaj

1 wyraźny
źródło
1

Preferowanym sposobem w świecie NodeJS jest użycie narzędzia n

  • Instalacja: npm install -g n
  • Zainstaluj węzeł 8.8.4 n 8.8.4
  • Wyświetl wszystkie dostępne lokalnie wersje węzłów i wybierz jedną: n

Wygląda podobnie nvm, ale miałem problemy nvmi ndziałałem od razu po wyjęciu z pudełka.

Peter Ilfrich
źródło
0

https://nodejs.org/en/blog/release/

Możesz przejść tutaj i zainstalować potrzebną wersję.

Przed instalacją możesz uruchomić, brew unlink nodeaby odłączyć bieżącą wersję.

Anant Simran Singh
źródło
1
Jaka byłaby zaleta robienia tego w ten sposób, w przeciwieństwie do używania naparu (jak opisuje kilka innych odpowiedzi) lub odinstalowywania węzła, a następnie ręcznego instalowania (jak opisano w odpowiedzi @ Terente-Ionut-Alexandru)?
John N,
Wersje napoju @JohnN są obecnie przestarzałe. Jego alternatywy nie są bardzo łatwe do zrozumienia. Poza tym instalowanie dokładnej wersji jest dość skomplikowane.
Anant Simran Singh
@ Odpowiedź Pawła-Gościckiego (najwyżej oceniona, 140 głosów) wydaje się bardzo łatwa do zrozumienia i wcale nie skomplikowana - co pasuje do moich ostatnich doświadczeń z naparami i różnymi wersjami formuł. Chodzi mi o to, że twoja odpowiedź nie wydaje się dodawać do niczego, co nie zostało już powiedziane w innych odpowiedziach - chyba że istnieje powód do rozłączenia + ręcznej instalacji zamiast odinstalowania + ręcznej instalacji, jak sugerował Terente?
John N,
@JohnN To oczywiście jest łatwe do zrozumienia. Ale będziesz ograniczony przez opcje, które daje wyszukiwanie piw. Na przykład jeśli chcesz dokładnie węzła 4.4.6, ale napar zapewni tylko opcję węzeł @ 4. W związku z tym.
Anant Simran Singh
Sądzę, że są 3 przyzwoite odpowiedzi na pytanie: (1) użyj naparu, (2) użyj nvm i (3) odinstaluj i zainstaluj ręcznie. Próbuję cię zachęcić do wyjaśnienia, dlaczego twoja odpowiedź dodaje się do tych istniejących odpowiedzi. Dlaczego uważasz, że odłączenie + instalacja ręczna jest lepsza niż istniejące odpowiedzi? W szczególności dlaczego uważasz, że * ręczne odłączenie * + ręczna instalacja jest lepsza niż * odinstalowanie * + ręczna instalacja, jak sugeruje odpowiedź Terente?
John N