¿Cómo rebajo el nodo o instalo una versión previa específica usando homebrew?

230

Estoy usando cerveza. Tengo un nodo instalado, usando brew. Quiero usar una versión anterior del nodo.

En línea, encuentro instrucciones como , por ejemplo :

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

El problema que tengo con esto es que brewno parece tener un versionssubcomando:

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

Soy nuevo en la elaboración de cerveza. ¿Necesito habilitar el versionssubcomando de alguna manera? ¿Debo usar un subcomando diferente en su lugar? ¿Hay algún método completamente diferente que deba probar?

Estoy ejecutando OS X Yosemite (10.10.1); preparar 0.9.5.

dave4420
fuente
¿Qué versión de node.js quieres instalar?
bmike
Mi jefe me dice 10.32. Supongo que quiere decir 0.10.32. Tengo 0.12.0 instalado ahora.
dave4420
En esta fecha, el lector debe ir a esta respuesta: stackoverflow.com/a/4158763/48136
Brice

Respuestas:

354

En estos días, si desea instalar una versión diferente node, hágalo de esta manera:

Primero busque su paquete deseado:

brew search node

Esto podría darle los siguientes resultados:

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

Y luego instale la versión deseada:

brew install node@8

Recuerde también que puede instalar más de 1 paquete de nodos al mismo tiempo, pero no puede tenerlos disponibles al mismo tiempo. Entonces, si ya tiene nodeinstalado el último paquete genérico , primero debe desvincularlo:

brew unlink node

Y luego puedes vincular una versión diferente:

brew link node@8

Para algunas versiones de nodos anteriores (que son solo de barril), puede ser necesario vincularlas con las opciones --forcey --overwrite:

brew link --force --overwrite node@8
Paweł Gościcki
fuente
10
La mejor respuesta aquí.
chovy
3
Tenga en cuenta que es posible que se le solicite "desvincular" una versión existente del nodo antes de poder instalar con éxito una de las otras versiones que figuran en la lista (según las instrucciones anteriores). Al "desvincular", deja la otra versión instalada físicamente en su sistema, pero la que instala (después del desvinculación) se convertirá en la versión "predeterminada" en su sistema. Por ejemplo, podría tener que escribir brew unlink nodesi lo hubiera instalado brew install node. Entonces podría hacerlo brew install homebrew/versions/node4-lts(lo que debería ver como una versión enumerada según las instrucciones de esta respuesta).
xmnboy
1
En lugar de homebrew/versions/node06ser ahora homebrew/versions/node6-lts. También hazlo brew link node6-lts.
akauppi
1
He actualizado mi respuesta para reflejar los últimos cambios de preparación. ¡Gracias!
Paweł Gościcki
2
pero ¿cómo podemos instalar una versión específica como el nodo 8.2.1 usando brew?
Nadav B
39

Aquí está paso a paso.

Para ver la versión actual de su nodo

$ node --version

Para ver las versiones de nodo disponibles

$ brew search node

Para desvincular de la versión actual

$ brew unlink node

Instale cualquier versión, por ejemplo, 8

$ brew install node@8

Para vincular la versión instalada

$ brew link node@8

Para ver la versión actual de su nodo (nuevamente)

$ node --version
katopz
fuente
Justo lo que necesitaba
Brian Colavito
¿Cómo resolver este problema? brew link node @ 10 Advertencia: node @ 10 es solo de barril y debe vincularse con --force Si necesita tener este software primero en su RUTA, considere ejecutar: echo 'export PATH = "/ usr / local / opt / nodo @ 10 / bin: $ PATH "'>> ~ / .bash_profile
vikramvi
no funcionó en Mac OS 10.13.5, obteniendo error stackoverflow.com/questions/53043476/…
vikramvi
15

A partir de este PR para homebrew / versiones y este PR para homebrew , las respuestas involucradas brew tap homebrew/versionso *-ltspaquetes ya no funcionan.

La respuesta correcta es ahora:

brew install node@<version>

¿Dónde <version>está 0.10, 0.12, 4, etc. Por ejemplo, para instalar Node.js v6 (a partir de este escrito, la más reciente versión LTS):

brew install node@6

Es posible que deba ejecutar brew updateantes de estos comandos para asegurarse de que estas nuevas fórmulas versionadas estén disponibles. Si tiene nodeinstalada otra versión de la fórmula, también deberá ejecutarla brew unlink nodeprimero.

John
fuente
3
no funcionó con Mac OS 10.13.5 stackoverflow.com/questions/53043476/…
vikramvi
11

brew versionstiene que instalarse en algún momento después de la instalación brew.

$ brew tap homebrew/boneyard

Luego puede usar el brew versionscomando como asumen las instrucciones.

dave4420
fuente
44
homebrew/boneyardestá desactualizado y será reemplazado por github.com/Homebrew/homebrew-versions a partir de marzo de 2015. Instalar a través de brew tap homebrew/versions.
Jakub Holý
12
Con homebrew/versionsobtendrá el nombre del paquete de versionado: brew search node => leafnode node node010 node04 node06 node08 nodebrew .... Entonces, brew install node010siga brew link --overwrite node010para instalar la versión 0.10 de Node.JS.
Jakub Holý
3
También puede ser que necesite brew unlink nodeantesbrew install node010
chananelb
10

Para su información, si anteriormente tenía instalada la versión anterior y no se ha ejecutado brew cleanup(lo que elimina las versiones anteriores), puede cambiar con algo comobrew switch node 5.7.0

Todas las versiones instaladas del nodo se pueden enumerar ejecutando brew info nodeols -l /usr/local/Cellar/node/

Vea la hoja de trucos del comando brew: http://ricostacruz.com/cheatsheets/homebrew.html

Loren
fuente
Funciona a partir de 2017/12! Homebrew 1.4.0-17-gc912d26
Jason Harrison
5

Si lo necesita solo específicamente para Node, puede usarlo nvm. Es muy conveniente si trabajas mucho con Node.

mik01aj
fuente
Según nvm docs brew y nvm no son un combo compatible. Comenté sobre esto aquí. github.com/angular/angular-cli/issues/… Estaría interesado en escuchar historias de guerra sobre esto. Porque en la superficie parece que esto funciona a pesar del hecho de que "no es compatible"
JGFMK
3

Puedes hacerlo sin homebrew.

Puede desinstalar y luego instalar el nodo manualmente.

Tienes que descargar tu versión actual en ejecución. Aquí está la lista .

Descargue el nodo-v {su-número-versión-actual} .tar.gz, extráigalo y luego vaya a la línea de comandos.

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

Para desinstalarlo sudo make uninstall

Luego descargue la versión que desea instalar y siga los mismos pasos anteriores.

De esta publicación de blog

Terente Ionut Alexandru
fuente
+1 esta respuesta. FWIW, solo pude copiar la bin/carpeta no ordenada a mi RUTA para que esto funcione.
Shicholas
Aún mejor, puede descargar el archivo .pkg desde allí y hacer doble clic para instalarlo.
Henrik N
3

Hay muchas respuestas aquí y en otros lugares que dicen usar versiones homebrew, pero eso le da opciones muy limitadas para qué versión de Node puede instalar.

Es mucho más fácil usar NVM y le permite cambiar entre versiones con mucha facilidad.

homebrew install nvm

Luego siga las instrucciones en las advertencias mkdir ~/.nvmy agregue dos líneas a su .bash_profileysource .bash_profile

Luego, simplemente ejecute nvm install <version>todas las versiones que necesita. Luego nvm use <version>para cambiar.

DSG
fuente
Esta no es la respuesta aceptada, pero es la única que funcionó para mí. Ojalá hubiera probado este primero, porque habría ahorrado mucho tiempo.
Alex
1

Imaginemos que tiene la versión 0.12. *. Para instalar (rebajar) la versión 0.10 del nodo, lanzar el brew en OSX, debe:

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

La lista de todas las versiones de nodo está aquí

1 instinto
fuente
1

La forma preferida en el mundo de NodeJS es usar la herramienta n

  • Instalación: npm install -g n
  • Instalar Nodo 8.8.4 n 8.8.4
  • Enumere todas sus versiones de nodo disponibles localmente y elija una: n

Parece similar a nvm, pero tuve problemas nvmy ntrabajé fuera de la caja.

Peter Ilfrich
fuente
0

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

Puede ir aquí e instalar la versión que necesita.

Antes de instalar, es posible que desee ejecutar brew unlink nodepara desvincular la versión actual.

Anant Simran Singh
fuente
1
¿Cuál sería la ventaja de hacerlo de esta manera, en lugar de usar brew (como lo describen varias otras respuestas) o desinstalar el nodo y luego instalarlo manualmente (como se describe en la respuesta de @ Terente-Ionut-Alexandru)?
John N
Las versiones breves de @JohnN están en desuso desde ahora. Sus alternativas no son muy fáciles de entender. Además, es un poco complejo a través de brew instalar la versión exacta.
Anant Simran Singh
La respuesta de @ Paweł-Gościcki (la mejor calificada, con 140 votos) parece muy fácil de entender y nada compleja, lo que coincide con mi experiencia reciente con brew y diferentes versiones de fórmulas. Mi punto es que su respuesta no parece agregar a nada que no se haya dicho en otras respuestas, a menos que haya una razón para desvincular + instalar manualmente en lugar de desinstalar + instalar manualmente, como sugirió Terente.
John N
@ John Eso, por supuesto, es fácil de entender. Pero estará limitado por las opciones que ofrece la búsqueda. Por ej. si desea el nodo 4.4.6 exactamente, pero la preparación solo proporcionará una opción de nodo @ 4. Por lo tanto.
Anant Simran Singh
Creo que hay 3 respuestas decentes a la pregunta: (1) usar brew, (2) usar nvm y (3) desinstalar e instalar manualmente. Lo que estoy tratando de hacer es explicar por qué su respuesta se agrega a estas respuestas existentes. ¿Por qué cree que es mejor desvincular + instalar manualmente que las respuestas existentes? Específicamente, ¿por qué cree que * desvincular * + instalar manualmente es mejor que * desinstalar * + instalar manualmente, como sugiere la respuesta de Terente?
John N