update permission node espaƱol error descargar cert_untrusted and node.js unix permissions npm sudo

node.js - permission - update npm



npm lanza error sin sudo (30)

Acabo de instalar node y npm a través del paquete en nodejs.org y cada vez que intento buscar o instalar algo con npm se produce el siguiente error, a menos que sudo el comando. Tengo la sensación de que esto es un problema de permisos? Ya soy el administrador.

npm ERR! Error: EACCES, open ''/Users/chietala/.npm/-/all/.cache.json'' npm ERR! { [Error: EACCES, open ''/Users/chietala/.npm/-/all/.cache.json''] npm ERR! errno: 3, npm ERR! code: ''EACCES'', npm ERR! path: ''/Users/chietala/.npm/-/all/.cache.json'' } npm ERR! npm ERR! Please try running this command again as root/Administrator. npm ERR! System Darwin 12.2.0 npm ERR! command "node" "/usr/local/bin/npm" "search" "bower" npm ERR! cwd /Users/chietala npm ERR! node -v v0.10.4 npm ERR! npm -v 1.2.18 npm ERR! path /Users/chietala/.npm/-/all/.cache.json npm ERR! code EACCES npm ERR! errno 3 npm ERR! stack Error: EACCES, open ''/Users/chietala/.npm/-/all/.cache.json'' npm ERR! npm ERR! Additional logging details can be found in: npm ERR! /Users/chietala/npm-debug.log npm ERR! not ok code 0


Así es como resolví el problema en Windows 8.1:

  • Vaya a la instalación de su nodejs (generalmente C: / Archivos de programa / nodejs)
  • Haga clic derecho en la carpeta node_modules y vaya a propiedades
  • Haga clic en la pestaña Seguridad y avanzado
  • En la parte superior verá "Propietario: SISTEMA", haga clic en cambiar
  • Ingrese el usuario para el que desea los permisos y haga clic en Aceptar
  • Marque la casilla en la parte inferior de la configuración avanzada "Reemplazar todas las entradas de permisos de objetos secundarios con entradas de permisos heredables de este objeto" y haga clic en Aceptar
  • Haga lo que necesita npm instalar / actualizar que necesita


Como si necesitamos más respuestas aquí, pero de todos modos ..

Sindre Sorus tiene una guía github.com/sindresorhus/guides/blob/master/… describe cómo instalar de forma limpia sin alterar los permisos:

Aquí hay una forma de instalar paquetes globalmente para un usuario determinado.

  1. Crea un directorio para tus paquetes globales

    mkdir "${HOME}/.npm-packages"

  2. Consulte este directorio para uso futuro en su .bashrc / .zshrc:

    NPM_PACKAGES="${HOME}/.npm-packages"

  3. Indique a npm dónde almacenar su paquete instalado globalmente. En su archivo $HOME/.npmrc agregue:

    prefix=${HOME}/.npm-packages

  4. Asegúrese de que el nodo los encontrará. Agregue lo siguiente a su .bashrc / .zshrc:

    NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"

  5. Asegúrese de que encontrará binarios instalados y páginas de manual. Agregue lo siguiente a su .bashrc / .zshrc :

    PATH="$NPM_PACKAGES/bin:$PATH" # Unset manpath so we can inherit from /etc/manpath via the `manpath` # command unset MANPATH # delete if you already modified MANPATH elsewhere in your config MANPATH="$NPM_PACKAGES/share/man:$(manpath)"

Echa un vistazo a npm-g_nosudo para realizar los pasos anteriores de forma automática.

Echa un vistazo a la github.com/sindresorhus/guides/blob/master/… para las últimas actualizaciones.


Cuando ejecuta npm install -g somepackage, puede obtener un error EACCES que le pide que ejecute el comando nuevamente como root / Administrator. Es una cuestión de permisos.

Es fácil de arreglar , abra su terminal (Aplicaciones> Utilidades> Terminal)

sudo chown -R $USER /usr/local/lib/node_modules

** Le recomiendo encarecidamente que no use la administración de paquetes con sudo (sudo npm -g install algo), porque puede obtener algunos problemas más adelante **

Referencia: http://foohack.com/2010/08/intro-to-npm/


En Mac OS X, al instalar Homebrew''s brew install npm , la ruta de instalación es /usr/local/share/npm/ con bin/ y lib/node_modules/ subfolders.

Ejecutar este comando para cambiar de propietario a su usuario que está conectado actualmente debería arreglarlo todo y permitirle instalar paquetes globales de NPM sin sudo .

sudo chown -R $USER ~/.npm /usr/local/share/npm/

osx homebrew


En caso de que sudo chown -R $(whoami) ~/.npm no haya funcionado para usted, o necesite una solución de comando que no sea de terminal.

El problema es que su cuenta de usuario no tiene permiso de escritura para la carpeta node_modules, por lo que puede hacer lo siguiente

  1. Abra el buscador y presione cmd + shift + g para abrir vaya a la carpeta con url

  2. Escriba la siguiente ruta /usr/local/lib/node_modules y presione ir

  3. Haga clic derecho en la carpeta node_modules y elija Get Info

  4. Desplácese hacia abajo a la sección de sharing & permissions

  5. Desbloquear para poder realizar cambios.

  6. Presiona + y agrega tu cuenta de usuario

  7. Asegúrese de que elige Read & Write en el privilegio desplegable

Ahora debería poder instalar paquetes sin sudo y deberían resolverse los problemas de permisos


En mi caso, es por el permiso de ~ / tmp. Así que hago:

sudo chown -R $USER ~/tmp

¡Y esta bien!


En realidad, yo también estaba teniendo el mismo problema. Yo estaba ejecutando Ubuntu. El problema mío surge porque había perdido mi clave pública de Ubuntu. Incluso actualizar mi sistema no estaba sucediendo. Estaba dando error GPG. En ese caso, puede recuperar su clave usando este comando:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <key in GPG error>

Después de eso npm funciona bien!


Encontré esto al instalar Recess ( https://github.com/twitter/recess ) para compilar mi CSS para Bootstrap 3.

Al instalar el recreo:

-npm install recess -g

  1. Necesitas desbloquear permisos en tu directorio de home , como dice :

    sudo chown -R `whoami` ~/.npm

  2. También necesita permisos de escritura en el directorio node_modules , como dice , así que si aún no funciona, intente:

    sudo chown -R `whoami` /usr/local/lib/node_modules

  3. Si aún observa errores, es posible que también deba corregir /usr/local permisos /usr/local :

    sudo chown -R `whoami` /usr/local

Tenga en cuenta que, como se indica en esta publicación, /usr/local/ no es realmente un directorio de sistema si está en una Mac, por lo tanto, esta respuesta es perfectamente "segura" para los usuarios de Mac. Sin embargo, si está en Linux, consulte la respuesta de Christopher Will a continuación para obtener una solución segura para el sistema de instalación de sistemas (pero más compleja) fácil de usar para múltiples usuarios.


Esta es la solución que utilicé y trabajé. Intenté utilizar whoami nunca funcionó.

sudo chown -R $USER /usr/local/lib/node_modules

entonces

sudo chown -R $USER /usr/local/bin/npm

entonces

sudo chown -R $USER /usr/local/bin/node


Esto parece un problema de permisos en su directorio de inicio. Para reclamar la propiedad del directorio .npm ejecute:

sudo chown -R $(whoami) ~/.npm


John Papa señala la historia y el razonamiento detrás de este problema y ofrece una solución sólida :

Los pasos de John Papa son:

  1. Use brew para instalar el nodo sin npm
  2. Actualice su .bash_profile / .bashrc para que npm y node puedan saber dónde instalar y encontrar paquetes
  3. Usa brew para actualizar node y npm para actualizarse

Espero que esto ayude a los curiosos!


La documentación oficial sobre cómo reparar los npm install con un error EACCES se encuentra en https://docs.npmjs.com/getting-started/fixing-npm-permissions .

Encontré este problema después de una nueva instalación del nodo usando el instalador .pkg en OSX. Aquí hay algunas respuestas geniales, pero no vi un enlace a npmjs.com todavía.

Opción 1: cambiar el permiso al directorio predeterminado de npm

  1. Encuentra la ruta al directorio de npm:

    npm config get prefix

Para muchos sistemas, esto será / usr / local .

ADVERTENCIA : Si la ruta mostrada es solo / usr , cambie a la Opción 2 .

  1. Cambie el propietario de los directorios de npm al 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 ).

Opción 2: cambiar el directorio predeterminado de npm a otro directorio

Hay ocasiones en las que no desea cambiar la propiedad del directorio predeterminado que utiliza npm (es decir, / usr ), ya que esto podría causar algunos problemas, por ejemplo, si está compartiendo el sistema con otros usuarios.

En su lugar, puede configurar npm para utilizar un directorio diferente por completo. En nuestro caso, este será un directorio oculto en nuestra carpeta de inicio.

  1. Haga un directorio para instalaciones globales:

    mkdir ~/.npm-global

  2. Configure npm para usar la nueva ruta del directorio:

    npm config set prefix ''~/.npm-global''

  3. Abra o cree un archivo ~ / .profile y agregue esta línea:

    export PATH=~/.npm-global/bin:$PATH

  4. De vuelta en la línea de comandos, actualice las variables de su sistema:

    source ~/.profile


La respuesta de @Yves M. fue muy similar a mi solución. Aquí están los comandos que utilicé, que eran ligeramente diferentes de los suyos.

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

A continuación, consulte la última versión:

nvm ls-remote

A continuación, instale la versión más reciente:

nvm install YOUR_VERSION_HERE

ejemplo

nvm install v5.8.0


Lo que a mí me parece que la mejor opción es la sugerida en la documentación de npm , que es verificar primero dónde se instalan los npm config get prefix globales de forma predeterminada ejecutando el npm config get prefix . Si obtienes, como hago con Trusty, /usr , es posible que desees cambiarlo a una carpeta que puedas poseer de manera segura sin arruinar las cosas como lo hice yo.

Para hacerlo, elija o cree una nueva carpeta en su sistema. Es posible que desee tenerlo en su directorio de inicio o, como yo, en /usr/local para mayor coherencia porque también soy un usuario de Mac (prefiero no tener que buscar en diferentes lugares dependiendo de la máquina en la que esté. frente de). Otra buena razón para hacerlo es el hecho de que la carpeta /usr/local probablemente ya se encuentre en su RUTA (a menos que desee entrometerse con su RUTA), pero es probable que su carpeta recién creada no lo esté y que deba hacerlo. agréguelo usted mismo al PATH en su archivo .bash-profile o .bashrc .

En pocas palabras, cambié la ubicación predeterminada de los módulos globales con el npm config set prefix ''/usr/local'' , creé la carpeta /usr/local/lib/node_modules (será utilizada por npm) y cambié los permisos de las carpetas utilizado por npm con el comando:

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

Ahora puedes instalar de forma global cualquier módulo de forma segura. ¡Espero que esto ayude!


Los permisos que usó al instalar Node serán necesarios cuando haga cosas como escribir en su directorio npm link ( npm link npm install -g , npm install -g , etc.).

Probablemente ejecutó la instalación de nodos con permisos de raíz, por eso la instalación del paquete global le está pidiendo que sea root.

Solución 1: NVM

No hackear con permisos, instale el nodo de la manera correcta.

En una máquina de desarrollo, no debe instalar y ejecutar el nodo con permisos de raíz, de lo contrario, npm link , npm install -g necesitarán los mismos permisos.

NVM (Node Version Manager) te permite instalar Node sin permisos de root y también te permite instalar muchas versiones de Node para jugar fácilmente con ellos ... Perfecto para el desarrollo.

  1. Desinstalar el nodo (probablemente se requerirá permiso de root). This podría ayudarte.
  2. Luego instale NVM siguiendo las instrucciones NVM .
  3. Instale el nodo a través de NVM: nvm install node

Ahora npm link , npm install -g ya no requerirá que seas root.

Editar: Consulte también https://docs.npmjs.com/getting-started/fixing-npm-permissions

Solución 2: instalar paquetes globalmente para un usuario determinado

No trates con permisos, instala paquetes npm globalmente de la manera correcta.

Si está en OSX o Linux, puede crear un directorio dedicado para el usuario para su paquete global y configurar npm y node para saber cómo encontrar paquetes instalados globalmente.

Consulte github.com/sindresorhus/guides/blob/master/… para obtener instrucciones paso a paso sobre la instalación de módulos npm en todo el mundo sin sudo.

Consulte también: documentación de https://docs.npmjs.com/getting-started/fixing-npm-permissions sobre la https://docs.npmjs.com/getting-started/fixing-npm-permissions .


No tomo crédito por esta solución. Gracias a este chico: https://gist.github.com/isaacs/579814

# take ownership of the folders that npm/node use # please don''t do this if you don''t know what it does! sudo mkdir -p /usr/local/{share/man,bin,lib/node,include/node} sudo chown -R $USER /usr/local/{share/man,bin,lib/node,include/node} # now just a pretty vanilla node install # let it use the default paths, but don''t use sudo, since there''s no need mkdir node-install curl http://nodejs.org/dist/node-v0.4.3.tar.gz | tar -xzf - -C node-install cd node-install/* ./configure make install # now the npm easy-install curl https://www.npmjs.org/install.sh | sh

Y entonces ...

sudo chown -R web:web /home/web/api/ sudo runuser -l web -c ''npm install --prefix /home/web/api''

De esa forma, el nodo nunca se ejecuta como root y su usuario puede instalarlo sin sudo.


Otra gran solución aquí para configurar NPM correctamente, ejecute los siguientes comandos:

npm config set prefix ''~/.npm_packages'' PATH=$PATH:$HOME/.npm_packages/bin; export PATH


Otras respuestas sugieren que se cambie la propiedad o los permisos de los directorios del sistema a un usuario específico. No me gusta mucho hacerlo, ¡esto puede volverse muy incómodo y podría arruinar todo el sistema!

Aquí hay un enfoque más genérico y seguro que también es compatible con múltiples usuarios.

Cree un nuevo grupo para usuarios de nodo y agregue los usuarios necesarios a este grupo. Luego, establezca la propiedad de los archivos / directorios dependientes del nodo para este grupo.

# Create new group sudo groupadd nodegrp # Add user to group (logname is a variable and gets replaced by the currently logged in user) sudo usermod -a -G nodegrp `logname` # Instant access to group without re-login newgrp nodegrp # Check group - nodegrp should be listed as well now groups # Change group of node_modules, node, npm to new group sudo chgrp -R nodegrp /usr/lib/node_modules/ sudo chgrp nodegrp /usr/bin/node sudo chgrp nodegrp /usr/bin/npm # (You may want to change a couple of more files (like grunt etc) in your /usr/bin/ directory.)

Ahora puedes instalar fácilmente tus módulos como usuario

npm install -g generator-angular

Algunos módulos (grunt, bower, yo, etc.) todavía deberán instalarse como root. Esto se debe a que crean enlaces simbólicos en / user / bin /.

Editar

3 años después recomiendo usar NVM . Te ahorra mucho tiempo y problemas.


Para Mac (adoptado de la respuesta de Christoper Will)

Mac OS X 10.9.4

  1. Preferencia del sistema> Usuarios y grupos> (desbloquear)> presionar +:

    Nueva cuenta> "Grupo"
    Nombre de cuenta: nodegrp

    Después de crear el grupo, marque el usuario para ser incluido en este grupo

  2. sudo chgrp -R nodegrp / usr / local / lib / node_modules /
    sudo chgrp nodegrp / usr / bin / node
    sudo chgrp nodegrp / usr / bin / npm
    sudo chown -R $ (whoami): nodegrp ~ / .npm


Para mi, ejecuta solo

sudo chown -R $(whoami) ~/.npm

no funciona Entonces, ejecuto también

sudo chown -R $(whoami) /usr/lib/node_modules/ sudo chown -R $(whoami) /usr/bin/node sudo chown -R $(whoami) /usr/bin/npm

¡Y todo funciona bien!


Problema: no tiene permiso para escribir en los directorios que npm utiliza para almacenar paquetes y comandos globales.

Solución: Permitir permiso para npm.

Abre una terminal:

comando + barra espaciadora luego escriba ''terminal''

Ingrese este comando:

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

  • Nota: esto requerirá su contraseña.

Esta solución permite el permiso SOLO de los directorios necesarios, manteniendo los otros directorios agradables y seguros.


Si aparece algo como lo siguiente a continuación durante la instalación de npm o si desea instalar paquetes globalmente en una Mac, use Sudo

npm ERR! codigo EACCES
npm ERR! errno -13
npm ERR! acceso syscall


Si no le ayuda cambiar los permisos para el directorio /usr/local/lib/npm_modules , debe agregar su usuario al grupo (en la mayoría de los casos, este es un grupo de staff ), que tiene derechos rwx para el directorio /usr/bin . Porque npm intenta hacer un symlink con /usr/bin/__package__ .

PS No te olvides de volver a iniciar sesión después de cambiar el grupo de usuarios


TL; DR

siempre use sudo -i o sudo -H cuando ejecute npm install para instalar paquetes globales.

-

Cuando usa npm , descarga paquetes a su directorio de inicio de usuario. Cuando se ejecuta como sudo, npm instala archivos en el mismo directorio, pero ahora son propiedad de root.

Así que esto es lo que le sucede a cada persona que ha usado npm :

  • instala algunos paquetes locales sin problemas usando npm install foo
  • instale el paquete global usando sudo install -g foo-cli sin problema
  • intento de instalar el paquete local con la npm install bar
  • frustrarse con los diseñadores de npm ahora que tiene que ir a chmod un directorio nuevo

Cuando use la opción -i o -H con sudo, su directorio de inicio será el directorio de inicio de root . Cualquier instalación global almacenará en caché los paquetes en /root/.npm lugar de root archivos de root en /home/me/.npm .

Siempre use sudo -i o sudo -H cuando ejecute npm install para instalar paquetes globales y sus problemas de permisos de npm desaparecerán.

Para bien

http://hood.ie/blog/why-you-shouldnt-use-sudo-with-npm.html

- qv la respuesta aceptada para arreglar un npm ya jodido.


También necesitará el permiso de escritura en el directorio node_modules :

sudo chown -R $USER /usr/local/lib/node_modules


Tuve un problema similar en NPM. Los módulos no se instalarán globalmente sin sudo , el problema fue que cuando instalé el nodo lo hice con sudo a través de chris / lea ppa repo .

Mi solución fue desinstalar el nodo y luego instalarlo de esta manera:

Descargue las últimas fuentes de nodos estables de nodejs.org #en mi caso node-v0.10.20.tar.gz

tar -zxf node-v0.10.20.tar.gz #uncompress fuentes

cd node-v0.10.20 #enter carpeta sin comprimir

sudo chown $ USUARIO -R / usr / local

./configure --prefix = / usr / local && make && make install

PD: Si no desea cambiar la propiedad de la carpeta / usr / local, puede instalarla en algún lugar que ya posea. El problema de este enfoque es que tendrá que vincular la carpeta de instalación con la línea de comandos de bash para que podamos usar el comando de nodo más adelante

mkdir ~ / opt

./configure --prefix = ~ / opt && make && make install

echo ''export PATH = ~ / opt / bin: $ {PATH}'' >> ~ / .bashrc #or ~ / .profile o ~ / .bash_profile o ~ / .zshenv dependiendo del sistema operativo actual

Con cualquiera de estos enfoques, podrá hacer lo siguiente sin usar sudo

npm install -g module_to_install


puedes probar esto

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


¡¡¡Cuidado!!! ¡¡¡Cuidado!!! ¡¡¡Cuidado!!!

chown o chmod NO es la solución, debido al riesgo de seguridad.

En lugar de hacer esto, haz:

Primero verifique, donde npm apunta, si llama:

npm config get prefix

Si se devuelve / usr, puede hacer lo siguiente:

mkdir ~/.npm-global export NPM_CONFIG_PREFIX=~/.npm-global export PATH=$PATH:~/.npm-global/bin

Esto crea un npm-Direktory en su directorio de inicio y apunta npm a él.

Para que estos cambios sean permanentes, debe agregar el comando de exportación a su .bashrc:

echo -e "export NPM_CONFIG_PREFIX=~/.npm-global/nexport PATH=$PATH:~/.npm-global/bin" >> ~/.bashrc


PROBLEMA : Usted (el usuario) no tiene el conjunto correcto de permisos para el directorio.

La salida instantánea es ejecutar la instalación de npm usando sudo, pero esto puede darte el mismo error o una instalación incorrecta.

Y cambiar la propiedad del directorio no es una buena opción, un parche temporal.

Solución / sugerencia : cambiar el directorio predeterminado de npm (de docs oficiales)

Haga una copia de seguridad de su computadora antes de seguir adelante.

(opcional) En caso de que tenga una instalación errónea, primero desinstálela:

npm uninstall <package-name> # use sudo if you used it while installation npm cache verify # or, npm cache clean for npm version below 5.x.x

  1. Haga un directorio para instalaciones globales:

    mkdir ~/.npm-global

  2. Configure npm para usar la nueva ruta del directorio:

    npm config set prefix ''~/.npm-global''

  3. Abra o cree un ~/.profile o ~/.bash_profile y agregue esta línea:

    export PATH=~/.npm-global/bin:$PATH

  4. De vuelta en la línea de comandos, actualice las variables de su sistema o reinicie el terminal:

    source ~/.profile

  5. (Opcional) Prueba: descargue un paquete globalmente sin usar sudo.

    npm install -g jshint