Je viens de réinstaller Ubuntu 12.04 LTS, et avant tout, j'ai fait ces étapes:
Installé Node via le gestionnaire de paquets 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
J'ai essayé d'installer les générateurs yeoman, express, n, yeoman dans le monde entier et tous ont renvoyé 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', chemin: '../lib/node_modules/n/bin/n'}
npm ERR!
npm ERR! Veuillez essayer de réexécuter cette commande en tant que root/administrateur.
npm ERR! Système Linux 3.8.0-29-generic
npm ERR! commande "/ usr/bin/noeud" "/ usr/bin/npm" "installer" "-g" "-d" "n"
npm ERR! cwd/home/heberlz
npm ERR! noeud -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! Erreur de pile: EACCES, lien symbolique '../lib/node_modules/n/bin/n'
npm ERR!
npm ERR! Des informations de connexion supplémentaires peuvent être trouvées dans:
npm ERR! /home/heberlz/npm-debug.log
npm ERR! pas ok code 0
Propriété récupérée récursivement des dossiers suivants ~/.npm,/usr/lib/noeud,/usr/lib/node_modules, et des liens symboliques suivants/usr/bin/noeud,/usr/bin/nodejs sans aucun succès
J'ai besoin d'installer yeoman et ses générateurs sans Sudo pour ne pas avoir d'ennuis plus tard :(
Ubuntu 12.04 et en utilisant le PPA de Chris Lea pour installer les travaux suivants pour moi:
npm config set prefix '~/.npm-packages'
et en ajoutant $ HOME/.npm-packages/bin à $ PATH
ajouter à .bashrc
export PATH="$PATH:$HOME/.npm-packages/bin"
voir https://stackoverflow.com/a/18277225 de @passy
Si vous avez déjà _$HOME/bin
_ sur votre chemin, une solution plus simple est simplement ...
_npm config set prefix ~
_
$HOME/bin
_.Dans la mesure où cette discussion concerne réellement la réduction des risques de sécurité liés à l'exécution de Sudo
, vous devez également savoir que toute application de nœud pourrait éventuellement installer un nom d'application qui ne correspond pas au nom du package de nœud enregistré que vous pensez installer. Il existe donc un risque de sécurité qu'un _npm install
_ remplace une commande système existante ou une commande existante dans _$HOME/bin
_. Si cela vous intéresse, vérifiez les propriétés bin
et scripts
dans le fichier package.json
de l'application que vous installez en premier.
En général, il est plus sûr de:
$HOME/bin
_ en dernier dans votre chemin afin que les commandes système ne soient pas remplacées.$PATH
_ afin de ne pas exécuter accidentellement une commande qui se trouve dans le répertoire en cours.Référence:
Comme pour octobre 2014:
Node.js est disponible à partir des distributions binaires NodeSource Debian et Ubuntu référentiel .
curl -sL https://deb.nodesource.com/setup | Sudo bash -
Sudo apt-get install -y nodejs
C'est ça.
Réponse périmée:
Le moyen le plus rapide sans utiliser Sudo est comme décrit ici par isaac
Je vous encourage fortement à ne pas gérer les paquets avec Sudo! Les paquetages peuvent exécuter des scripts arbitraires, ce qui rend une commande de gestionnaire de paquet aussi sûre qu'une coupe à la tronçonneuse. Bien sûr, il est rapide et va certainement éliminer tous les obstacles, mais vous voudrez peut-être que cet obstacle y reste.
Je recommande de faire cela une fois à la place:
Sudo chown -R $USER /usr/local
EDIT:
Il existe certaines préoccupations de sécurité et limitations fonctionnelles concernant le changement de propriété de/usr/local en utilisateur actuel:
Cela dit, si vous souhaitez installer le module global sans utiliser Sudo, je ne vois pas de meilleure solution (du point de vue pragmatique) que celle mentionnée. La sécurité par rapport à la facilité d'utilisation est un sujet très vaste, et il n'y a pas de réponse simple à cela - cela dépend de vos besoins.
Le problème était que le noeud installé sous Sudo, pour éviter les erreurs lors de l’installation globale des modules npm, il ne faut JAMAIS installer le noeud avec Sudo.
Ma solution consistait à réinstaller le noeud cela de cette façon:
Téléchargez les dernières sources de noeuds stables à partir de nodejs.org #in mon cas, node-v0.10.20.tar.gz
tar -zxf node-v0.10.20.tar.gz #incompresser les sources
cd node-v0.10.20 #enter dossier non compressé
Sudo chown -R $ USER/usr/local
./configure --prefix =/usr/local && make && make install
Une chose à noter est que seule l’appropriation du dossier/usr/local ne fonctionnerait pas dans mon cas car l’installation du nœud a été faite avec Sudo
Dernière étape pour installer yeoman: #bien qu'à yeoman.io, il est indiqué que l'installation de "npm install -g yo" installe déjà bower et grunt, qu'il existe des sous-modules de grunt qui échouent.
npm installer -g bower
npm installer -g grunt
npm install -g yo
npm install -g générateur-angulaire
J'ai résolu ce problème avec la variable d'environnement et l'alias du shell:
export NPM_PREFIX=$HOME/node
alias npmg="npm -g --prefix $NPM_PREFIX"
Pour moi, npm n'a pas respecté le paramètre de configuration "préfixe" de .npmrc.
Trouvez le chemin du répertoire de npm:
npm config get prefix
Pour beaucoup de systèmes, ce sera/usr/local.
Changez le propriétaire des répertoires de npm avec le nom de l'utilisateur actuel (votre nom d'utilisateur!):
Sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
Cela modifie les autorisations des sous-dossiers utilisés par npm et certains autres outils (lib/node_modules, bin et share).
Voici le lien pour plus de détails
https://docs.npmjs.com/getting-started/fixing-npm-permissions
Selon ce SO post similaire: npm génère une erreur sans Sudo
Il semble que vous ayez un problème de propriété avec le répertoire ~/.npm
.
Comme pour la réponse dans celle-là, essayez:
Sudo chown -R `whoami` ~/.npm
En fait, je viens de changer l'autorisation d'un dossier utilisateur appartenant à root:
Sudo chown -R $USER ~/.config/configstore
Ensuite, je pourrais "installer npm" et "installer bower" sans Sudo! A bien fonctionné!
Si vous êtes sur une machine de développement, vous feriez bien d’envisager d’utiliser nvm .
Sinon, vous voulez simplement installer en utilisant votre gestionnaire de paquets préféré.
Quoi qu'il en soit, je recommanderais en vérifiant cette réponse sur stackoverflow
en utilisant lubuntu 14.04.3, j'ai essayé de changer la propriété des préfixes .npm et npm, mis à jour mon chemin, npm a installé les modules dans mon répertoire personnel sans Sudo mais le chemin était incorrect, ainsi les modules comme ember n'ont pas été trouvés, linuxbew résolu le problème, guide d'installation rapide ici pour node/npm
Ce problème, ainsi que d'autres causés par la même raison, peuvent être résolus en installant Node dans l'espace utilisateur.
Vous pouvez le faire simplement en copiant et collant dans votre terminal
NODEJS_ROOT=${NODEJS_ROOT:-~/nodejs}
cd /tmp
wget -N http://nodejs.org/dist/node-latest.tar.gz && tar xzf node-latest.tar.gz
NODEJS_CURRENT=$(tar tf node-latest.tar.gz|head -1)
mkdir -p $NODEJS_ROOT/$NODEJS_CURRENT
cd $NODEJS_CURRENT
./configure --prefix=$NODEJS_ROOT/$NODEJS_CURRENT && make install
cd $NODEJS_ROOT
rm current 2> /dev/null # Removes current symbolic link, if any
ln -s $NODEJS_CURRENT current
Les mêmes commandes peuvent également être lancées pour mettre à jour Node à la dernière version.
N'oubliez pas de modifier votre environnement. Une seule fois
echo "export NODEJS_ROOT=$NODEJS_ROOT" >> $HOME/.bash_profile
echo 'export PATH=$NODEJS_ROOT/current/bin:$PATH' >> $HOME/.bash_profile
source $HOME/.bash_profile # reload your env, so you can use node right now
Consultez cet article pour savoir comment installer Node.js sans Sudo .
Pour obtenir une solution plus générale sur ce sujet (installer un logiciel localement, par exemple), voir logiciel de points .