Как мне понизить версию узла или установить конкретную предыдущую версию, используя homebrew?

230

Я использую варево. У меня установлен узел, используя Brew. Я хочу использовать более раннюю версию узла.

В Интернете я нахожу такие инструкции , как , например :

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

Проблема, с которой я столкнулся, заключается в том, что brew, похоже, нет versionsподкоманды:

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

Я новичок в приготовлении. Нужно ли как-то включать versionsподкоманду? Должен ли я использовать другую подкоманду вместо этого? Есть ли совершенно другой метод, который я должен попробовать?

Я использую OS X Yosemite (10.10.1); заваривать 0,9,5.

dave4420
источник
Какую версию node.js вы хотите установить?
bmike
Мой босс говорит мне 10.32. Я думаю, он имеет в виду 0.10.32. У меня сейчас установлена ​​версия 0.12.0.
dave4420
На эту дату читатель должен перейти к этому ответу: stackoverflow.com/a/4158763/48136
Брайс

Ответы:

354

В эти дни, если вы хотите установить другую версию, nodeвы делаете это следующим образом:

Сначала найдите желаемый пакет:

brew search node

Это может дать вам следующие результаты:

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

А затем установите нужную версию:

brew install node@8

Также помните, что вы можете установить более 1 узла одновременно, но вы не можете иметь их одновременно. Поэтому, если у вас уже установлен последний / универсальный nodeпакет, вам нужно сначала отсоединить его:

brew unlink node

И тогда вы можете связать другую версию:

brew link node@8

Для некоторых старых версий узлов (которые бочонок только), это может потребоваться , чтобы связать их с --forceи --overwriteопциями:

brew link --force --overwrite node@8
Павел Гольчицкий
источник
10
лучший ответ здесь.
Чови
3
Обратите внимание, что вам может быть предложено «отсоединить» существующую версию узла, прежде чем вы сможете успешно установить одну из других версий, перечисленных в списке (согласно инструкциям выше). При «отмене связи» вы оставляете другую версию, физически установленную в вашей системе, но та, которую вы устанавливаете (после отмены связи), станет версией «по умолчанию» в вашей системе. Например, вам, возможно, придется печатать, brew unlink nodeесли вы установили brew install node. Тогда вы могли бы сделать brew install homebrew/versions/node4-lts(что вы должны увидеть в качестве версии, указанной в инструкциях в этом ответе).
xmnboy
1
Вместо homebrew/versions/node06этого сейчас homebrew/versions/node6-lts. Также делай brew link node6-lts.
akauppi
1
Я обновил свой ответ, чтобы отразить последние изменения варева. Спасибо!
Павел Гольчицкий
2
но как мы можем установить конкретную версию, такую ​​как узел 8.2.1, используя brew?
Надав Б
39

Вот шаг за шагом.

Чтобы увидеть вашу текущую версию узла

$ node --version

Чтобы увидеть доступные версии узла

$ brew search node

Чтобы отменить связь с текущей версией

$ brew unlink node

Установите любую версию, например, 8

$ brew install node@8

Связать установленную версию

$ brew link node@8

Чтобы увидеть вашу текущую версию узла (снова)

$ node --version
katopz
источник
Как раз то, что мне было нужно
Брайан
Как решить эту проблему? brew link node @ 10 Предупреждение: узел @ 10 предназначен только для бочонков и должен быть связан с --force. Если вам нужно сначала установить это программное обеспечение в своем PATH, вместо этого подумайте о запуске: echo 'export PATH = "/ usr / local / opt / узел @ 10 / bin: $ PATH "'>> ~ / .bash_profile
vikramvi
не работал на Mac OS 10.13.5, ошибка получения stackoverflow.com/questions/53043476/…
vikramvi
15

Начиная с этого PR для homebrew / версий и этого PR для homebrew , ответы на них brew tap homebrew/versionsили *-ltsпакеты больше не работают.

Правильный ответ сейчас:

brew install node@<version>

Где <version>это 0.10, 0.12, 4и т.д. Например, для установки Node.js v6 (на момент написания, самая последняя версия LTS):

brew install node@6

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

Джон
источник
3
не работает с Mac OS 10.13.5 stackoverflow.com/questions/53043476/...
vikramvi
11

brew versionsдолжен быть установлен в какой-то момент после установки brew.

$ brew tap homebrew/boneyard

Затем вы можете использовать brew versionsкоманду в соответствии с инструкциями.

dave4420
источник
4
homebrew/boneyardустарела и будет заменена на github.com/Homebrew/homebrew-versions с марта 2015 г. Установите с помощью brew tap homebrew/versions.
Якуб Холи
12
С homebrew/versionsвами получите версионируются имя пакета: brew search node => leafnode node node010 node04 node06 node08 nodebrew .... Поэтому brew install node010следует brew link --overwrite node010установить версию Node.JS 0.10.
Якуб Холи
3
Вам также может понадобиться brew unlink nodeдо васbrew install node010
chananelb
10

К вашему сведению, если ранее вы уже установили старую версию и не запускали brew cleanup(которая удаляет старые версии), вы можете переключиться с помощью чего-то вродеbrew switch node 5.7.0

Все установленные версии узла могут быть перечислены, запустив brew info nodeилиls -l /usr/local/Cellar/node/

См. Шпаргалку команды brew: http://ricostacruz.com/cheatsheets/homebrew.html

Loren
источник
Работает с 2017/12! Доморощенный 1.4.0-17-gc912d26
Джейсон Харрисон
5

Если вам это нужно только специально для Node, вы можете использовать nvm. Это очень удобно, если вы много работаете с Node.

mik01aj
источник
Согласно nvm, документы brew и nvm не поддерживаются. Я прокомментировал это здесь. github.com/angular/angular-cli/issues/… Мне было бы интересно услышать любые военные истории на эту тему. Потому что на
первый
3

Вы можете сделать это без доморощенного.

Вы можете удалить, а затем установить узел вручную.

Вы должны загрузить текущую версию. Вот список .

Загрузите node-v {your-current-version-number} .tar.gz, распакуйте его и перейдите в командную строку.

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

Чтобы удалить его sudo make uninstall

Затем загрузите версию, которую вы хотите установить, и следуйте инструкциям выше.

Из этого блога

Теренте Ионут Александру
источник
+1 этот ответ. Впрочем, я просто смог скопировать bin/папку без изменений в мой путь PATH, чтобы это работало.
shicholas
Более того, вы можете скачать файл .pkg и дважды щелкнуть по нему для установки.
Хенрик Н
3

Если у вас возникли проблемы с homebrew для установки любой версии узла, вы можете просто скачать файл .pkg для OSX с https://nodejs.org/dist/[VERSION_YOU_NEED] . Это только помогает мне переустановить узел

Фируз Нарзикулов
источник
3

Здесь и в других местах есть много ответов, в которых говорится, что нужно использовать homebrew-версии, но это дает вам очень ограниченные возможности, какую версию Node вы можете установить.

Использовать NVM намного проще, и он позволяет очень легко переключаться между версиями.

homebrew install nvm

Затем следуйте инструкциям в предостережениях - mkdir ~/.nvmи добавьте две строки к вашему .bash_profileиsource .bash_profile

Затем просто запустите nvm install <version>все нужные вам версии. Затем nvm use <version>переключиться.

DSG
источник
Это не принятый ответ, но он единственный, который работал для меня. Хотел бы я попробовать это первым, потому что я бы сэкономил много времени.
Алекс
1

Давайте представим, что у вас есть версия 0.12. *. Чтобы установить (понизить) версию 0.10 узла, добавившего brew в OSX, вам необходимо:

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

Список всех версий узлов находится здесь

1nstinct
источник
1

Предпочтительным способом в мире NodeJS является использование инструмента n

  • Монтаж: npm install -g n
  • Установить узел 8.8.4 n 8.8.4
  • Перечислите все свои локально доступные версии узлов и выберите одну: n

Кажется, похоже nvm, но у меня были проблемы nvm, и nработал из коробки.

Петр Ильфрич
источник
0

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

Вы можете зайти сюда и установить нужную версию.

Перед установкой вы можете запустить, brew unlink nodeчтобы отсоединить текущую версию.

Анант Симран Сингх
источник
1
Каким будет преимущество, если вы сделаете это таким образом, в отличие от использования brew (как описано в нескольких других ответах) или удаления узла, а затем его установки вручную (как описано в ответе @ Terente-Ionut-Alexandru)?
Джон Н
@JohnN brew версии устарели на данный момент. Его альтернативы не очень легко понять. Кроме того, через brew довольно сложно установить точную версию.
Анант Симран Сингх
@ Paweł-Gościcki ответ (самый высокий рейтинг, 140 голосов) кажется очень простым для понимания и совсем не сложным - что соответствует моему недавнему опыту с brew и различными версиями формул. Я хочу сказать, что ваш ответ, кажется, не добавляет ничего к тому, что еще не было сказано в других ответах - разве есть причина, чтобы отсоединить + ручную установку вместо удаления + ручной установки, как предложил Терент?
Джон Н
@JohnN Это, конечно, легко понять. Но вы будете ограничены опциями, которые дает brew search. Например, если вам нужен именно узел 4.4.6, но brew предоставит только опцию node @ 4. Следовательно.
Анант Симран Сингх
Я думаю, что есть 3 достойных ответа на вопрос: (1) использовать brew, (2) использовать nvm и (3) удалить и установить вручную. То, что я пытаюсь заставить вас сделать, это объяснить, почему ваш ответ добавляет к этим существующим ответам. Почему вы считаете, что отмена ссылки + установка вручную предпочтительнее существующих ответов? В частности, почему вы чувствуете, что * удаление связей * + установка вручную лучше, чем * удаление * + установка вручную, как предполагает ответ Terente?
Джон Н