NPM & Bower: pourquoi je ne suis pas sudo ?

Parfois, j'aimerai que la vie soit comme dans cette illustration de XKCD:



Malheureusement, parfois, nous ne sommes pas sudo :'(

Du coup, il arrive parfois sur nos environnements de CI ou tout simplement sur nos postes locaux que nous ayons des erreurs du style "run the command as admin".

En fouillant un peu la documentation, on s'aperçoit que c'est un besoin inhérent, et NPM et Bower ont prévu le coup.



Pour Bower, il existe une option "allow-root" qui permet de lancer une ligne de commande en étant "sudo".

Personnellement, il a fallu que je l'utilise sur un CI jenkins où bizarrement, la configuration était telle que nous ne pouvions pas télécharger les dépendances Bower sans être sudo. Du coup au lieu de:

> bower install

Il suffit de faire

> bower install --allow-root



Pour NPM, c'est un peu différent. Il existe une option que nous pouvons définir soit dans nos fichiers ".npmrc" en tant que "unsafe-perm", soit en paramètre de commande avec "--unsafe-perm" qui est "unsafe-perm" (je crois que vous l'aviez deviné).

Voici ce que dit NPM:

If npm was invoked with root privileges, then it will change the uid to the user account or uid specified by the user config, which defaults to nobody. Set the unsafe-perm flag to run scripts with root privileges.


Autrement dit, lancer la commande suivante n'est pas toujours suffisante:
> sudo npm install

En effet, elle n'est pas suffisante si l'installation d'un package doit faire des actions supplémentaires, comme lancer un node-gyp (voir cette issue ou celle-là du module sharp).

Du coup, si nous ne voulons pas avoir de soucis, il suffit de faire
> sudo npm install --unsafe-perm



Commentaires

Posts les plus consultés de ce blog

ISO: liens & outils utiles

NodeJs et SSL: une petite analyse

Créer sa commande slack en quelques minutes