web-dev-qa-db-fra.com

Commande introuvable lors de l'exécution du package node.js n sur sudo

J'essaie de mettre à jour ma version de noeud vers la dernière version stable.

En utilisant cette ressource j'ai pu:

Sudo npm install n -g

Mais quand j'essaye

Sudo npm n stable

Je reçois:

Sudo: n: command not found

Si j'exécute n stable, la commande est présente:

n stable
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

     install : node-v0.12.2
       mkdir : /usr/local/n/versions/node/0.12.2
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

  Error: Sudo required
13
JonRed

Étonnamment, votre installation npm a le préfixe global dans un dossier appelé npm de votre répertoire de base, ce qui signifie que tout package installé avec l'indicateur -g s'installera sur ce dossier.

Vous pouvez modifier ce dossier en n'importe quel dossier qui se trouve sur le chemin d'accès sécurisé Sudo en procédant comme suit:


Manière graphique:

  1. Ouvrez un gestionnaire de fichiers (a.k.a Nautilus).
  2. Accédez à votre dossier de départ.
  3. Presse Ctrl+H pour montrer les fichiers cachés.
  4. Ouvrez un fichier appelé .npmrc avec votre éditeur de texte préféré.
  5. Recherchez une ligne sur ce fichier avec ce contenu:

    prefix=/home/<your_username>/npm
    
  6. Remplacez /home/<your_username>/npm par un chemin sécurisé (tel que /usr/local/bin).
  7. Une fois remplacé, il ressemblera à ceci:

    prefix=/usr/local/bin
    
  8. Enregistrez le fichier.
  9. Réexécutez Sudo npm install n -g

voie terminale:

Exécutez cette commande:

sed -i.bak "s%^prefix=.*$%prefix=/usr/local/bin%" ~/.npmrc
5
Helio

J'ai trouvé une solution qui a fonctionné pour moi:

Sudo -E env "PATH=$PATH" n stable

Je l'ai trouvé ici: https://stackoverflow.com/a/29400598/861615

22
Luckylooke

Je sais que ceci est un forum Ubuntu, mais je suis sûr que cela aidera quelqu'un qui a le même problème sur les saveurs RHEL et qui googlé ici comme je l'ai fait. Peut-être que cela fonctionne aussi dans Ubuntu.

C'est l'approche :

ln -s /usr/local/bin/n /usr/bin/n
2
poshest

Pour éviter de gâcher le dossier .npm-global en tant que noté par @Edson Horacio Junior, et basé sur celui de @ pohest réponse , voici comment je l'ai corrigé:

Sudo ln -s /home/<username>/.npm-global/bin/n /usr/local/bin/n
Sudo n --version # test it

Notez que cela ne fonctionnera probablement pas si vous n'avez pas suivi les étapes de npm pour changer le répertoire global par défaut .

0
Gus

J'ai trouvé une solution qui a fonctionné pour moi. Utilisez le package nvm pour télécharger le dernier noeud.

  1. Installez nvm en utilisant la commande ci-dessous

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

  1. Créer une variable d'environnement à utiliser nvm
export NVM_DIR="${XDG_CONFIG_HOME/:-$HOME/.}nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
  1. Essayez nvm -v s'il ne peut pas voir nvm installé, exécutez le script ci-dessous.

command -v nvm

  1. Pour installer la commande d'exécution de noeud ci-dessous

nvm install node

  1. Après avoir redémarré le terminal, essayez de vérifier la version du noeud, elle devrait être mise à jour

node -v

Plus d'infos ici: https://github.com/nvm-sh/nvm

0
Jacek Góraj