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

13

J'essaie de mettre à jour ma version de nœud 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 je lance 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
JonRed
la source
Belle idée, mais quand je le fais, cela me renvoie 'n: commande introuvable', même si j'ai abandonné le 'sudo'
JonRed
sudo sh -c "PATH = $ PATH; n stable" <nouvelle ligne> sh: 1: n: introuvable
JonRed
Pas de sortie du tout. C'est déprimant :-(
JonRed
Continuons cette discussion dans le chat .
JonRed
Veuillez poster la sortie dels /usr/local/bin/n
Helio

Réponses:

5

Étonnamment, votre npminstallation a le préfixe global dans un dossier appelé npmsur votre répertoire personnel, cela signifie que tout package installé avec l' -gindicateur s'installera sur ce dossier.

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


Manière graphique:

  1. Ouvrez un gestionnaire de fichiers (alias Nautilus).
  2. Accédez à votre dossier de départ.
  3. Appuyez sur Ctrl+ Hpour afficher les fichiers cachés.
  4. Ouvrez un fichier appelé .npmrcavec votre éditeur de texte préféré.
  5. Trouvez une ligne sur ce fichier avec ce contenu:

    prefix=/home/<your_username>/npm
    
  6. Remplacez-le /home/<your_username>/npmpar 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. Courez à nouveau sudo npm install n -g

Chemin terminal:

Exécutez cette commande:

sed -i.bak "s%^prefix=.*$%prefix=/usr/local/bin%" ~/.npmrc
Hélio
la source
Je pense que cela l'a cloué! Cela m'a aussi aidé tout à l'heure lorsque j'ai mis à jour ma version npm, mais je ne la reconnaîtrais pas. Alors, accepté, et merci!
JonRed
N'a pas aidé, toujours la même chose: /
Luckylooke
Cela m'a aidé! Je n'avais pas de fichier ~ / .npmrc, donc je l'ai ajouté et maintenant ça marche bien
Kirill Gusyatin
2
Attention: cela annulera l' option 2 de correction des autorisations NPM
Edson Horacio Junior
23

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

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

Je l'ai trouvé ici: /programming//a/29400598/861615

Luckylooke
la source
env: n: aucun fichier ou répertoire de ce type
user3311522
1
@ user3311522 avez-vous utilisé: sudo npm install n -gavant sudo -E env "PATH=$PATH" n stable??
Luckylooke
2

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

Voici l'approche :

ln -s /usr/local/bin/n /usr/bin/n
chic
la source
0

Pour éviter de gâcher le .npm-globaldossier comme l'a noté @Edson Horacio Junior, et en fonction de la réponse de @ pohest , 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 .

Gus
la source
0

J'ai trouvé une solution qui a fonctionné pour moi. Utilisez le nvmpackage pour télécharger le dernier nœud.

  1. Installer nvm à l'aide de 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 pour 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 -vs'il ne peut pas voir nvminstallé, exécutez le script ci-dessous

command -v nvm

  1. Pour installer la commande d'exécution de nœud ci-dessous

nvm install node

  1. Après avoir redémarré le terminal, essayez de vérifier la version du nœud, il doit être mis à jour

node -v

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

Jacek Góraj
la source
0

Cela signifie que N n'est pas installé sur votre système, N est un gestionnaire de version de nœud basé sur npm. Vous pouvez l'installer en installant d'abord une version du nœud puis en exécutant

sudo npm install -g n

vous pouvez maintenant installer la version sur le noeud à l'aide de la commande n

sudo n stable

Ce qui précède installera la dernière version stable

sudo n lates

cela installera la version lates

vous pouvez également installer la version spécifique en spécifiant la version comme ci-dessous

sudo n  10.16.0
satyam chinna
la source
0

Aucune des réponses ci-dessus n'a fonctionné pour moi. Mais cela a cependant:

sudo /usr/local/bin/bin/n stable
Mat
la source
-1

J'ai rencontré le même problème, voici comment vous pouvez le résoudre:

  1. Obtenir le préfixe de configuration npm
    npm config get prefix 
    // get -> ${myhome}/.npm-global
  2. Ajoutez les lignes suivantes dans .zshrc

    # Specify `n` to put the version of `node` in the `.n` directory.
    export N_PREFIX=${myhome}/.npm-global/.n
    
    # Make `nman` command work
    export PATH=${myhome}/.npm-global/bin:$PATH
    
    # Add this line to use `node -v` command
    export PATH=${myhome}/.npm-global/.n/bin:$PATH

Référence: GitHub - tj / n: Gestion des versions des nœuds

Note de l'éditeur: Cette réponse a été écrite à l'origine en chinois et a été traduite et éditée à l'aide d'outils en ligne. Pour voir la réponse originale, reportez-vous à la révision n ° 1

dingyanhe
la source