73 votes

npm / yeoman installer générateur angulaire sans sudo

J'ai essayé d'installer generator-angularjs en utilisant Yo ( Yoeman ) sans sudo :

 npm install -g generator-angular
 

Je reçois:

 Error: EACCES, mkdir '/usr/lib/node_modules/generator-angular'
 

Quand je tape sudo yo , yo me dit que je ne devrais pas utiliser sudo (ce qui est parfaitement compréhensible).

J'ai un répertoire ~/node_modules - pourquoi vous n'y installez pas ses paquets?

171voto

passy Points 3844

Les générateurs sont conçus pour être installés à l'échelle mondiale. Sinon, vous avez toujours installer le générateur que vous vous apprêtez à utiliser dans chaque projet, ce qui est inutilement douloureux. Aussi, vous n'avez pas la chance de voir de la belle - yo menu qui liste tous les générateurs (sauf, bien sûr, de les installer tous en local):

yo

La configuration de la ngp pour l'installation globale

Alors, comment pouvons-nous obtenir npm pour installer des paquets à l'échelle mondiale? Comme vous l'avez justement dit, vous ne devriez jamais, jamais couru yo avec sudo. Il y a beaucoup de différentes solutions à ce problème et vous pouvez passer des heures à discuter de leurs avantages et inconvénients religieusement.

Personnellement, je l'aversion de l'installation de mon utilisateur paquets dans le global /usr/ le dossier. /usr/ est un logiciel qui est partagé entre tous les utilisateurs de l'ordinateur. Même si c'est seulement à l'aide de l'utilisation de la machine, il y a toujours de bonnes raisons de respecter la façon dont le système de fichiers Unix hiérarchie est conçu. Par exemple, si vous décidez à un moment pour essuyer l'ensemble de votre installation de nœud.

Ma façon préférée de l'activation npm pour installer des paquets à l'échelle mondiale , sans sortir de l' $HOME est de définir un nœud local préfixe. C'est aussi simple que ça

echo prefix = ~/.node >> ~/.npmrc

dans votre shell. Après que, vous souhaitez régler votre $PATH, pour pointer vers la nouvelle destination de l'installation pour le mondial nœud exécutables par l'ajustement de votre shell favori de la config. E. g. en ajoutant

export PATH="$PATH:$HOME/.node/bin"

pour votre ~/.bashrc. Après cela, vous pouvez joyeusement npm install -g generator-angular sans sudo, sans la permission des conflits et, si quelque chose est complètement cassé et que vous voulez commencer à partir de zéro, tout ce que vous devez faire est de retirer votre ~/.node répertoire.

27voto

pagetribe Points 5071

Grâce à @passy, j’ai enfin réussi à faire fonctionner cela sur Ubuntu 13.04 (au cas où quelqu'un aurait des problèmes de configuration similaires) avec les éléments suivants:

 sudo apt-get update
sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
 

essayant de courir:

 npm install -g yo
 

abouti à

 Error: EACCES, mkdir '/usr/lib/node_modules/yo'
 

Correction à l'aide de:

 echo prefix = ~/.node >> ~/.npmrc
echo 'export PATH=$HOME/.node/bin:$PATH' >> ~/.bashrc 
. ~/.bashrc
 

Fonctionnement:

 yo webapp
 

abouti à:

 Error: EACCES, permission denied '/home/username/.config/configstore/update-notifier-yo.yml'
 

Correction à l'aide de:

 sudo chown yourusername:yourusername /home/yourusername/.config/configstore/update-notifier-yo.yml
 

0voto

pukoo Points 76

salut dans mon cas (sur Ubuntu 12.04), l’addition de préfixe dans ~ / .npmrc n’a rien changé.

Si tel est le cas, construisez vous-même le package de nœuds et installez-le dans / opt / node ou /home/user/.node .

0voto

Sean Points 1

J'ai eu presque la même erreur impliquant un voyou .yo-rc.json fichier dans mon répertoire racine d'un projet que j'ai déjà installé. Yeoman est la commutation de la mdc de l'installation dir répertoire racine de la moitié du chemin par le biais de l'installation, mais seulement de la sortie de la EACCESS autorisations d'erreur sans plus de détails que le répertoire d'installation a été /. Il a fallu une éternité pour comprendre pourquoi cela a été, et participent de débogage à travers le Yeoman source, mais j'ai finalement appris que Yeoman va chercher dans le répertoire de l'arbre jusqu'à ce qu'il trouve un .yo-rc.json, et de générer le code, il y en appelant chdir vers le nouvel emplacement.

Yeoman devrait peut-être vérifier que l'utilisateur a des droits d'écriture pour le répertoire. Sinon, il peut le mentionner dans la sortie, soit que le mdc a changé, ou d'imprimer le nom du répertoire d'installation, si, lorsqu'il estime .yo-rc.json est différent de celui de la mdc.

La commande pour trouver rogue .yo-rc.des fichiers json

sudo find / -name .yo-rc.json

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X