Как установить последнюю версию Node с помощью Brew


154

Последняя версия NodeJs прямо сейчас - 0.4.1.

Команда brew install nodeпрямо сейчас устанавливает 0.2.6 - что не идеально. Я хотел бы 0.4.1

Я посмотрел на этот список команд для Brew и попыталсяbrew install --HEAD node

Но это устанавливает узел 0.5-pre.

Почему brew не устанавливает правильную версию и как я могу заставить ее выбрать нужную версию?

На данном этапе кажется, что на самом деле было бы проще просто загрузить src и установить его вручную. Но я хотел бы знать, что происходит с Brew.


Я любопытный. В чем разница между установкой через Homebrew и установкой из пакета, загруженного с nodejs.org ?
Ииханхо

Ответы:


126

Ты бежал brew updateпервым? Если вы этого не сделаете, Homebrew не сможет обновить свои формулы, а если он не обновит свои формулы, он не знает, как установить последние версии программного обеспечения.


2
Правильно, я попробовал «узел обновления brew», но теперь я вижу, что вы правы. Мне это не пришло в голову, потому что доко сказал, что «brew update» обновит программное обеспечение brew - что, похоже, не имеет значения. Но здесь упоминается «формула» - это просто (откровенно) глупое слово для того, что в сущности означает «библиотека версий программного обеспечения». Я могу сделать 'brew info node', чтобы узнать, какую версию он собирается установить. Он установлен на 0.4.0, так что я все равно закончил установку с src, но это правильно. Спасибо.
PandaWood

Когда говорится «обновить программное обеспечение brew», это не означает, что программное обеспечение обновления, которое было установлено brew, - это означает само обновление brew, а также его библиотеку формул.
Лили Баллард

301

Запустите команды ниже, в следующем порядке:

brew update
brew doctor
brew upgrade node

Теперь вы установили обновленную версию узла, и он, вероятно, не связан. Если это не так, просто введите: brew link nodeилиbrew link --overwrite node


1
Продолжайте получать/usr/local/share/doc/node is not writable.
Саба Аханг

@SabaAhang, см .: Исправление разрешений для / usr / local для Homebrew; ; gist.github.com/rpavlik/768518
AnneTheAgile

3
Ошибка: Нет такой бочонок: / usr / local / Cellar / node
Hos Mercury

Хорошо, это исправило ошибку NPM («Buffer.alloc не является функцией»), потому что кег узла был не связан; Нужно заставить ссылку / перезаписать старые файлы.
Дэйв

2
brew link --overwrite nodeэто действительно важно! спасибо
Ханцичи

136

После установки / обновления узла через brew я точно столкнулся с этой проблемой: команда узла работала, но не команда npm.

Я использовал эти команды, чтобы исправить это.

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

Я собрал это решение после проб и ошибок, используя ...


Спасибо! Была точно такая же проблема, и это решило ее.
Эльсурудо

7
sudo brew postinstall nodeвыдаст ошибку, если brew не принадлежит пользователю root (не рекомендуется). Я не думаю, что это нужно, если ты уже сделал это sudo chown -R $(whoami) /usr/local. Вы должны быть в состоянии просто бежать brew postinstall node.
Сэм Фен

2
@ Самфен прав. sudoне нужно. Я сначала выполнил принятый ответ, прежде чем отправил этот список команд. После этого я побежал, node -vи теперь все в порядке.
6754534367

1
Используйте sudo chown -R $ (whoami) $ (brew --prefix) / * вместо sudo chown -R $ (whoami) / usr / local
Трой, округ Колумбия Томпсон,

1
Это сработало для меня. Я сделал то, что @TroyDCThompson рекомендовал, sudo chown -R $(whoami) $(brew --prefix)/*когда я получал Operation not permitted.
thurzo101

21

Иногда происходит brew updateсбой, потому что один пакет загружается неправильно. Таким образом, вы можете просто обновить определенную библиотеку следующим образом:

brew upgrade node

https://gist.github.com/3005832


13

Также попробуйте деактивировать текущую версию узла после установки новой версии узла. Это помогает мне.

nvm deactivate

Это удалено /Users/user_name/.nvm/*/bin из $ PATH

И после этого узел был обновлен

node --version
v10.9.0

9

Мне пришлось сделать brew link --overwrite nodeпосле brew install nodeобновления с 0.4 до 0.8.18


Ошибка: Нет такой бочонок: / usr / local / Cellar / node
Hos Mercury

7

Попробуйте использовать "n" Node чрезвычайно простой менеджер пакетов.

> npm install -g n

Как только вы установили «n». Вы можете получить последний узел, выполнив следующие действия:

> n latest

Я успешно использовал его в Ubuntu 16.0x и MacOS 10.12 (Sierra)

Ссылка: https://github.com/tj/n


7

Если вы установили текущий узел через Homebrew, просто используйте эти команды.

brew update
brew upgrade node

Проверить версию узла по

node -v


3

Просто использовал это решение с Homebrew 0.9.5, и казалось, что это быстрое решение для обновления до последней стабильной версии узла.

brew update

Это установит последнюю версию

brew install node

Отключите вашу текущую версию узла, узел -v, чтобы найти это

brew unlink node012

Это изменится на самую последнюю версию узла.

brew link node

Примечание: это решение сработало в результате того, что я получил эту ошибку:

Ошибка: нет такого бочонка: / usr / local / Cellar / node


2

Я сделал это на Mac OSX Sierra. У меня был установлен Node 6.1, но Puppetter требовал Node 6.4. Вот что я сделал:

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

А затем откройте новое окно терминала и запустите:

node -v
v8.11.2

Параметр --overwrite необходим для переопределения конфликтующих файлов между узлом 6 и узлом 8


2
  1. node -v покажет вам текущую версию.
  2. npm -v покажет вам текущую версию.
  3. brew link --overwrite --dry-run node заставит ссылку и перезапишет все конфликтующие файлы.
  4. brew install node сделать новую установку.
  5. brew update
  6. brew upgrade node
  7. brew link --overwrite node

    или

    brew link node

Процедура обновления узла ниже



0

Если вы хотите удалить brewзависимость, я бы порекомендовал nvm - я не могу порекомендовать его по сравнению с любым другим решением для управления версиями, потому что мне не нужно было пробовать что-то еще. Возможность мгновенного переключения между версиями в зависимости от того, над каким проектом вы работаете, очень ценна.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.