Codi font en execució

Instal·lar Node 14.x LTS de nodesource a Devuan

Tradicionalment les distribucions han portat sempre versions força antigues de node. Per poder desenvolupar fent servir les eines actuals, fins ara sempre manegava les versions de node instal·lades amb nvm o darrerament amb fnm, ambdues són prou útils si et cal anar canviant de versió segons el projecte.

El problema que els hi trobo, que al no estar integrades amb el sistema de paquets sempre has d'anar actualitzant-les manualment, a banda que utilitzen enllaços o paths estranys i per configurar-ho als IDEs també és una tocada de pera.

Com que als nostres servidors ja només hi tinc la 14.x LTS, li he dit a la canalla que si hi volen posar alguna cosa ja saben que ha de funcionar amb aquesta versió. Que els joves ja se sap, sempre volen estar a la última i tal...

Així que he aprofitat per fer neteja a casa meva també, m'he carregat nvms i fnms i llurs nodes que tenia desperdigats i m'he disposat a instal·lar el node fent servir els binaris oferts per la gent de nodesource, que a més són dels pocs repos que he vist que suporten explícitament Devuan, així que moltes gràcies!

Seguim les instruccions:

# Using Debian, as root
curl -sL https://deb.nodesource.com/setup_lts.x | bash -

I pel mig de la sortida veiem

## You seem to be using Devuan version beowulf.
## This maps to Debian "buster"... Adjusting for you...

## Confirming "buster" is supported...

+ curl -sLf -o /dev/null 'https://deb.nodesource.com/node_14.x/dists/buster/Release'

## Adding the NodeSource signing key to your keyring...

+ curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
OK

## Creating apt sources list file for the NodeSource Node.js 14.x repo...

+ echo 'deb https://deb.nodesource.com/node_14.x buster main' > /etc/apt/sources.list.d/nodesource.list
+ echo 'deb-src https://deb.nodesource.com/node_14.x buster main' >> /etc/apt/sources.list.d/nodesource.list

Cony doncs sí que ens reconeix! Però abans de saltar d'alegria, quan anem a instal·lar ens trobem que apt-get vol instal·lar la 10 que és la que ve amb la distro.

A la doc ens diu de fer un apt-get install -y nodejs però, serà per l'edat, a mi m'agrada fer un dry-run abans per veure què passarà:

root@coders ~ # apt-get install --dry-run nodejs
S'està llegint la llista de paquets… Fet 
S'està construint l'arbre de dependències       
S'està llegint la informació de l'estat… Fet
S'instal·laran els següents paquets extres:
  libc-ares2 libnode64 libuv1 nodejs-doc
Paquets suggerits:
  npm
S'instal·laran els paquets NOUS següents:
  libc-ares2 libnode64 libuv1 nodejs nodejs-doc
0 actualitzats, 5 nous a instal·lar, 0 a suprimir i 0 no actualitzats.
Inst libc-ares2 (1.14.0-1 Devuan:3.0/stable [amd64])
Inst libuv1 (1.24.1-1 Devuan:3.0/stable [amd64])
Inst libnode64 (10.21.0~dfsg-1~deb10u1 Devuan:3.0/stable [amd64])
Inst nodejs (10.21.0~dfsg-1~deb10u1 Devuan:3.0/stable [amd64])
Inst nodejs-doc (10.21.0~dfsg-1~deb10u1 Devuan:3.0/stable [all])
Conf libc-ares2 (1.14.0-1 Devuan:3.0/stable [amd64])
Conf libuv1 (1.24.1-1 Devuan:3.0/stable [amd64])
Conf libnode64 (10.21.0~dfsg-1~deb10u1 Devuan:3.0/stable [amd64])
Conf nodejs (10.21.0~dfsg-1~deb10u1 Devuan:3.0/stable [amd64])
Conf nodejs-doc (10.21.0~dfsg-1~deb10u1 Devuan:3.0/stable [all])

Mirem la policy:

root@coders ~ # apt-cache policy nodejs
nodejs:
  Instal·lat: (cap)
  Candidat:   10.21.0~dfsg-1~deb10u1
  Taula de versió:
     14.15.4-1nodesource1 500
        500 https://deb.nodesource.com/node_14.x buster/main amd64 Packages
     10.23.1~dfsg-1~deb10u1 500
        500 http://deb.devuan.org/merged beowulf-security/main amd64 Packages
     10.21.0~dfsg-1~deb10u1 990
        990 http://deb.devuan.org/merged beowulf/main amd64 Packages

Així que ens toca fer "Pinning" del packet nodejs perquè es decideixi a instal·lar la 14 de nodesource, per fer-ho creem un nou fitxer a /etc/apt/preferences.d/nodejs amb el següent contingut:

Package: nodejs
Pin: release n=buster
Pin-Priority: 1001

Alternativament es podria instal·lar fent servir la opció -t de l'apt tal que apt-get install -t buster nodejs, però llavors hi haurem de pensar cada vegada també...

Mirem ara:

root@cell ~ # apt-cache policy nodejs
nodejs:
  Instal·lat: (cap)
  Candidat:   14.15.4-1nodesource1
  Taula de versió:
     14.15.4-1nodesource1 1001
        500 https://deb.nodesource.com/node_14.x buster/main amd64 Packages
     10.23.1~dfsg-1~deb10u1 500
        500 http://deb.devuan.org/merged beowulf-security/main amd64 Packages
     10.21.0~dfsg-1~deb10u1 990
        990 http://deb.devuan.org/merged beowulf/main amd64 Packages

Molt millor, ara sí que podem instal·lar-lo:

root@cell ~ # apt install nodejs
S'està llegint la llista de paquets… Fet 
S'està construint l'arbre de dependències       
S'està llegint la informació de l'estat… Fet
S'instal·laran els paquets NOUS següents:
  nodejs
0 actualitzats, 1 nous a instal·lar, 0 a suprimir i 0 no actualitzats.
S'ha d'obtenir 24,6 MB d'arxius.
Després d'aquesta operació s'empraran 119 MB d'espai en disc addicional.
Bai:1 https://deb.nodesource.com/node_14.x buster/main amd64 nodejs amd64 14.15.4-1nodesource1 [24,6 MB]
S'ha baixat 24,6 MB en 1s (20,2 MB/s)
S'està seleccionant el paquet nodejs prèviament no seleccionat.
(S'està llegint la base de dades… hi ha 191814 fitxers i directoris instal·lats actualment.)
S'està preparant per a desempaquetar …/nodejs_14.15.4-1nodesource1_amd64.deb…
S'està desempaquetant nodejs (14.15.4-1nodesource1)…
S'està configurant nodejs (14.15.4-1nodesource1)…
S'estan processant els activadors per a man-db (2.8.5-2)…

Genial

root@cell ~ # which node
/usr/bin/node
root@cell ~ # node -v
v14.15.4
root@cell ~ # which npm
/usr/bin/npm
root@cell ~ # npm -v
6.14.10