Jak zainstalować najnowszą wersję Node za pomocą Brew

154

Najnowsza wersja NodeJs to obecnie 0.4.1

Polecenie w brew install nodetej chwili instaluje 0.2.6 - co nie jest idealne. Chciałbym 0.4.1

Spojrzałem na listę poleceń dla naparu i spróbowałembrew install --HEAD node

Ale to instaluje węzeł 0.5-pre.

Dlaczego brew nie instaluje odpowiedniej wersji i jak mogę zmusić go do uzyskania właściwej?

Na tym etapie wygląda na to, że byłoby łatwiej po prostu pobrać plik src i zainstalować go ręcznie. Ale chciałbym wiedzieć, co się dzieje z Brew.

PandaWood
źródło
Jestem ciekaw. Jaka jest różnica między instalacją przez Homebrew a instalacją z pakietu pobranego z nodejs.org ?
yihangho

Odpowiedzi:

126

Biegałeś brew updatepierwszy? Jeśli tego nie zrobisz, Homebrew nie może zaktualizować swoich formuł, a jeśli nie zaktualizuje swoich formuł, nie będzie wiedział, jak zainstalować najnowsze wersje oprogramowania.

Lily Ballard
źródło
2
Racja, próbowałem użyć opcji „brew update node”, ale teraz widzę, że masz rację. Nie przyszło mi to do głowy, ponieważ dokumentacja mówi, że „aktualizacja parzenia” zaktualizuje oprogramowanie parzenia - co wydaje się nie robić różnicy. Ale wspomina o „formulea” - co jest (szczerze) głupim słowem na określenie tego, co w zasadzie jest „biblioteką wersji oprogramowania”. Mogę zrobić „brew info node”, aby dowiedzieć się, jaką wersję ma zainstalować. Jest ustawiony na 0.4.0, więc i tak zakończyłem instalację z src, ale to prawda. Dziękuję Ci.
PandaWood,
Kiedy mówi „zaktualizuj oprogramowanie brew”, nie oznacza to aktualizacji oprogramowania, które zainstalował brew - oznacza to aktualizację samego brew, jak również biblioteki formuł.
Lily Ballard,
301

Uruchom poniższe polecenia, w tej kolejności:

brew update
brew doctor
brew upgrade node

Teraz masz zainstalowaną zaktualizowaną wersję węzła i prawdopodobnie nie jest ona połączona. Jeśli tak nie jest, po prostu wpisz: brew link nodelubbrew link --overwrite node

Andrey Bodoev
źródło
1
Kontynuuj/usr/local/share/doc/node is not writable.
Saba Ahang
@SabaAhang, zobacz: Napraw uprawnienia w / usr / local dla Homebrew; ; gist.github.com/rpavlik/768518
AnneTheAgile
3
Błąd: nie ma takiej beczki: / usr / local / Cellar / node
Hos Mercury
Świetnie, to naprawiło błąd NPM („Buffer.alloc nie jest funkcją”), ponieważ beczka węzła została odłączona; potrzebne do wymuszenia linkowania / nadpisania starych plików.
dave
2
brew link --overwrite nodeto naprawdę ważne! dzięki
hanzichi
136

Po instalacji / uaktualnieniu węzła przez brew natknąłem się dokładnie na ten problem: polecenie node zadziałało, ale nie polecenie npm.

Użyłem tych poleceń, aby to naprawić.

brew uninstall node
brew update
brew upgrade
brew cleanup
brew install node
sudo chown -R $(whoami) /usr/local
brew link --overwrite node
brew postinstall node

Złożyłem to rozwiązanie po próbach i błędach za pomocą ...

Eric Walsh
źródło
Dziękuję Ci! Miał dokładnie ten sam problem i to go rozwiązało.
elsurudo
7
sudo brew postinstall nodezgłosi błąd, chyba że brew jest własnością roota (niezalecane). Myślę, że nie powinno to być potrzebne, jeśli już to zrobiłeś sudo chown -R $(whoami) /usr/local. Powinieneś być w stanie po prostu biegać brew postinstall node.
Sam Fen
2
@SamFen ma rację. sudonie są potrzebne. Najpierw sprawdziłem zaakceptowaną odpowiedź, zanim podałem tę listę poleceń. Potem pobiegłem node -vi teraz wszystko wydaje się w porządku.
6754534367
1
Użyj sudo chown -R $ (whoami) $ (brew --prefix) / * zamiast sudo chown -R $ (whoami) / usr / local
Troy DC Thompson
1
To zadziałało dla mnie. Zrobiłem to, co @TroyDCThompson zalecił, sudo chown -R $(whoami) $(brew --prefix)/*gdy dostawałem Operation not permitted.
czwartek101
21

Czasami brew updatemi się nie udaje, ponieważ jeden pakiet nie pobiera się poprawnie. Możesz więc po prostu zaktualizować określoną bibliotekę, taką jak ta:

brew upgrade node

https://gist.github.com/3005832

Lance Pollard
źródło
13

Spróbuj również dezaktywować bieżącą wersję węzła po zainstalowaniu nowej wersji węzła. To pomaga mi.

nvm deactivate

To jest usuwane /Users/user_name/.nvm/*/bin z $ PATH

Po zaktualizowaniu tego węzła

node --version
v10.9.0
Alexandr
źródło
9

Musiałem zrobić brew link --overwrite nodepo brew install nodeaktualizacji z 0.4 do 0.8.18

ojreadmore
źródło
Błąd: nie ma takiej beczki: / usr / local / Cellar / node
Hos Mercury
7

Spróbuj użyć "n", niezwykle prostego menedżera pakietów Node .

> npm install -g n

Po zainstalowaniu "n". Możesz pobrać najnowszy węzeł, wykonując następujące czynności:

> n latest

Użyłem go z powodzeniem na Ubuntu 16.0x i MacOS 10.12 (Sierra)

Źródła: https://github.com/tj/n

Reuben
źródło
7

Jeśli zainstalowałeś bieżący węzeł za pośrednictwem Homebrew, po prostu użyj tych poleceń.

brew update
brew upgrade node

Sprawdź wersję węzła według

node -v

Harikrishnan
źródło
3

Właśnie użyłem tego rozwiązania z Homebrew 0.9.5 i wydawało się, że jest to szybkie rozwiązanie do aktualizacji do najnowszej stabilnej wersji węzła.

brew update

Spowoduje to zainstalowanie najnowszej wersji

brew install node

Aby to znaleźć, odłącz bieżącą wersję użycia węzła, node -v

brew unlink node012

Spowoduje to zmianę na najbardziej aktualną wersję node.

brew link node

Uwaga: to rozwiązanie zadziałało, ponieważ otrzymałem ten błąd:

Błąd: nie ma takiej beczki: / usr / local / Cellar / node

user2096561
źródło
2

Zrobiłem to na Mac OSX Sierra. Miałem zainstalowany Node 6.1, ale Puppetter wymagał Node 6.4. Oto co zrobiłem:

brew upgrade node
brew unlink node
brew link --overwrite node@8
echo 'export PATH="/usr/local/opt/node@8/bin:$PATH"' >> ~/.bash_profile

A następnie otwórz nowe okno terminala i uruchom:

node -v
v8.11.2

Opcja --overwrite jest konieczna do przesłonięcia plików powodujących konflikty między node6 i node8

Donato
źródło
2
  1. node -v pokaże aktualną wersję.
  2. npm -v pokaże aktualną wersję.
  3. brew link --overwrite --dry-run node wymusi link i nadpisze wszystkie pliki będące w konflikcie.
  4. brew install node wykonaj nową instalację.
  5. brew update
  6. brew upgrade node
  7. brew link --overwrite node

    lub

    brew link node

Procedura aktualizacji węzła znajduje się poniżej

Mahendra Rao
źródło
1

Możesz użyć nodebrew . Może też zmieniać wersje węzłów.

c-projekt
źródło
0

Jeśli chcesz usunąć brewzależność, poleciłbym nvm - naprawdę nie mogę go polecić w stosunku do żadnego innego rozwiązania do wersjonowania, ponieważ nie musiałem próbować niczego innego. Możliwość natychmiastowego przełączania się między wersjami w zależności od projektu, nad którym pracujesz, jest bardzo cenna.

Jon z
źródło