J'ai mentionné que mon application utilise une version différente de NodeJS lors de l'exécution de Sudo
.
$ node -v
v0.10.23
$ Sudo node -v
v0.11.8-pre
Ceci v0.11.8-pre m'a causé quelques problèmes, donc je ne veux certainement pas l'utiliser, mais je ne peux pas le changer pour root.
$ Sudo nvm use v0.10.23
Sudo: nvm: command not found
J'ai essayé d'installer NVM à partir de l'utilisateur root, mais le message d'erreur "NVM est déjà installé", mais NVM n'est toujours pas trouvé lors de l'exécution de Sudo
. Quel est mon problème?
La liste de commandes ci-dessous (source: digitalocean ) semble résoudre le problème
n=$(which node); \
n=${n%/bin/node}; \
chmod -R 755 $n/bin/*; \
Sudo cp -r $n/{bin,lib,share} /usr/local
La commande ci-dessus est un peu compliquée, mais elle ne fait que copier quelle que soit la version du noeud active via nvm dans le répertoire /usr/local/
(où les fichiers globaux installés par l'utilisateur doivent vivre sur un VPS linux) et définir les autorisations pour que tous leur.
J'espère que cela t'aides!
Ma solution consiste à créer des liens symboliques à partir des versions de node
et npm
que j'utilise pour /usr/local/bin
:
Sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/node" "/usr/local/bin/node"
Sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npm" "/usr/local/bin/npm"
Cela rend npm
et node
disponibles pour tous les utilisateurs.
Votre problème est que nvm
n'est pas dans le chemin lorsque vous utilisez Sudo
.
Alors tapez
$ which nvm
et le résultat sera quelque chose comme
/home/abc/mynvm/nvm
Réessayez maintenant avec Sudo
:
Sudo /home/abc/mynvm/nvm use v0.10.23
Je suppose que vous rencontrez alors le problème suivant: l'utilisateur root ne peut pas trouver la version 0.10.13, mais laisse voir le message d'erreur suivant ...
J'ai eu ton problème aussi. Enfin j'ai travaillé autour de ça. Voici ma solution:
apt-get purge nodejs
.Après avoir redémarré votre terminal, vous pouvez exécuter la commande Sudo nvm ls
.
La raison fondamentale est que nvm
n'est pas un vrai programme. C'est une fonction bash qui est chargée dans les .profile
, .bashrc
ou ... de l'utilisateur. Ainsi, Sudo
ne la récupère pas automatiquement dans $ PATH comme la plupart des autres programmes.
Un autre gestionnaire de version de noeud est n
: https://github.com/tj/n . C'est un vrai programme, donc Sudo
le récupèrera via le $ PATH sans aucun piratage (tant que Sudo
a /usr/local/bin
dans son $ PATH).
Sudo npm install -g n # install 'n' globally
which n # should be /usr/local/bin/n
Sudo n lts # need Sudo to switch node versions
node --version # v6.10.0
Sudo node --version # v6.10.0
J'ai essayé la même chose sur ma machine où j'ai nvm
également et j'ai une réponse légèrement différente:
$ Sudo node --version
Sudo: node: command not found
Mon hypothèse est que vous avez installé le noeud 0.11 en dehors de NVM. ( Via le gestionnaire de paquets ou même à partir de la source )
Par conséquent, si vous exécutez un nœud via Sudo, ce nœud autonome sera utilisé.
Est-ce que cela a du sens ou est-ce que je me trompe?
$ Sudo bash -ic "nvm use stable; npm -v"
Now using node v6.3.1 (npm v3.10.3)
3.10.3
Lorsque vous utilisez nvm, vous n'avez pas besoin de
Sudo
pour installer globalement un module avecnpm -g
. Ainsi, au lieu de faireSudo npm install -g grunt
, faites plutôtnpm install -g grunt
Dans mon cas, j'ai besoin de Sudo npm run start
qui nécessite l'accès à certains fichiers nécessitant un accès root. Selon ce numéro ,
Vous n'utilisez pas
Sudo
. Vous devriez plutôt chmod/chown le fichier pour que l'utilisateur qui a nvm ait accès au fichier ;.
Le responsable de nvm croit fermement que nous n'avons pas besoin de Sudo
: P
La solution la plus simple consiste probablement à cliquer sur l'exécutable nvm.sh où qu'il se trouve.
Sudo /home/ubuntu/.nvm/nvm.sh install node
Cela fonctionne très bien pour moi (en supposant que ce soit le chemin d'installation).
La procédure d'installation complète ressemblerait à
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
export NVM_DIR="/home/ubuntu/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
Et ensuite, vous pouvez exécuter la commande ci-dessus pour accéder au fichier nvm.sh récemment installé.
Installez nvm globalement avecwget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | Sudo bash