Mencionei que meu aplicativo usa uma versão diferente do NodeJS ao ser executado sudo
.
$ node -v
v0.10.23
$ sudo node -v
v0.11.8-pre
Este v0.11.8-pre me causou alguns problemas, então definitivamente não quero usá-lo, mas não posso alterá-lo para root.
$ sudo nvm use v0.10.23
sudo: nvm: command not found
Eu tentei instalar o nvm do usuário root, mas obtive o erro "NVM já instalado", mas ainda não foi encontrado o nvm durante a execução sudo
. Qual é o meu problema?
sudo -s
e instalenvm
.Respostas:
A lista de comandos abaixo (fonte: digitalocean ) parece resolver o problema
O comando acima é um pouco complicado, mas tudo o que ele faz é copiar qualquer versão do nó que você tenha ativo via nvm para o
/usr/local/
diretório (onde os arquivos globais instalados pelo usuário devem residir em um VPS Linux) e definir as permissões para que todos os usuários possam acessá-los .Espero que isto ajude!
fonte
chmod: cannot operate on dangling symlink ‘/home/ec2-user/.nvm/versions/node/v7.1.0/bin/node-debug’ chmod: cannot operate on dangling symlink ‘/home/ec2-user/.nvm/versions/node/v7.1.0/bin/node-inspector’
Minha solução é criar links simbólicos a partir das versões de
node
enpm
estou usando para/usr/local/bin
:Isso torna
npm
e estánode
disponível para todos os usuários.fonte
npx
bastante frequência. Então eu adicionei também:sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npx" "/usr/local/bin/npx"
babel-node
Seu problema é que
nvm
não está no caminho quando você usasudo
.Então digite
e o resultado será algo como
Tente novamente agora com
sudo
:Presumo que você tenha o problema de que o usuário root não consegue encontrar a versão 0.10.13, mas vamos ver a próxima mensagem de erro ...
fonte
which nvm
não produz nadasudo
. Sim, posso fazer o login como root e instalar o nvm, mas no futuro não poderei executarsudo nvm use v0.10.25
. Portanto, não pude usarsudo node
do usuário também.which nvm
nunca funciona, não é?nvm
não é um executável, é uma função shell. github.com/creationix/nvm/issues/540which nvm
aqui: stackoverflow.com/questions/49156104/… Usetype nvm
para revelar sua definição. Como Matt disse, é uma função shell.A razão fundamental é porque
nvm
não é um programa real. É uma função bash que é carregado no usuário de.profile
,.bashrc
ou ... Então,sudo
não pegá-lo automaticamente a partir do $ PATH como a maioria dos outros programas.Um gerenciador de versão de nó alternativo é
n
: https://github.com/tj/n . Este é um programa real, entãosudo
irá pegá-lo via $ PATH sem quaisquer hacks (contanto quesudo
tenha/usr/local/bin
em seu $ PATH).fonte
De acordo com README
Precisa de sudo npm?
No meu caso, preciso de
sudo npm run start
qual precisa de acesso a algum arquivo que requer acesso root. De acordo com este problema ,Em suma
O mantenedor do nvm acredita fortemente que não precisamos
sudo
: Pfonte
Eu também tive o seu problema. Finalmente resolvi isso. Aqui está minha solução:
apt-get purge nodejs
.Depois de reiniciar seu terminal, você pode executar o comando
sudo nvm ls
.fonte
fonte
Eu tentei o mesmo na minha máquina onde também tentei
nvm
e obtive uma resposta ligeiramente diferente:Meu palpite é que você instalou o nó 0.11 fora do nvm. ( Via gerenciador de pacotes ou mesmo da fonte )
Portanto, executar o nó por meio do sudo selecionaria esse nó independente.
Isso faz sentido ou estou enganado?
fonte
Instale nvm globalmente com
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | sudo bash
fonte
| bash
, no sudo em lugar nenhum: nvm-sh / nvm: Node Version ManagerA solução mais fácil para isso provavelmente será acessar o executável nvm.sh onde quer que ele esteja.
Isso funciona bem para mim (assumindo que seja o caminho de instalação).
O procedimento de instalação completo pareceria
E então você pode executar o comando acima para acessar o nvm.sh recém-instalado
fonte