Comando no encontrado al ejecutar el paquete node.js n en sudo

13

Estoy tratando de actualizar mi versión del nodo a la última versión estable.

Usando este recurso pude:

sudo npm install n -g

Pero cuando lo intento

sudo npm n stable

Yo obtengo:

sudo: n: command not found

Si ejecuto n stable, el comando está 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
JonRed
fuente
Buena idea, pero cuando hago eso me devuelve 'n: comando no encontrado', a pesar de que he dejado el 'sudo'
JonRed
sudo sh -c "RUTA = $ RUTA; n estable" <nueva línea> sh: 1: n: no encontrado
JonRed
No hay salida en absoluto. Eso es deprimente :-(
JonRed
Continuemos esta discusión en el chat .
JonRed
Por favor publique la salida dels /usr/local/bin/n
Helio

Respuestas:

5

Sorprendentemente, su npminstalación tiene el prefijo global en una carpeta llamada npmen su directorio de inicio, esto significa que cualquier paquete instalado con la -gbandera se instalará en esta carpeta.

Puede cambiar esta carpeta a cualquier carpeta que esté en la sudoruta segura siguiendo estos pasos:


Forma gráfica:

  1. Abra un Administrador de archivos (también conocido como Nautilus).
  2. Navega a tu carpeta de inicio.
  3. Presione Ctrl+ Hpara mostrar los archivos ocultos.
  4. Abra un archivo llamado .npmrccon su editor de texto favorito.
  5. Encuentre una línea en ese archivo con este contenido:

    prefix=/home/<your_username>/npm
    
  6. Sustitúyalo /home/<your_username>/npmpor una ruta segura (como /usr/local/bin).
  7. Una vez reemplazado se verá así:

    prefix=/usr/local/bin
    
  8. Guarda el archivo.
  9. Corre de nuevo sudo npm install n -g

Camino terminal:

Ejecute este comando:

sed -i.bak "s%^prefix=.*$%prefix=/usr/local/bin%" ~/.npmrc
Helio
fuente
Creo que esto lo clavó! También me ayudó en este momento cuando actualicé mi versión de npm, pero no lo reconocí. Entonces, aceptado, ¡y gracias!
JonRed
No ayudó, sigue siendo el mismo problema: /
Luckylooke
Esto me ayudó! No tenía el archivo ~ / .npmrc, así que lo agregué y ahora funciona bien
Kirill Gusyatin
2
Cuidado: esto anulará la Opción 2 de arreglar los permisos de NPM
Edson Horacio Junior
23

He encontrado una solución que funcionó para mí:

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

Lo encontré aquí: /programming//a/29400598/861615

Luckylooke
fuente
env: n: No
existe
1
@ user3311522 usaste: sudo npm install n -gantes sudo -E env "PATH=$PATH" n stable??
Luckylooke
2

Sé que este es un foro de Ubuntu, pero estoy seguro de que ayudará a alguien con el mismo problema en los sabores de RHEL que buscó en Google aquí como lo hice yo. Quizás también funcione en Ubuntu.

Este es el enfoque :

ln -s /usr/local/bin/n /usr/bin/n
poshest
fuente
0

Para evitar equivocarse con la .npm-globalcarpeta como señaló @Edson Horacio Junior, y según la respuesta de @pohest , así es como lo arreglé:

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

Como nota, esto probablemente no funcionará si no ha seguido los pasos de npm para cambiar el directorio global predeterminado .

Gus
fuente
0

Encontré una solución que funcionó para mí. Use el nvmpaquete para descargar el último nodo.

  1. Instale nvm usando el siguiente comando

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

  1. Crear una variable de entorno para usar nvm
export NVM_DIR="${XDG_CONFIG_HOME/:-$HOME/.}nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
  1. Prueba nvm -vsi no puede ver nvminstalado, ejecuta el script a continuación

command -v nvm

  1. Para instalar el nodo, ejecute el comando a continuación

nvm install node

  1. Después de reiniciar el terminal, intente verificar la versión del nodo, debe actualizarse

node -v

Más información aquí: https://github.com/nvm-sh/nvm

Jacek Góraj
fuente
0

Esto significa que no tiene N instalado en su sistema, N es un administrador de versiones de nodo basado en npm. Puede instalarlo instalando primero alguna versión del nodo y luego ejecutando

sudo npm install -g n

ahora puede instalar la versión en el nodo usando el comando n

sudo n stable

Lo anterior instalará la última versión estable

sudo n lates

esto instalará la versión lates

También puede instalar la versión específica especificando la versión de la siguiente manera

sudo n  10.16.0
satyam chinna
fuente
0

Ninguna de las respuestas anteriores funcionó para mí. Esto sin embargo esto hizo:

sudo /usr/local/bin/bin/n stable
Mate
fuente
-1

Encontré el mismo problema, así es como puedes resolverlo:

  1. Obtener el prefijo de configuración npm
    npm config get prefix 
    // get -> ${myhome}/.npm-global
  2. Agregue las siguientes líneas en .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

Referencia: GitHub - tj / n: gestión de versiones de nodo

Nota del editor: esta respuesta se escribió originalmente en chino y se ha traducido y editado con herramientas en línea. Para ver la respuesta original, consulte la Revisión n. ° 1

dingyanhe
fuente