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?