Acabo de reinstalar Ubuntu 12.04 LTS y, antes que nada, hice estos pasos :
Nodo instalado a través del administrador de paquetes con el siguiente script
sudo apt-get update sudo apt-get install python-software-properties python g++ make sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get install nodejs
Intenté instalar yeoman, express, n, los generadores de yeoman a nivel mundial y todos ellos devolvieron el mismo error
npm ERR! Error: EACCES, enlace simbólico '../lib/node_modules/n/bin/n'
npm ERR! {[Error: EACCES, enlace simbólico '../lib/node_modules/n/bin/n'] errno: 3, código: 'EACCES', ruta: '../lib/node_modules/n/bin/n'}
npm ERR!
npm ERR! Intente ejecutar este comando nuevamente como root / Administrator.
npm ERR! Sistema Linux 3.8.0-29-genérico
npm ERR! comando "/ usr / bin / node" "/ usr / bin / npm" "install" "-g" "-d" "n"
npm ERR! cwd / inicio / heberlz
npm ERR! nodo -v v0.10.20
npm ERR! npm -v 1.3.11
npm ERR! ruta ../lib/node_modules/n/bin/n
npm ERR! código EACCES
npm ERR! errno 3
npm ERR! Error de pila: EACCES, enlace simbólico '../lib/node_modules/n/bin/n'
npm ERR!
npm ERR! Se pueden encontrar detalles de registro adicionales en:
npm ERR! /home/heberlz/npm-debug.log
npm ERR! no está bien código 0
Propiedad recuperada de las siguientes carpetas de forma recursiva ~ / .npm, / usr / lib / node, / usr / lib / node_modules, y de los siguientes enlaces simbólicos / usr / bin / node, / usr / bin / nodejs sin ningún éxito
Necesito instalar yeoman y sus generadores sin sudo para no tener problemas más adelante :(
ln -s /usr/bin/nodejs /usr/bin/node
Respuestas:
Ubuntu 12.04 y usando el PPA de Chris Lea para instalar los siguientes trabajos para mí:
y agregando $ HOME / .npm-packages / bin a $ PATH
anexar a
.bashrc
ver https://stackoverflow.com/a/18277225 de @passy
fuente
/usr/lib/node_modules/
. O tal vez incluso sea apropiado crear un grupo unix de nodejs y darle permiso a ese grupo para escribir en ese directorio.Si ya tiene
$HOME/bin
en su camino, una solución más simple es simplemente ...$HOME/bin
directorio.Dado que esta discusión se trata realmente de reducir los riesgos de seguridad de la ejecución
sudo
, también debe tener en cuenta que cualquier aplicación de nodo podría estar instalando un nombre de aplicación que no coincide con el nombre del paquete de nodo registrado que cree que está instalando. Por lo tanto, existe el riesgo de seguridad de quenpm install
se reemplace un comando del sistema existente o uno que ya tenga$HOME/bin
. Si le preocupa, consulte primero las propiedadesbin
yscripts
en elpackage.json
archivo de la aplicación que está instalando.En general, es más seguro:
$HOME/bin
último en su ruta para que los comandos del sistema no sean reemplazados.$PATH
para que no ejecute accidentalmente un comando que esté en el directorio actual.Referencia:
fuente
npm
es que el código fuente que ve en ungithub.com
repositorio para un paquete de nodo puede no ser el mismo código que está instalando desde elnpm.org
servidor de registro!~/bin
, algunos paquetes de nodo (o sus paquetes dependientes) solo se han probado como de instalación,sudo
así que tenga en cuenta que puede encontrar un problema de "entorno de instalación" no probado. Al igual que cualquier otro problema del entorno (como el cambio de sistema operativo), el principio de "escribir una vez, probar en todas partes" sigue siendo válido.A octubre de 2014:
Node.js está disponible en el repositorio de distribuciones binarias NodeSource Debian y Ubuntu .
Eso es.
Respuesta desactualizada:
La forma más rápida sin usar sudo es como se describe aquí por Isaac
EDITAR:
Existen ciertas preocupaciones de seguridad y limitaciones de funcionalidad con respecto a cambiar la propiedad de / usr / local al usuario actual:
Dicho esto, si desea instalar un módulo global sin usar sudo, no veo una solución mejor (desde el punto de vista pragmático) que la mencionada. La seguridad frente a la facilidad de uso es un tema muy amplio, y no hay una respuesta fácil para eso, solo depende de sus requisitos.
fuente
/usr/local/lib/node_modules
ynode
El problema fue que instalé el nodo usando sudo , para evitar errores al instalar módulos npm a nivel mundial, NUNCA DEBE instalar el nodo con sudo.
Mi solución fue reinstalar el nodo de esta manera:
Descargue las últimas fuentes de nodo estable de nodejs.org # en mi caso node-v0.10.20.tar.gz
Una cosa a tener en cuenta es que solo tomar posesión de la carpeta / usr / local no funcionaría en mi caso porque la instalación del nodo en sí se realizó con sudo
Último paso para instalar yeoman: #although en yeoman.io dice que al hacer "npm install -g yo" ya instala bower y gruñido, hay algunos submódulos de gruñido que fallan, así que lo arreglé instalándolo solo
fuente
Resolví este problema con la variable de entorno y el alias de shell:
Para mí, npm no cumplió con la configuración de "prefijo" en .npmrc.
fuente
De acuerdo con esta publicación SO similar: npm arroja un error sin sudo
Parece que podría tener un problema de propiedad con el
~/.npm
directorio.Al igual que con la respuesta en esa, intente:
fuente
Encuentre la ruta al directorio de npm:
Para muchos sistemas, esto será / usr / local.
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).
Aquí está el enlace para más detalles.
https://docs.npmjs.com/getting-started/fixing-npm-permissions
fuente
bin
yshare
entre paréntesis. Ignorar puede llevar a cambiar la propiedad de estas carpetas al usuario actual y problemas con la instalación de nuevos paquetes en el sistemasudo
porque su propiedad también cambiaráSi estás en una máquina de desarrollo, es mejor que consideres usar nvm .
Si no, simplemente desea instalar usando su administrador de paquetes favorito.
Cualquiera sea el caso, recomendaría verificar esta respuesta en stackoverflow
fuente
En realidad, acabo de cambiar el permiso de una carpeta de usuario que era propiedad de root:
¡Entonces podría "npm install" e "bower install" sin sudo! Funcionó bien!
fuente
usando lubuntu 14.04.3, intenté cambiar la propiedad del prefijo .npm y npm, actualicé mi ruta, npm instaló módulos en mi directorio de inicio sin sudo pero la ruta era incorrecta, por lo que no se encontraron módulos como ember, linuxbew resolvió el problema, rápido guía de configuración aquí para nodo / npm
fuente
Este problema y otros causados por el mismo motivo se pueden resolver instalando Node en el espacio del usuario.
Puedes hacerlo simplemente copiando y pegando en tu terminal
Los mismos comandos se pueden iniciar también para actualizar Node a la última versión.
No olvides editar tu entorno. Solo una vez, haz
Echa un vistazo a este artículo para saber cómo instalar Node.js sin sudo .
Para obtener una solución más general sobre este tema (es decir, instalar software localmente), consulte dotsoftware .
fuente
solo use nvm, podrá cambiar dinámicamente entre diferentes versiones de nodo y se instalará localmente para su usuario. No se necesita sudo. Solo asegúrese de haber limpiado completamente el nodo anterior de antemano.
https://github.com/nvm-sh/nvm
fuente
La mejor solución que encontré fue instalar Node.js desde el paquete tar en el directorio de inicio del usuario y vincular la ubicación de la carpeta lib. Aquí está lo que tú necesitas hacer
Esto instalará Nodejs en ~ / .local / en lugar del predeterminado / usr / local /
Si aún encuentra un error de propiedad o permiso al instalar paquetes, cambie la propiedad de ~ / .local / dir ejecutando
Ahora debería ser bueno para instalar paquetes a través de 'npm'
Nota: TODOS LOS COMANDOS ANTERIORES DEBEN EJECUTARSE COMO USUARIO. NO USE SUDO O INICIO DE RAÍZ
NUNCA CAMBIE EL PERMISO DE CARPETAS BAJO '/ USR / LIB /'. Conducirá a un sistema operativo inestable
fuente
Las explicaciones de Pawel Grzybek me parecen muy convincentes: se reducen a 3 comandos sudo simples, sin tener que volver a usar sudo para las instalaciones globales de npm:
fuente