Actualizando Node v0.10.xx a v4.4.7

September 26, 2016

Desarrolladores  Javascript  Guias 


Nosotros, en este portal, utilizamos Ghost para mantenernos comunicados, y al actualizar el sitio a la última versión, nos encontramos con la noticia de que la siguiente versión sólo soportará Node.js 4 (v4.4.7).

[TL;DR]: Si sos un desarrollador, la mejor opción es utilizar NVM (Node Version Manager), las instrucciones están al final de esta entrada

Esto implica, como la mayoría de las veces, que existen cambios entre las versiones que van a terminar rompiendo el entorno, y si eso llegase a pasar, volver atrás sería aún más complejo.

Para quienes no lo sepan, Node.js es una plataforma open source muy popular para crear aplicaciones del lado del servidor de una formar muy sencilla y rápida. Está construido sobre el motor de JS de Google V8, está orientado a eventos y posee un modelo de lectura-escritura no bloqueante.

En este artículo, veremos 2 métodos diferentes para actualizar o instalar una versión de Node.js específica en un servidor CentOS 7.

Requisitos

Un usuario con permisos de root

Instalando Node desde un RPM

El repositorio NodeSource contiene paquetes binarios RPM de Node.js para CentOS 7. NodeSource posee repositorios diferentes para las versiones de Node.js 5.x, 4.x, 0.12.x y 0.10.x.

Los comandos siguientes agregan el repositorio YUM para cada uno de las ramas que querramos utilizar:

Node.js 5.x

curl -sL https://rpm.nodesource.com/setup_5.x | bash -

Node.js 4.x

curl -sL https://rpm.nodesource.com/setup_4.x | bash -

Node.js 0.12.x

curl -sL https://rpm.nodesource.com/setup_0.12 | bash -

Node.js 0.10.x

curl -sL https://rpm.nodesource.com/setup | bash -

Una vez ejecutado este comando, sólo debemos intalar el paquete de node y npm usando yum de la forma usual:

yum -y install nodejs npm

Y después verificamos la versión que hemos instalado:

node --version
npm --version

Instalar Node utilizando NVM

NVM (Node Version Manager) es un script BASH creado para instalar, ejecutar y gestionar múltiples versiones de Node.js, y es el método que personalmente recomendaría, sobre todo en un sistema de un desarrollador.

Para instalar NVM, lo hacemos con cualquiera de los siguientes comandos:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.30.1/install.sh | bash

Ó

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.30.1/install.sh | bash

Después lo agregamos a nuestro profile para poder comenzar a utilizarlo:

source ~/.bash_profile

Una vez instalado, podemos ver qué versiones de Node.js están disponibles en NVM ejecutando nvm ls-remote y veríamos una lista similar a esta:

...
v4.2.4
v4.4.7
v5.0.0
v5.1.0
v5.1.1
....

Con NVM podemos instarlar cualquiera de las versiones que estén en la lista, en nuestro caso, vamos a optar por la v4.4.7, y la instalamos así:

nvm install v4.4.7

Para instalar la versión más estable y reciente, lo hacemos con

nvm install stable

Para conocer las versiones que tenemos instaladas en nuestro sistema, lo hacemos con nvm list y nos mostrará algo similar a esto:

         v4.4.7
->       v5.3.0
         system
node -> stable (-> v5.3.0) (default)  
stable -> 5.3 (-> v5.3.0) (default)  
iojs -> N/A (default)  

La versión que está apuntando la flecha es la que está actualmente seleccionada.

Por último, para poder ir cambiando entre versiones, lo hacemos con:

nvm use v4.4.7

¡Y listo!

Conclusión

Para un desarrollador, el poder disponer de varias versiones de un mismo lenguaje de una forma tan simple, le da un abanico de posibilidades muy amplio para poder ir probando cómo afecta a su sistema el cambio de versión.

Como anécdota, al pasar de 0.10 a 4, ocasionó que el sitio dejase de funcionar, pero sólo porque hay que volver a ejecutar el comando npm install --production para que se actualicen los paquetes.

Y, como siempre, si necesitás concretar esa idea que anda dando vueltas en tu cabeza, o tenés alguna duda y no sabés a quién preguntarle, ponete en contacto con nosotros a contacto@cign.io, no serías la primer persona que nos pide un consejo ;)

Hasta la próxima.