Comando non trovato durante l'esecuzione del pacchetto node.js n su sudo


13

Sto cercando di aggiornare la mia versione del nodo all'ultima versione stabile.

Utilizzando questa risorsa sono stato in grado di:

sudo npm install n -g

Ma quando ci provo

sudo npm n stable

Ottengo:

sudo: n: command not found

Se corro n stable, il comando è presente:

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

Bella idea, ma quando lo faccio mi restituisce 'n: comando non trovato', anche se ho lasciato cadere il 'sudo'
JonRed

sudo sh -c "PATH = $ PATH; n stable" <nuova riga> sh: 1: n: non trovato
JonRed

Nessun risultato. È deprimente :-(
JonRed


Si prega di inviare l'output dils /usr/local/bin/n
Helio

Risposte:


5

Sorprendentemente, la tua npminstallazione ha il prefisso globale in una cartella chiamata npmnella tua home directory, questo significa che qualsiasi pacchetto installato con il -gflag verrà installato in questa cartella.

È possibile modificare questa cartella in qualsiasi cartella che si trova sul sudopercorso sicuro seguendo questi passaggi:


Modo grafico:

  1. Apri un File Manager (aka Nautilus).
  2. Passare alla cartella principale.
  3. Premi Ctrl+ Hper mostrare i file nascosti.
  4. Apri un file chiamato .npmrccon il tuo editor di testo preferito.
  5. Trova una linea su quel file con questo contenuto:

    prefix=/home/<your_username>/npm
    
  6. Sostituire /home/<your_username>/npmcon un percorso sicuro (come /usr/local/bin).
  7. Una volta sostituito apparirà così:

    prefix=/usr/local/bin
    
  8. Salva il file.
  9. Eseguire di nuovo sudo npm install n -g

Modo terminale:

Esegui questo comando:

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

Penso che questo l'abbia inchiodato! Mi ha anche aiutato proprio ora quando ho aggiornato la mia versione di npm, ma non l'avrei riconosciuta. Quindi, accettato e grazie!
JonRed

Non ha aiutato, sempre lo stesso problema: /
Luckylooke,

Questo mi ha aiutato! Non avevo il file ~ / .npmrc, quindi l'ho aggiunto e ora funziona benissimo
Kirill Gusyatin,

2
Attenzione: questo annullerà l' opzione 2 di correzione delle autorizzazioni NPM
Edson Horacio Junior,


2

So che questo è un forum di Ubuntu, ma sono sicuro che questo aiuterà qualcuno con lo stesso problema sui gusti RHEL che ha cercato su Google qui come ho fatto io. Forse funziona anche in Ubuntu.

Questo è l'approccio :

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

0

Per evitare di rovinare la .npm-globalcartella come notato da @Edson Horacio Junior, e basato sulla risposta di @ pohest , ecco come l'ho risolto:

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

Come nota, questo probabilmente non funzionerà se non hai seguito i passaggi di npm per cambiare la directory globale predefinita .


0

Ho trovato una soluzione che ha funzionato per me. Usa il nvmpacchetto per scaricare l'ultimo nodo.

  1. Installa nvm usando il comando seguente

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

  1. Crea una variabile d'ambiente per usare nvm
export NVM_DIR="${XDG_CONFIG_HOME/:-$HOME/.}nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
  1. Prova nvm -vse non riesce a vedere nvminstallato, esegui lo script qui sotto

command -v nvm

  1. Per installare il nodo, eseguire il comando di seguito

nvm install node

  1. Dopo aver riavviato il terminale, provare a verificare la versione del nodo, dovrebbe essere aggiornato

node -v

Maggiori informazioni qui: https://github.com/nvm-sh/nvm


0

Questo significa che non hai N installato nel tuo sistema, N è un gestore versione nodo basato su npm. Puoi installarlo installando prima una versione del nodo e poi eseguendolo

sudo npm install -g n

ora puoi installare la versione sul nodo usando il comando n

sudo n stable

Quanto sopra installerà l'ultima versione stabile

sudo n lates

questo installerà la versione di lates

puoi anche installare la versione specifica specificando la versione come di seguito

sudo n  10.16.0

-1

Ho riscontrato lo stesso problema, ecco come risolverlo:

  1. Ottieni il prefisso di configurazione npm
    npm config get prefix 
    // get -> ${myhome}/.npm-global
  2. Aggiungi le seguenti righe in .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

Riferimento: GitHub - tj / n: gestione della versione del nodo

Nota del redattore: questa risposta è stata originariamente scritta in cinese ed è stata tradotta e modificata utilizzando strumenti online. Per vedere la risposta originale, consultare la Revisione n. 1

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.