Impossible d’utiliser NVM depuis la racine (ou sudo)

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 

Ce v0.11.8-pre m’a causé quelques problèmes, alors 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 j’ai eu l’erreur “NVM déjà installé”, mais nvm 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 tout ce qu’elle fait est de copier la version de noeud active via nvm dans le /usr/local/ (où les fichiers globaux installés par l’utilisateur doivent vivre sur un VPS Linux) et de définir les permissions tous les utilisateurs peuvent y accéder.

    J’espère que cela t’aides!

    Ma solution consiste à créer des liens symboliques à partir des versions de node et de npm j’utilise dans /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 accessibles à 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 que l’utilisateur root ne peut pas trouver la version 0.10.13, mais voyons le message d’erreur suivant …

    J’ai essayé la même chose sur ma machine où j’ai aussi nvm et j’ai une réponse légèrement différente:

     $ sudo node --version sudo: node: command not found 

    Je suppose que vous avez installé le noeud 0.11 en dehors de NVM. ( Via le gestionnaire de paquets ou même depuis la source )

    Par conséquent, exécuter le noeud via sudo prendrait plutôt ce noeud autonome.

    Est-ce que c’est logique ou est-ce que je me trompe?

    J’ai aussi eu ton problème. Enfin, j’ai travaillé autour de ça. Voici ma solution:

    1. Désinstallez nvm et nodejs. Voici quelques liens utiles: Désinstallation de nvm . Si vous avez installé nodejs en utilisant apt-get, vous pouvez le désinstaller avec la commande apt-get purge nodejs .
    2. Installez un NVM global. Voir cette page: nvm global . Comme il est dit, “nvm standard a connu des difficultés à travailler dans des environnements multi-utilisateurs ou enracinés.”

    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 le .profile , .bashrc ou … Ainsi, sudo ne le sudo pas automatiquement dans $ PATH comme la plupart des autres programmes.

    Un autre gestionnaire de version de nœud est n : https://github.com/tj/n . C’est un vrai programme, donc sudo le récupérera via $ PATH sans aucun piratage (tant que sudo a /usr/local/bin dans son $ PATH).

     sudo npm install -gn # 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 
     $ sudo bash -ic "nvm use stable; npm -v" Now using node v6.3.1 (npm v3.10.3) 3.10.3 

    Installez nvm globalement avec
    wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | sudo bash

    La solution la plus simple sera probablement de bash l’exécutable nvm.sh où qu’il se trouve.

     sudo /home/ubuntu/.nvm/nvm.sh install node 

    Cela fonctionne bien pour moi (en supposant que c’est 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 puis vous pouvez exécuter la commande ci-dessus pour bash le nvm.sh nouvellement installé