Acabei de reinstalar o Ubuntu 12.04 LTS e, antes de mais nada, executei estas etapas :
Nó instalado via gerenciador de pacotes com o seguinte 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
Tentou instalar os geradores da yeoman, express, n, da yoman globalmente e todos eles retornaram o mesmo erro
npm ERR! Erro: EACCES, link simbólico '../lib/node_modules/n/bin/n'
npm ERR! {[Erro: EACCES, link simbólico '../lib/node_modules/n/bin/n'] errno: 3, código: 'EACCES', caminho: '../lib/node_modules/n/bin/n'}
npm ERR!
npm ERR! Por favor, tente executar este comando novamente como root / Administrator.
npm ERR! Sistema Linux 3.8.0-29-generic
npm ERR! comando "/ usr / bin / node" "/ usr / bin / npm" "install" "-g" "-d" "n"
npm ERR! cwd / home / heberlz
npm ERR! nó -v v0.10.20
npm ERR! npm -v 1.3.11
npm ERR! caminho ../lib/node_modules/n/bin/n
npm ERR! código EACCES
npm ERR! errno 3
npm ERR! Erro na pilha: EACCES, link simbólico '../lib/node_modules/n/bin/n'
npm ERR!
npm ERR! Detalhes adicionais de registro podem ser encontrados em:
npm ERR! /home/heberlz/npm-debug.log
npm ERR! código não ok 0
Propriedade recuperada das seguintes pastas recursivamente ~ / .npm, / usr / lib / node, / usr / lib / node_modules e dos seguintes links simbólicos / usr / bin / node, / usr / bin / nodejs sem sucesso
Preciso instalar o yeoman e seus geradores sem sudo para não ter problemas mais tarde :(
ln -s /usr/bin/nodejs /usr/bin/node
Respostas:
Ubuntu 12.04 e usando o PPA de Chris Lea para instalar o seguinte funciona para mim:
e adicionando $ HOME / .npm-packages / bin a $ PATH
anexar a
.bashrc
consulte https://stackoverflow.com/a/18277225 de @passy
fonte
/usr/lib/node_modules/
. Ou talvez até apropriado criar um grupo nodejs unix e conceder a esse grupo permissão para gravar nesse diretório.Se você já está
$HOME/bin
no seu caminho, uma solução mais simples é apenas ...$HOME/bin
diretório.Como essa discussão é realmente sobre a redução dos riscos de segurança da execução
sudo
, você também deve estar ciente de que qualquer aplicativo de nó pode estar instalando um nome de aplicativo que não corresponde ao nome do pacote de nó registrado que você pensa que está instalando. Portanto, há um risco de segurança de que umnpm install
substitua um comando do sistema existente ou um que você já possui$HOME/bin
. Se estiver preocupado, verifique as propriedadesbin
escripts
nopackage.json
arquivo do aplicativo que você está instalando primeiro.Em geral, é mais seguro:
$HOME/bin
último no caminho para que os comandos do sistema não sejam substituídos.$PATH
para que você não execute acidentalmente um comando que esteja no diretório atual.Referência:
fonte
npm
é que o código-fonte que você vê em umgithub.com
repositório para um pacote de nós pode não ser o mesmo código que você está instalando nonpm.org
servidor de registro!~/bin
, alguns pacotes de nós (ou seus pacotes dependentes) foram testados apenas como instalação,sudo
portanto, esteja ciente de que você pode encontrar um problema não testado do "ambiente de instalação". Como qualquer outro problema de ambiente (como mudança de SO), o princípio de "escreva uma vez, teste em qualquer lugar" ainda é válido.Em outubro de 2014:
O Node.js está disponível no repositório de distribuições binárias NodeSource Debian e Ubuntu .
É isso aí.
Resposta desatualizada:
A maneira mais rápida sem usar o sudo é como descrito aqui por isaac
EDITAR:
Existem algumas preocupações de segurança e limitações de funcionalidade relacionadas à alteração da propriedade de / usr / local para o usuário atual:
Dito isto, se você deseja instalar o módulo global sem usar o sudo, não vejo melhor solução (do ponto de vista pragmático) do que o mencionado. Segurança vs fácil de usar é um tópico muito amplo, e não há uma resposta fácil para isso - depende apenas de seus requisitos.
fonte
/usr/local/lib/node_modules
enode
O problema foi que eu instalei o nó usando o sudo , para evitar erros ao instalar os módulos npm globalmente, DEVE NUNCA instalar o nó com o sudo.
Minha solução foi reinstalar o nó desta maneira:
Faça o download das fontes de nó estáveis mais recentes em nodejs.org #no meu caso node-v0.10.20.tar.gz
Uma coisa a notar é que apenas a propriedade da pasta / usr / local não funcionaria no meu caso porque a instalação do nó foi feita com o sudo
Último passo para instalar o yeoman: # apesar de em yeoman.io dizer que fazer "npm install -g yo" já instala o bower e o grunhido, existem alguns sub-módulos de grunhido que falham, então eu o corrigi instalando-o sozinho
fonte
Resolvi esse problema com a variável de ambiente e o alias do shell:
Para mim, o npm não respeitou a configuração "prefix" no .npmrc.
fonte
De acordo com este post SO semelhante: o npm lança um erro sem o sudo
Parece que você pode ter um problema de propriedade com o
~/.npm
diretório.Como na resposta, tente:
fonte
Encontre o caminho para o diretório do npm:
Para muitos sistemas, este será / usr / local.
Mude o proprietário dos diretórios do npm para o nome do usuário atual (seu nome de usuário!):
Isso altera as permissões das subpastas usadas pelo npm e algumas outras ferramentas (lib / node_modules, bin e share).
Aqui está o link para mais detalhes
https://docs.npmjs.com/getting-started/fixing-npm-permissions
fonte
bin
eshare
entre parênteses. Ignorar pode levar à alteração da propriedade dessas pastas para o usuário atual e a problemas na instalação de novos pacotes no sistema,sudo
porque a propriedade também será alteradaSe você estiver em uma máquina em desenvolvimento, é melhor considerar o uso do nvm .
Caso contrário, você simplesmente deseja instalar usando seu gerenciador de pacotes favorito.
Seja qual for o caso, recomendo verificar esta resposta no stackoverflow
fonte
Na verdade, acabei de alterar a permissão de uma pasta de usuário pertencente ao root:
Então eu poderia "npm install" e "bower install" sem o sudo! Funcionou bem!
fonte
Usando o lubuntu 14.04.3, tentei alterar a propriedade do prefixo .npm e npm, atualizei o meu caminho, o npm instalou os módulos no meu diretório home sem o sudo, mas o caminho estava incorreto para que os módulos como brasa não fossem encontrados, o linuxbew resolveu o problema rapidamente guia de configuração aqui para o nó / npm
fonte
Esse problema e outro causado pelo mesmo motivo podem ser resolvidos instalando o Node no espaço do usuário.
Você pode fazer isso apenas copiando e colando no seu terminal
Os mesmos comandos podem ser iniciados também para atualizar o Node para a versão mais recente.
Não se esqueça de editar seu ambiente. Apenas uma vez, faça
Confira este artigo como sobre como instalar o Node.js sem o sudo .
Para uma solução mais geral sobre este tópico (por exemplo, instalar software localmente), consulte dotsoftware .
fonte
basta usar o nvm, você poderá alternar dinamicamente entre diferentes versões de nós e ele será instalado localmente para o usuário. Não é necessário sudo. Apenas verifique se você limpou completamente o nó antigo com antecedência.
https://github.com/nvm-sh/nvm
fonte
A melhor solução que encontrei foi instalar o Node.js do pacote tar no diretório inicial do usuário e vincular o local da pasta lib. Aqui está o que você precisa fazer
Isso instalará o Nodejs em ~ / .local / em vez do padrão / usr / local /
Se você ainda encontrar um erro de propriedade ou permissão ao instalar pacotes, altere a propriedade de ~ / .local / dir executando
Agora você deve ser bom em instalar pacotes via 'npm'
Nota: TODOS OS COMANDOS ACIMA SÃO DE EXECUÇÃO COMO USUÁRIO. NÃO USE SUDO OU ROOT LOGIN
NUNCA MUDE A PERMISSÃO DE PASTA SOB '/ USR / LIB /'. CONDUZIRÁ AO SO instável
fonte
Acho as explicações de Pawel Grzybek muito convincentes: elas se resumem a três comandos sudo simples, nunca mais sendo necessário usar o sudo novamente para instalações globais do npm:
fonte