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 arroja el siguiente error, a menos que sudo el comando. Tengo la sensación de que este 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
                
sudo chown: github.com/sindresorhus/guides/blob/master/…Respuestas:
Esto parece un problema de permisos en su directorio de inicio. Para reclamar la propiedad del directorio .npm , ejecute:
fuente
whoamiera un marcador de posición, pero funciona escrito literalmente como está, por lo que debe ser una variable que no entiendo.whoamiaseguran que se ejecute correctamente y luego se coloque en el comando chownsudo chown -R simpleascouldbe ~/.npmSe requerirán los permisos que usó al instalar Node al hacer cosas como escribir en su directorio npm (
npm link,npm install -g, etc.).Probablemente ejecutó la instalación de nodo con permisos de root, por eso la instalación global del paquete le pide que sea root.
Solución 1: NVM
En una máquina de desarrollo, no debe instalar y ejecutar un nodo con permisos de root, de lo contrario
npm link,npm install -gnecesitará los mismos permisos.NVM (Node Version Manager) le permite instalar Node sin permisos de root y también le permite instalar muchas versiones de Node para jugar fácilmente con ellos. Perfecto para el desarrollo.
nvm install nodeAhora
npm link,npm install -gya 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
Si está en OSX o Linux, puede crear un directorio dedicado para el usuario para su paquete y configuración global
npmynodesaber cómo encontrar paquetes instalados globalmente.Consulte este excelente artículo para obtener instrucciones paso a paso sobre cómo instalar módulos npm a nivel mundial sin sudo.
Consulte también: documentación de npm sobre la fijación de permisos npm .
fuente
npm ls -gp | awk -F/ '/node_modules/ && !/node_modules.*node_modules/ {print $NF}' | xargs npm -g rm- Tuve que reinstalar nodejs y en un shell raíz y desinstalarlos, de lo contrario, continuará teniendo enlaces simbólicos a yo, gruñido, etc.sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -gstackoverflow.com/a/22290968/1449157 y luego lo eliminénpmy lo instalé a través denvmTambién necesitará el permiso de escritura en el
node_modulesdirectorio:fuente
~/tmpdirectorio para mí.node_modulesen/usr/local/lib/. wtf?Then I ran sudo chown -R $USER /* and everything was fine- NO - estás arruinando tu máquina.Cambiar el propietario en las carpetas "system-global" es un hack. En una instalación nueva, configuraría NPM para usar una ubicación que ya se puede escribir para programas "globales de usuario":
Luego, asegúrese de agregar esa carpeta a su ruta:
Ver la respuesta de @ErikAndreas a los módulos NPM no se instalará globalmente sin sudo y una guía paso a paso más larga de @sindresorhus con también conjuntos .
$MANPATHfuente
$HOME, normalmente su.profilesecuencia de comandos se encargará de$PATHla próxima vez que la obtenga (por ejemplo, la próxima vez que inicie sesión).$HOMEe interferiría con otros (¿futuros?) Archivos / subcarpetas NPM. Prefiere mantener los binarios de diferentes gestores de paquetes / idiomas / sistemas de compilación separados, y establecerlos explícitamente$PATH(en un script de tiempo de inicio de sesión).~/lib/node_modules, con su CLI asociada, si existe, en~/bin. Para muchos usuarios, especialmente si no tienen raíz, tanto~/biny~/libya existen.~/biny luego hacer lo mismo para uno o dos administradores de paquetes adicionales. Puede que no suceda hoy o mañana, pero existe un claro riesgo de que dos paquetes de diferentes administradores tengan una colisión de nombres y sobrescriban los archivos de los demás. Ese es un caso suficientemente bueno para que tenga prefijos separados. (Se agradecerían ejemplos concretos).Encontré esto al instalar Recess ( https://github.com/twitter/recess ) para compilar mi CSS para Bootstrap 3.
Al instalar el recreo:
Necesita desbloquear permisos en su
homedirectorio, como dice Noah :También necesita permisos de escritura en el
node_modulesdirectorio, como dice Xilo , por lo que si aún no funciona, intente:Si todavía ve errores, es posible que también deba corregir los
/usr/localpermisos :Tenga en cuenta que, como se indica en esta publicación, en
/usr/local/realidad no es un directorio del sistema si está en una Mac, por lo que esta respuesta es realmente "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 usuario (pero más compleja) para múltiples usuarios.fuente
¡¡¡Cuidado!!! ¡¡¡Cuidado!!! ¡¡¡Cuidado!!!
chown o chmod NO es la solución, debido al riesgo de seguridad.
En cambio, haga esto, haga:
Primero verifique, a dónde apunta npm, si llama:
Si se devuelve / usr, puede hacer lo siguiente:
Esto crea un npm-Directory en su Home-Directory y apúntelo
npm.Para que estos cambios sean permanentes, debe agregar el comando de exportación a su .bashrc:
fuente
$PATH, no la cadena en sí. Deberías cambiar eso.Otras respuestas sugieren cambiar las propiedades o permisos de los directorios del sistema a un usuario específico. No recomiendo hacerlo, ¡esto puede volverse muy incómodo y dañar todo el sistema!
Aquí hay un enfoque más genérico y seguro que también admite usuarios múltiples.
Cree un nuevo grupo para usuarios de nodo y agregue los usuarios necesarios a este grupo. Luego configure la propiedad de los archivos / directorios dependientes de nodos para este grupo.
Ahora puede instalar fácilmente sus módulos como usuario
Algunos módulos (gruñidos, bower, yo, etc.) aún deberán instalarse como root. Esto se debe a que crean enlaces simbólicos en / user / bin /.
Editar
3 años después, recomendaría usar Node Version Manager . Le ahorra mucho tiempo y problemas.
fuente
staffgrupo integrado para otorgar permisos a mis carpetas de desarrollo. Además, es una buena idea ejecutarchmod g+ws node_modulespara asegurarse de que su grupo tenga permiso de lectura / escritura./usr/libestá bajo el control de su administrador de paquetes del sistema y no debe realizar ningún cambio allí.La documentación oficial sobre cómo corregir los
npm installpermisos con unEACCESerror se encuentra en https://docs.npmjs.com/getting-started/fixing-npm-permissions .Encontré este problema después de una nueva instalación de nodo usando el
.pkginstalador en OSX. Aquí hay algunas respuestas excelentes, pero todavía no he visto un enlace a npmjs.com.Opción 1: cambiar el permiso al directorio predeterminado de npm
Encuentre la ruta al directorio de npm:
Para muchos sistemas, esto será / usr / local .
ADVERTENCIA : Si la ruta que se muestra es solo / usr , cambie a la Opción 2 .
Cambie el propietario de los directorios de npm al nombre del usuario actual (¡su nombre de usuario!):
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 momentos en que no desea cambiar la propiedad del directorio predeterminado que usa npm (es decir, / usr ) ya que esto podría causar algunos problemas, por ejemplo, si comparte el sistema con otros usuarios.
En su lugar, puede configurar npm para usar un directorio completamente diferente. En nuestro caso, este será un directorio oculto en nuestra carpeta de inicio.
Haga un directorio para instalaciones globales:
Configure npm para usar la nueva ruta del directorio:
Abra o cree un archivo ~ / .profile y agregue esta línea:
De vuelta en la línea de comando, actualice las variables de su sistema:
fuente
/usr/bin/? Ahora solo tu usuario puede acceder a él. Inicia sesión como otra persona, todavía no tiene acceso, ¡ya que los archivos están en el directorio de inicio de otro usuario!Como si necesitáramos más respuestas aquí, pero de todos modos ...
Sindre Sorus tiene una guía Instalar paquetes npm a nivel mundial sin sudo en OS X y Linux que describe cómo instalar de manera limpia sin alterar los permisos:
Consulte la fuente de esta guía para obtener las últimas actualizaciones.
fuente
TL; DR
-
Cuando lo usa
npm, descarga paquetes en su directorio de inicio de usuario. Cuando corres como sudo,npminstala archivos en el mismo directorio, pero ahora son propiedad de root.Entonces, esto es lo que le sucede a absolutamente todas las personas que alguna vez han usado
npm:npm install foosudo install -g foo-clisin problemanpm install barnpmdiseñadores ahora que tiene que ir achmodun directorio nuevamenteCuando usa la opción
-io-Hcon sudo, su directorio de inicio serárootel directorio de inicio. Cualquier instalación global almacenará en caché los paquetes en/root/.npmlugar de losrootarchivos propios en/home/me/.npm.Simplemente use
sudo -iosudo -Hcuando se ejecutenpm installpara instalar paquetes globales y susnpmproblemas de permisos desaparecerán.Para bien
http://hood.ie/blog/why-you-shouldnt-use-sudo-with-npm.html
- qv la respuesta aceptada para arreglar un ya jodido
npm.fuente
Tuve un problema similar en los módulos NPM que no se instalarán globalmente sin sudo , el problema era 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 nodo estable de nodejs.org # en mi caso node-v0.10.20.tar.gz
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 comando bash para que podamos usar el comando de nodo más adelante
Con cualquiera de esos enfoques, podrá hacer lo siguiente sin usar sudo
fuente
sudo chown $USER /use/localantes de construir. Se ve bien hasta ahora, ¡es hora de intentar construir un átomo! ¡Gracias!Cuando ejecuta npm install -g somepackage, puede recibir un error de EACCES que le pide que ejecute el comando nuevamente como root / Administrator. Es un problema de permisos.
Es fácil de arreglar , abra su terminal (Aplicaciones> Utilidades> Terminal)
** Le recomiendo encarecidamente que no use la administración de paquetes con sudo (sudo npm -g install something), porque puede obtener algunos problemas más adelante **
Referencia: http://foohack.com/2010/08/intro-to-npm/
fuente
sudo chown -R `whoami` ~/.npm,sudo chown -R `whoami` /usr/local/libyPara Mac (adoptado de la respuesta de Christoper Will)
Mac OS X 10.9.4
Preferencia del sistema> Usuarios y grupos> (desbloquear)> presione +:
Nueva cuenta> "Grupo"
Nombre de cuenta : nodegrp
Después de crear el grupo, marque el usuario que se incluirá en este grupo
fuente
sudoo cambiar la propiedad del grupo de carpetas para que pueda ser modificado por el usuario normal? Si se supone que el usuario normal no debe realizar ninguna acción en esta carpeta, por supuesto, no debe cambiar la propiedad del grupo de la carpeta.-Hbandera. Específicamente,sudo -H npm install -g <pkg>. Esto garantiza la delineación adecuada de los permisos para el sistema y las carpetas de usuario. Lo que no desea hacer es usarsudo npm install -g, porque esto instala los archivos propiedad de root en su directorio de usuarios. Sería genial si npm fuera lo suficientemente inteligente como para hacer esto de la manera correcta, pero no lo es, por lo que debe usar el-Hindicador de sudo para instalarlo correctamente a nivel mundial.En mi caso, es por el permiso de ~ / tmp, así que hago:
¡Y esta bien!
fuente
Para mí, ejecuta solo
no funciona Entonces, yo también ejecuto
¡Y todo funciona bien!
fuente
/usr/libson archivos del sistema y no deben ser propiedad de su cuenta de usuario personal.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 darle 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 documentos 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:
Haga un directorio para instalaciones globales:
mkdir ~/.npm-globalConfigure npm para usar la nueva ruta del directorio:
npm config set prefix '~/.npm-global'Abra o cree un archivo
~/.profileo~/.bash_profiley agregue esta línea:export PATH=~/.npm-global/bin:$PATHDe vuelta en la línea de comando, actualice las variables de su sistema o reinicie el terminal:
source ~/.profile(opcional) Prueba: descargue un paquete globalmente sin usar sudo.
npm install -g jshintfuente
En caso
sudo chown -R $(whoami) ~/.npmque no funcionó para usted, o necesita una solución de comando no terminal.El problema es que su cuenta de usuario no tiene permiso de escritura en la carpeta node_modules, por lo que puede hacer lo siguiente
Abra el buscador y presione
cmd+shift+gesto abrirá ir a la carpeta con urlEscribe la siguiente ruta
/usr/local/lib/node_modulesy presiona irHaga clic derecho en la
node_modulescarpeta y elijaGet InfoDesplácese hacia abajo hasta la
sharing & permissionssecciónDesbloquee para poder hacer cambios.
Presione
+y agregue su cuenta de usuarioAsegúrese de elegir
Read & Writeen el menú desplegable privilegioAhora debería poder instalar paquetes sin
sudoproblemas de permiso y deberían resolversefuente
Problema: no tiene permiso para escribir en los directorios que npm usa para almacenar paquetes y comandos globales.
Solución: permitir permiso para npm.
Abrir una terminal:
Ingrese este comando:
Esta solución permite permiso SOLO para los directorios necesarios, manteniendo los otros directorios agradables y seguros.
fuente
npm config get prefixdevuelve algo en la carpeta de inicio, esta solución arreglará los permisos, pero no resuelve el problema subyacente de instalar paquetes globales de manera segura para un entorno compartido.Otra gran solución aquí para configurar NPM correctamente, ejecuta los siguientes comandos:
fuente
podrías probar esto, funciona en ubuntu y mac
fuente
Lo que para mí parece ser la mejor opción es la que se sugiere en la documentación de npm , que es verificar primero dónde se instalan los módulos_nodo globales de forma predeterminada ejecutando
npm config get prefix. Si obtiene, como lo hago en Trusty,/usres posible que desee cambiarlo a una carpeta que pueda tener de forma segura sin estropear las cosas como lo hice yo.Para hacer eso, elija o cree una nueva carpeta en su sistema. Es posible que desee tenerlo en su directorio de inicio o, como yo, bajo
/usr/localconsistencia porque también soy un usuario de Mac (prefiero no tener que buscar en diferentes lugares dependiendo de la máquina en la que me encuentre). Otra buena razón para hacerlo es el hecho de que la/usr/localcarpeta probablemente ya esté en su RUTA (a menos que quiera jugar con su RUTA), pero es probable que su carpeta recién creada no lo esté y necesitaría agregarla a la carpeta RUTA en su archivo .bash-profile o .bashrc .En pocas palabras, cambié la ubicación predeterminada de los módulos globales con
npm config set prefix '/usr/local', creé la carpeta/usr/local/lib/node_modules(será utilizada por npm) y cambié los permisos para las carpetas utilizadas por npm con el comando:Ahora puede instalar globalmente cualquier módulo de forma segura. ¡Espero que esto ayude!
fuente
Así es como resolví el problema en Windows 8.1:
fuente
La mejor solución sería la que es proporcionada por la documentación de la NPM.
Para Ubuntu, la solución sugerida es la Opción # 2
Breves pasos:
Cree un directorio para instalaciones globales:
mkdir ~/.npm-globalConfigure npm para usar la nueva ruta del directorio: puede ayudarlo a verificar si el prefijo se actualizó o no. El resultado sería <Your Home Directory> /. Npm-global
npm config set prefix '~/.npm-global'npm config get prefixAbra o cree un archivo ~ / .profile y agregue esta línea:
export PATH=~/.npm-global/bin:$PATHDe vuelta en la línea de comando, actualice las variables de su sistema:
source ~/.profileEn lugar de los pasos 2-4, también puede usar la variable ENV correspondiente (por ejemplo, si no desea modificar ~ / .profile):
NPM_CONFIG_PREFIX=~/.npm-globalPara Mac, la solución sugerida es la Opción # 3
En Mac OS puede evitar este problema por completo utilizando el administrador de paquetes Homebrew
brew install nodefuente
Lo resuelvo cambiando el propietario de root a mi nombre de usuario
sudo chown -R me:me /home/me/.config/configstore/cámbiame con tu nombre de usuario y grupo.
fuente
Me gusta usar grupos de ubuntu para lograr esto en lugar de cambiar de propietario. Es bastante simple.
Primero instale nodejs y npm usando apt-get
sudo apt-get update && sudo apt-get install nodejs npmAverigua quién está conectado, es decir, nombre de usuario, ejecuta el siguiente comando para verlo en la terminal
whoamiPuede ver la lista de grupos que le asignaron usando un comando muy simple, normalmente el primer grupo es su nombre de usuario.
groupsEjecute siguiente para permitir el acceso al usuario conectado
sudo chmod 777 -R /usr/local && sudo chgrp $(whoami) -R /usr/localActualizar npm y nodejs
npm install -g npmEstás listo, tu usuario puede ejecutar comandos npm sin sudo
También puede consultar este enlace https://askubuntu.com/a/1115373/687804
fuente
En Mac OS X, cuando se instala con Homebrew
brew install npm, la ruta de instalación es/usr/local/share/npm/con ambasbin/ylib/node_modules/subcarpetas.Ejecutar este comando para cambiar de propietario a su usuario actualmente conectado debe arreglarlo todo y permitirle instalar paquetes globales de NPM sin él
sudo.osx cerveza casera
fuente
npm configlugar.En realidad, también estaba teniendo el mismo problema. Estaba ejecutando Ubuntu. El problema mío surge porque había perdido mi clave pública de Ubuntu. Incluso la actualización de mi sistema no estaba sucediendo. Estaba dando error GPG. En ese caso, puede recuperar su clave utilizando este comando:
¡Después de eso, npm funciona bien!
fuente
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:
Espero que esto ayude a los curiosos!
fuente
Esta es la solución que utilicé y trabajé. Traté de utilizar
whoaminunca funcionó.sudo chown -R $USER /usr/local/lib/node_modulesentonces
sudo chown -R $USER /usr/local/bin/npmentonces
sudo chown -R $USER /usr/local/bin/nodefuente
La respuesta de @Yves M. fue muy similar a mi solución. Aquí están los comandos que usé, que eran ligeramente diferentes de los suyos.
Luego consulte la última versión:
Luego instale la versión más nueva:
ejemplo
fuente