2 votos

Permiso en MacOS desordenado

Quería hacer npm install -g . Como no funcionó debido a los permisos tomé el enfoque sugerido desde la respuesta aceptada en https://stackoverflow.com/questions/47252451/permission-denied-when-installing-npm-modules-in-osx

Cambiar el propietario de los directorios de npm por el nombre del usuario actual (su nombre de usuario):

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

Esto cambia los permisos de las subcarpetas utilizadas por npm y algunas otras herramientas (lib/node_modules, bin y share).

entonces podría ejecutar mi npm install -g . Pero no es aquí donde termina la historia. Quería instalar otro paquete con npm. ( npm install identicon ).

He recibido el siguiente error

npm does not support Node.js v12.0.0
You should probably upgrade to a newer version of node as we
can't make any promises that npm will work with this version.
You can find the latest version at https://nodejs.org/
....

Y ahora recibo el mismo error una y otra vez, cada vez que uso un npm comando.

En SO alguien más tuvo este problema https://stackoverflow.com/questions/56805007/npm-warn-npm-does-not-support-node-js-v12-4-0?noredirect=1&lq=1 y la respuesta aceptada sugería

Arreglar los permisos de /usr/local:

sudo chown -R id -un : id -gn /usr/local

Limpiar la caché de npm y desinstalarlo:

npm cache clean -f npm -g uninstall npm

Reinstalar node (con npm)

brew reinstall node

Actualiza npm:

npm -g i npm

Pero el primer comando falló:

chown: /usr/local: Operation not permitted

En caso de que esto ayude:

/usr/local root# ls -la

total 0
-rw-r--r--    1 myuser  staff      0 Sep 20  2019 .com.apple.installer.keep
drwxrwxr-x    2 myuser  staff     64 Apr 24  2019 Caskroom
drwxrwxr-x  103 myuser  staff   3296 Nov 17 17:31 Cellar
drwxrwxr-x    3 myuser  staff     96 Nov 17 17:25 Frameworks
drwxrwxr-x   22 myuser  staff    704 Jan 14 05:49 Homebrew
drwxrwxr-x  409 myuser  staff  13088 Jan 14 05:49 bin
drwxrwxr-x   10 myuser  staff    320 Nov 17 17:23 etc
drwxrwxr-x  192 myuser  staff   6144 Nov 17 17:33 include
drwxrwxr-x  620 myuser  staff  19840 Nov 17 17:33 lib
drwxr-xr-x    5 myuser  staff    160 Mar 24  2019 man
drwxrwxr-x  124 myuser  staff   3968 Nov 17 17:34 opt
drwxr-xr-x    3 myuser  staff     96 Mar 24  2019 remotedesktop
drwxrwxr-x   12 myuser  staff    384 Nov 17 17:27 sbin
drwxrwxr-x   34 myuser  staff   1088 Nov 17 17:34 share
drwxr-xr-x    4 myuser  staff    128 Mar 24  2019 texlive
drwxrwxr-x    4 myuser  staff    128 May 16  2021 var

Quiero volver a usar npm y tener mis permisos arreglados. Tal vez alguien pueda indicar buenos recursos para principiantes, que puedan guiarme en el proceso, cuando experimente algo similar. Gracias.

Mi macbookpro: MacOS Catalina (10.15.7)

0 votos

sudo chown -R $(id -un):$(id -gn) /usr/local/* debería funcionar. Pero por favor, ejecute ls -l /usr/local/bin y añadir el resultado a la pregunta (en lugar del listado de /var/db/sudo que aquí no importa).

0 votos

El resultado de ls -l /usr/local/bin tiene un par de cientos de entradas, ¿es esto realmente correcto (se siente mal). ¿Quiere ver una entrada específica o un par de entradas?

0 votos

Si se trata de un par de cientos, entonces por todos los medios añadirlos o (o ponerlos en pastebin y compartir un enlace). puede haber más cosas mal entonces. Pero las interesantes serían bin, share, lib y lib/node_modules.

1voto

Sinan Bolel Puntos 133

Puede utilizar [nvm][1] para instalar el nodo para su usuario en ~/ para evitar el uso del sistema node que requiere permisos. nvm le permite instalar y cambiar entre varias versiones de node .

Como se indica en el readme:

Al utilizar nvm no necesitas sudo para instalar globalmente un módulo con npm -g, así que en lugar de hacer sudo npm install -g npm , hacer npm i -g npm

1. Requisitos previos

Antes de empezar, desinstala node si lo tienes instalado con homebrew:

brew uninstall --ignore-dependencies node 
brew uninstall --force node

2. instalar nvm

Opción 1: Utilizar homebrew

Instalar nvm :

brew update
brew install nvm

Crea el directorio nvm:

mkdir ~/.nvm

Añade lo siguiente a ~/.zshrc:

export NVM_DIR="${HOME}/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

Opción 2 (preferida): instalación manual

Para instalar nvm manualmente, descargue y ejecute el programa instalar script y ejecutarlo utilizando cualquiera de los siguientes comandos cURL o Wget:

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

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

Si eso no funciona, puedes descargar manualmente el instalar script y ejecutarlo.

Esto crea un directorio para nvm en $HOME :

mkdir ~/.nvm

Y añade las líneas de origen del fragmento de abajo a ~/.zshrc que carga nvm en cada nuevo shell de la terminal:

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

3. Cargar nvm

Usted puede reset su shell actual, inicie uno nuevo, o bien, obtenga el .zshrc cambios:

source ~/.zshrc

Para verificar que nvm ha sido instalado, haga:

command -v nvm

que debería dar como resultado nvm si la instalación fue exitosa.

4. Instalar node utilizando nvm

Instalar node 14 utilizando nvm y establecerla como versión por defecto:

nvm install 14

Hacer node 14 la versión por defecto:

nvm alias default 14

Set default como la versión actual a utilizar:

nvm use default

Actualizar npm instalado para node 14 a la última versión:

npm install -g npm@latest

0 votos

¿cómo sé si lo instalé con homebrew? ¿Puedo comprobarlo?

0 votos

@YvesBoutellier puedes correr brew list y ver si aparece en la salida

0 votos

Gracias! efectivamente se instaló con brew. Pude instalarlo manualmente. ¿Por qué recomiendan la versión 14 de node?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X