Je viens de réinstaller Ubuntu 12.04 LTS, et avant toute chose, j'ai fait ces étapes :
Nœud installé via le gestionnaire de packages 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 de yeoman, express, n, yeoman globalement 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 réessayer d'exécuter cette commande en tant que root / administrateur.
npm ERR! Système Linux 3.8.0-29-générique
npm ERR! commande "/ usr / bin / node" "/ usr / bin / npm" "install" "-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! Erreur de pile: EACCES, lien symbolique '../lib/node_modules/n/bin/n'
npm ERR!
npm ERR! Des détails de journalisation supplémentaires peuvent être trouvés dans:
npm ERR! /home/heberlz/npm-debug.log
npm ERR! pas ok code 0
Récupération de la propriété des dossiers suivants de manière récursive ~ / .npm, / usr / lib / node, / usr / lib / node_modules, et des liens symboliques suivants / usr / bin / node, / usr / bin / nodejs sans aucun succès
J'ai besoin d'installer yeoman et ses générateurs sans sudo pour ne pas avoir de problèmes plus tard :(
ln -s /usr/bin/nodejs /usr/bin/node
Réponses:
Ubuntu 12.04 et l'utilisation du PPA de Chris Lea pour installer ce qui suit fonctionne pour moi:
et ajouter $ HOME / .npm-packages / bin à $ PATH
ajouter à
.bashrc
voir https://stackoverflow.com/a/18277225 de @passy
la source
/usr/lib/node_modules/
. Ou peut-être même approprié de créer un groupe unix nodejs et de donner à ce groupe la permission d'écrire dans ce répertoire.Si vous avez déjà
$HOME/bin
sur votre chemin, une solution plus simple est juste ...$HOME/bin
répertoire.Étant donné que cette discussion porte vraiment sur la réduction des risques de sécurité liés à l'exécution
sudo
, vous devez également savoir que toute application de nœud peut potentiellement installer un nom d'application qui ne correspond pas au nom du package de nœud enregistré que vous pensez installer. Il y a donc un risque de sécurité qu'unnpm install
remplacera une commande système existante ou une commande déjà présente$HOME/bin
. Si vous êtes concerné, vérifiez d'abord les propriétésbin
etscripts
dans lepackage.json
fichier de l'application que vous installez.En général, il est plus sûr de:
$HOME/bin
dernier dans votre chemin pour que les commandes système ne soient pas remplacées.$PATH
afin de ne pas exécuter accidentellement une commande se trouvant dans le répertoire actuel.Référence:
la source
npm
est que le code source que vous voyez sur ungithub.com
dépôt pour un package de nœuds peut ne pas être le même que celui que vous installez à partir dunpm.org
serveur de registre!~/bin
, certains packages de nœuds (ou leurs packages dépendants) n'ont été testés que pour l'installation,sudo
alors sachez que vous pouvez rencontrer un problème "d'environnement d'installation" non testé. Comme pour tout autre problème d'environnement (comme le changement d'OS), le principe «d'écrire une fois, de tester partout» est toujours valable.Quant à octobre 2014:
Node.js est disponible à partir de la distribution des binaires NodeSource Debian et Ubuntu référentiel .
C'est tout.
Réponse obsolète:
Le moyen le plus rapide sans utiliser sudo est comme décrit ici par isaac
ÉDITER:
Il existe certains problèmes de sécurité et limitations de fonctionnalités concernant la modification de la propriété de / usr / local à l'utilisateur actuel:
Cela dit, si vous souhaitez installer le module global sans utiliser sudo, je ne vois pas de meilleure solution (d'un point de vue pragmatique) que celle mentionnée. La sécurité contre la facilité d'utilisation est un sujet très vaste, et il n'y a pas de réponse facile à cela - cela dépend simplement de vos besoins.
la source
/usr/local/lib/node_modules
etnode
Le problème était que j'avais installé le nœud à l'aide de sudo , pour éviter les erreurs lors de l'installation des modules npm globalement, il ne fallait JAMAIS installer de nœud avec sudo.
Ma solution était de réinstaller le nœud de cette façon:
Téléchargez les dernières sources de nœuds stables sur nodejs.org #in my case node-v0.10.20.tar.gz
Une chose à noter est que seul le fait de prendre possession du dossier / usr / local ne fonctionnerait 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 que sur yeoman.io il est dit que faire "npm install -g yo" installe déjà bower et grunt, il y a quelques sous-modules de grunt qui échouent, donc j'ai corrigé cela en l'installant par lui-même
la source
J'ai résolu ce problème avec la variable d'environnement et l'alias du shell:
Pour moi, npm n'a pas respecté le paramètre de configuration "prefix" dans .npmrc.
la source
Selon ce message SO similaire: npm génère une erreur sans sudo
Il semble que vous ayez un problème de propriété avec l'
~/.npm
annuaire.Comme pour la réponse dans celle-ci, essayez:
la source
Trouvez le chemin du répertoire de npm:
Pour de nombreux systèmes, ce sera / usr / local.
Remplacez le propriétaire des répertoires de npm par le nom de l'utilisateur actuel (votre nom d'utilisateur!):
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
la source
bin
etshare
entre crochets. L'ignorer peut conduire à changer la propriété de ces dossiers à l'utilisateur actuel et à des problèmes d'installation de nouveaux packages sur le système,sudo
car leur propriété sera également modifiéeSi vous êtes sur une machine de développement, vous feriez peut-être mieux d'envisager d'utiliser nvm .
Sinon, vous souhaitez simplement installer en utilisant votre gestionnaire de paquets préféré.
Quoi qu'il en soit, je vous recommande de vérifier cette réponse sur stackoverflow
la source
En fait, je viens de modifier l'autorisation d'un dossier utilisateur appartenant à root:
Ensuite, je pourrais "npm install" et "bower install" sans sudo! A bien fonctionné!
la source
en utilisant lubuntu 14.04.3, j'ai essayé de changer la propriété du préfixe .npm et npm, mis à jour mon chemin, npm a installé des modules dans mon répertoire personnel sans sudo mais le chemin était incorrect donc les modules comme braise n'ont pas été trouvés, linuxbew a résolu le problème, rapidement guide de configuration ici pour node / npm
la source
Ce problème et 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 en collant dans votre terminal
Les mêmes commandes peuvent également être lancées pour mettre à jour Node vers la dernière version.
N'oubliez pas de modifier votre environnement. Une seule fois, fais
Consultez cet article pour savoir comment installer Node.js sans sudo .
Pour une solution plus générale à ce sujet (c.-à-d. Installer le logiciel localement), voir dotsoftware .
la source
utilisez simplement nvm, vous pourrez basculer dynamiquement entre les différentes versions de nœuds et il est installé localement pour votre utilisateur. Aucun sudo nécessaire. Assurez-vous simplement d'avoir complètement nettoyé l'ancien nœud au préalable.
https://github.com/nvm-sh/nvm
la source
La meilleure solution que j'ai trouvée était d'installer Node.js à partir du package tar sur le répertoire de base de l'utilisateur et de lier l'emplacement du dossier lib. Voici ce que tu dois faire
Cela installera Nodejs sous ~ / .local / au lieu de la valeur par défaut / usr / local /
Si vous rencontrez toujours une erreur de propriété ou d'autorisation lors de l'installation des packages, modifiez la propriété de ~ / .local / dir en exécutant
Maintenant, vous devriez être prêt à installer les packages via 'npm'
Remarque: TOUTES LES COMMANDES CI-DESSUS DOIVENT ÊTRE EXÉCUTÉES EN TANT QU'UTILISATEUR. N'UTILISEZ PAS DE CONNEXION SUDO OU ROOT
NE JAMAIS MODIFIER L'AUTORISATION DES DOSSIERS SOUS '/ USR / LIB /'. Mènera à un système d'exploitation instable
la source
Je trouve les explications de Pawel Grzybek très convaincantes: elles se résument à 3 commandes sudo simples, sans jamais avoir à utiliser à nouveau sudo pour les installations npm globales:
la source