Il y a quelque temps déjà, j'avais présenté l'utilitaire stow. Mais avec les distributions Linux récentes cet utilitaire avait peu d’intérêt tant l'usage d'apt-get install suffisait la majorité du temps. Mais voilà, avec NodeJS, on ne peut pas attendre que la dernière version soit packagée pour l'utiliser. Il faut donc l'installer soit même, et si il existe plusieurs méthodes, aucune ne permet de changer de version de nodejs en un fragment de seconde. Démonstration !
STOW
Stow permet de recréer une arborescence système à l'aide de liens symboliques. Ces liens pointent sur un répertoire isolé et ils sont générés automatiquement à l'aide d'une simple commande.
Pré requis système
Pour installer et compiler NodeJS, il faut vérifier que les paquets g++ et libssl-dev sont installés.
#!/bin/sh sudo apt-get install g++ libssl-dev
Installation de STOW
#!/bin/sh
# CHOOSE THE VERSION YOU WANT
export STOW_VERSION=1.3.3
mkdir ~/local/stow
mkdir -p ~/local/src
mkdir ~/local/bin
mkdir ~/local/info
mkdir ~/local/etc
mkdir ~/local/include
mkdir ~/local/share
mkdir ~/local/share/man
mkdir ~/local/lib
mkdir ~/local/man
mkdir ~/local/man/man1
mkdir ~/local/man/man2
mkdir ~/local/man/man3
mkdir ~/local/man/man4
mkdir ~/local/man/man5
mkdir ~/local/man/man6
mkdir ~/local/man/man7
mkdir ~/local/man/man8
cd ~/local/src
curl http://ftp.gnu.org/gnu/stow/stow-${STOW_VERSION}.tar.gz | tar -xzf -
cd stow-${STOW_VERSION}
./configure --prefix=~/local/stow/stow-${STOW_VERSION}
make
make install
cd ~/local/stow/
./stow-1.3.3/bin/stow stow-1.3.3
echo "export PATH=\$HOME/local/bin:\${PATH:=}" >> ~/.profile
echo "export MANPATH=\$HOME/local/man:\${MANPATH:=}" >> ~/.profile
echo "export LD_LIBRARY_PATH=\$HOME/local/lib:\${LD_LIBRARY_PATH:=}" >> ~/.profile
export PATH=$HOME/local/bin:${PATH:=}
export MANPATH=$HOME/local/man:${MANPATH:=}
export LD_LIBRARY_PATH=$HOME/local/lib:${LD_LIBRARY_PATH:=}
NodeJS
NodeJS doit être compilé manuellement pour bénéficier des dernières versions. On va donc compiler et installer chaque version dans un répertoire spécifique.
Installation de NodeJS pour STOW
#!/bin/sh
# CHOOSE THE VERSION YOU WANT
export NODEJS_VERSION=0.6.1
mkdir -p ~/local/lib/node_modules
cd ~/local/src
curl http://nodejs.org/dist/v${NODEJS_VERSION}/node-v${NODEJS_VERSION}.tar.gz | tar -xzf -
cd ~/local/src/node-v${NODEJS_VERSION}
./configure --prefix=~/local/stow/node-${NODEJS_VERSION}
make
make install
# Careful, check if stow is installed
cd ~/local/stow
stow node-${NODEJS_VERSION}
echo "export NODE_PATH=\$HOME/local:\$HOME/local/lib/node_modules" >> ~/.profile
export NODE_PATH=$HOME/local:$HOME/local/lib/node_modules
Changer de version facilement
Maintenant tester une nouveau version de NodeJS est très simple :
$ node -v v0.4.11 $ cd ~/local/stow $ stow -D node-0.4.11 $ stow node-0.6.1 $ node -v v0.6.1
Aïe.
RépondreSupprimerÇa n'a pas marché.
J'ai fait
$ cd ~/local/stow
$ stow -D node-v0.6.1
$ stow -D node-v0.6.1
$ stow node-v0.6.15
Et hop! Un conflit:
stow: CONFLICT: /home/parmentf/local/stow/node-v0.6.15/lib/node_modules/npm/configure vs. /home/parmentf/local/lib/node_modules/npm/configure
Ça serait à cause des modules npm globaux?