Як змінити рівень вузла або встановити певну попередню версію за допомогою homebrew?


228

Я використовую заварку. У мене встановлений вузол, використовуючи варити. Я хочу використовувати більш ранню версію вузла.

В Інтернеті я знаходжу такі інструкції , як , наприклад :

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.


Яку версію node.js ви хочете встановити?
bmike

Мій начальник каже мені 10.32. Я думаю, він має на увазі 0.10.32. У мене зараз встановлено 0.12.0.
dave4420

У цю дату читач повинен перейти до цієї відповіді: stackoverflow.com/a/4158763/48136
Бріс

Відповіді:


352

У ці дні, якщо ви хочете встановити іншу версію, 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
найкраща відповідь тут.
chovy

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
Я оновив свою відповідь, щоб відобразити останні зміни варіння. Дякую!
Paweł Gościcki

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

Тільки те, що мені було потрібно
Брайан Колавіто

Як вирішити це питання? вузол заварювання посилання @ 10 Попередження: вузол @ 10 є лише кегом і повинен бути пов’язаний з --force Якщо вам потрібно спочатку це програмне забезпечення у вашому PATH замість цього, розгляньте запуск: echo 'export PATH = "/ usr / local / opt / node @ 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спочатку.


2
не працює з Mac OS 10.13.5 stackoverflow.com/questions/53043476 / ...
vikramvi

11

brew versionsмає бути встановлено в якийсь момент після встановлення brew.

$ brew tap homebrew/boneyard

Потім ви можете використовувати brew versionsкоманду, як передбачають інструкції.


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встановити 0.10 версію Node.JS.
Якуб Холі

3
Крім того, можливо , буде потрібно brew unlink nodeперед вамиbrew install node010
chananelb

10

FYI, якщо у вас раніше була встановлена ​​стара версія та не запущена brew cleanup(яка видаляє старі версії), ви можете переключитися з чимось на зразокbrew switch node 5.7.0

Всі встановлені версії вузла можуть бути перераховані за допомогою запуску brew info nodeабоls -l /usr/local/Cellar/node/

Дивіться чіт-лист команд brew: http://ricostacruz.com/cheatsheets/homebrew.html


Працює станом на 2017/12! Homebrew 1.4.0-17-gc912d26
Джейсон Гаррісон

5

Якщо вам це потрібно спеціально для Node, ви можете використовувати nvm. Це дуже зручно, якщо ви багато працюєте з Node.


Згідно з nvm, документи piw і nvm не підтримуються комбо. Я прокоментував це тут. github.com/angular/angular-cli/isissue/… Мені було б цікаво почути будь-які історії війни з цього приводу. Тому що на перший погляд у мене це працює, незважаючи на те, що він "не підтримується"
JGFMK

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 відповісти. FWIW, мені вдалося скопіювати bin/папку " untartar" в мій PATH, щоб це працювало.
шичоли

Ще краще, ви можете завантажити файл .pkg звідти і двічі клацнути його, щоб встановити.
Генрік N

3

Якщо у вас виникли проблеми з домашньою мовою, щоб встановити будь-яку версію вузла, ви можете просто завантажити .pkg файл для OSX з https://nodejs.org/dist/ evidenceVERSION_YOU_NEED ] . Це лише допомагає мені перевстановити вузол


3

Тут є багато відповідей та інших місць, які говорять про використання homebrew-версій, але це дає дуже обмежені варіанти, для якої версії Node ви можете встановити.

Набагато простіше використовувати NVM, і це дозволяє дуже легко перемикатися між версіями.

homebrew install nvm

Потім дотримуйтесь інструкцій із застережень - mkdir ~/.nvmі додайте два рядки до свого .bash_profileтаsource .bash_profile

Потім просто запустіть nvm install <version>всі необхідні версії. Потім nvm use <version>перейти.


Це не прийнята відповідь, але це єдиний, хто працював на мене. Мені б хотілося, що я спробував це першим, бо я б заощадив багато часу.
Алекс

1

Давайте уявимо, що у вас версія 0,12. *. Щоб встановити (понизити) версію 0,10 вузла, киньте заварку в OSX, ви повинні:

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

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


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
Яка перевага була б зробити це таким чином, на відміну від використання пива (як описано в кількох інших відповідях) або видалення вузла, а потім його встановлення вручну (як описано у відповіді Теренте-Іонут-Олександру)?
Джон N

Версії пивоваріння @JohnN застаріли на даний момент. Його альтернативи не дуже легко зрозуміти. Крім того, це щось складне за допомогою варіння, щоб встановити точну версію.
Анант Сімран Сінгх

@ Відповідь Paweł-Gościcki (найвища оцінка, зі 140 голосами) здається дуже простою для розуміння, і зовсім не складною - що відповідає моєму недавньому досвіду з варивом та різними версіями формул. Моя думка полягає в тому, що ваша відповідь, здається, не додає до того, що вже не було сказано в інших відповідях - хіба є причина для від’єднання + встановлення вручну, а не видалення + встановлення вручну, як запропонував Terente?
Джон N

@JohnN Звичайно, це легко зрозуміти. Але ви будете обмежені варіантами, які дає пошук заваркою. Наприклад, наприклад. якщо ви точно хочете вузол 4.4.6, але заварка надасть лише параметр node @ 4. Звідси.
Анант Сімран Сінгх

Я думаю, є 3 гідних відповіді на питання: (1) використовувати brew, (2) використовувати nvm та (3) видалити та встановити вручну. Те, що я намагаюся змусити вас зробити, - це пояснити, чому ваша відповідь додає до цих існуючих відповідей. Чому ви вважаєте, що відключення + встановлення вручну є кращим порівняно з існуючими відповідями? Зокрема, чому ви вважаєте, що * від’єднання * + встановлення вручну краще, ніж * видалення * + встановлення вручну, як підказує відповідь Теренте?
Джон N
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.