139 votes

Modules de NGP a remporté ' t install dans le monde sans sudo

Je viens de réinstallé Ubuntu 12.04 LTS, et avant toute chose, j'ai fait ces étapes:

  1. Noeud installé via le gestionnaire de package avec le script suivant

    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
    
  2. Essayé d'installer yeoman, l'express, n, yeoman de générateurs à l'échelle mondiale et tous retourné la même erreur

    npm ERR! Erreur: EACCES, lien symbolique '../lib/node_modules/n/bin/n'

    npm ERR! { [Erreur: EACCES, lien symbolique '../lib/node_modules/n/bin/n'] errno: 3, code: 'EACCES', path: '../lib/node_modules/n/bin/n' }

    npm ERR!

    npm ERR! S'il vous plaît essayer de l'exécution de cette commande en tant que root/Administrateur.

    npm ERR! Système Linux 3.8.0-29-generic

    npm ERR! la commande "/usr/bin/node" et "/usr/bin/mnp" "installer"- g" "-d" "n"

    npm ERR! cwd /home/heberlz

    npm ERR! nœud -v v0.10.20

    npm ERR! npm-v 1.3.11

    npm ERR! chemin ../lib/node_modules/n/bin/n

    npm ERR! code EACCES

    npm ERR! errno 3

    npm ERR! la pile d'Erreur: EACCES, lien symbolique '../lib/node_modules/n/bin/n'

    npm ERR!

    npm ERR! La journalisation supplémentaire de détails peuvent être trouvés dans:

    npm ERR! /home/heberlz/npm-debug.journal

    npm ERR! pas ok code 0

  3. Récupéré la propriété de ces dossiers de manière récursive ~/.npm, /usr/lib/node /usr/lib/node_modules, ainsi que des liens symboliques dans /usr/bin/node /usr/bin/nodejs avec absolument aucun succès

J'ai besoin d'installer yeoman et ses générateurs sans sudo ne pas être en difficulté plus tard :(

329voto

ErikAndreas Points 1056

Ubuntu 12.04 et à l’aide PPA de Chris Lea pour installent les ouvrages suivants pour moi :

et en ajoutant $HOME/NGP/bin à $PATH

Ajouter à``

Voir http://stackoverflow.com/a/18277225 de @passy

23voto

Tony O'Hagan Points 1330

Si vous avez déjà $HOME/bin dans votre chemin d'accès, une solution plus simple est juste ...

npm config set prefix ~
  • Nouveau nœud commandes va maintenant installer dans votre $HOME/bin répertoire.
  • Pas besoin de changer votre chemin!

Depuis cette discussion est vraiment à propos de la réduction des risques de sécurité de l'exécution de sudo, vous devriez aussi être conscient que n'importe quel nœud de l'app pourrait être l'installation d'un nom de l'application qui ne correspond pas au enregistrés nœud nom de package que vous pensez que vous êtes en train d'installer. Il y a donc un risque de sécurité qu'un npm install permettra de remplacer un système existant de commande ou celui que vous avez déjà en $HOME/bin. Si vous êtes concerné, vérifier l' bin, et scripts propriétés en package.json le fichier de l'application que vous êtes en train d'installer en premier.

En général, il est plus sûr d':

  • (a) $HOME/bin dernière dans votre chemin d'accès pour le système de commandes ne sont pas remplacées.
  • (b) ne comprennent pas "." ou n'importe quel chemin d'accès relatif dans votre $PATH de sorte que vous n'avez pas accidentellement exécuter une commande qui arrive à être dans le répertoire courant.

Référence:

12voto

Andrei Karpushonak Points 2364

Comme pour le mois d'octobre 2014:

Node.js est disponible à partir de la NodeSource Debian et Ubuntu, la distribution binaire de référentiel.

curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install -y nodejs

C'est tout.

La réponse dépassée:

Le moyen le plus rapide sans l'utilisation de sudo est comme décrit ici par isaac

Je vous encourage fortement à ne pas faire de gestion des paquets avec sudo! Les paquets peuvent exécuter des scripts, ce qui rend sudoing un paquet le gestionnaire de commande de sécurité de la tronçonneuse coupe de cheveux. Bien sûr, c'est rapide et va certainement couper à travers tous les obstacles, mais vous pourriez en fait voulez que obstacle à y rester.

Je recommande de faire cette fois-ci à la place:

sudo chown -R $USER /usr/local

EDIT:

Il y a certaines préoccupations en matière de sécurité et les limitations de fonctionnalités concernant la modification de la propriété de /usr/local à l'utilisateur en cours:

Cela dit, si vous voulez installer un module global sans l'aide de sudo, je ne vois pas de meilleure solution (du point de vue pragmatique) que ceux mentionnés. Sécurité vs facile d'utilisation est très vaste sujet, et il n'y a pas de réponse facile pour qui il est tout dépend de vos besoins.

11voto

HeberLZ Points 631

Le problème est que j'ai installé le nœud à l'aide de sudo, pour éviter les erreurs lors de l'installation de modules npm globalement il ne FAUT JAMAIS installer nœud avec sudo.

Ma solution a été de réinstaller le nœud de cette façon:

Télécharger la dernière version stable nœud sources de nodejs.org #dans mon cas node-v0.10.20.tar.gz

tar-zxf node-v0.10.20.tar.gz #décompresser les sources

cd nœud-v0.10.20 #entrer un dossier non compressé

sudo chown -R $USER /usr/local

./configure --prefix=/usr/local && make && make install

Une chose à noter est que seule la prise de possession de l' /usr/local dossier ne fonctionne pas dans mon cas car l'installation du nœud lui-même a été faite avec sudo

Dernière étape pour installer yeoman: #bien qu'à yeoman.io il est dit que faire de la "npm install-g yo" déjà installe bower et grunt, il y a quelques submodules de grognement qui ne parviennent pas, donc j'ai corrigé que par l'installation elle-même

npm install-g bower

npm install-g grunt

npm install-g yo

npm install-g générateur-angulaire

5voto

santervo Points 86

J’ai résolu ce problème avec la variable d’environnement shell alias :

Pour moi la NGP n’a pas honoré le paramètre de configuration « préfixe » dans .npmrc.

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