Comando não encontrado ao executar o pacote node.js n no sudo

13

Estou tentando atualizar minha versão do nó para a última estável.

Usando este recurso , consegui:

sudo npm install n -g

Mas quando eu tento

sudo npm n stable

Eu recebo:

sudo: n: command not found

Se eu executar n stable, o comando está presente:

n stable
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

     install : node-v0.12.2
       mkdir : /usr/local/n/versions/node/0.12.2
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

  Error: sudo required
JonRed
fonte
Boa idéia, mas quando eu faço que ele retorna me 'n: comando não encontrado', mesmo que eu deixei cair o 'sudo'
JonRed
sudo sh -c "PATH = $ PATH; n estável" <nova linha> sh: 1: n: não encontrado
JonRed 13/15
Nenhuma saída. Isso é deprimente :-(
JonRed 13/04/2015
Vamos continuar esta discussão no chat .
precisa saber é o seguinte
Por favor, publique a saída dels /usr/local/bin/n
Helio

Respostas:

5

Surpreendentemente, sua npminstalação possui o prefixo global em uma pasta chamada npmno diretório inicial, isso significa que qualquer pacote instalado com o -gsinalizador será instalado nessa pasta.

Você pode alterar esta pasta para qualquer pasta que esteja no sudocaminho seguro, seguindo estas etapas:


Maneira gráfica:

  1. Abra um gerenciador de arquivos (também conhecido como Nautilus).
  2. Navegue para a sua pasta pessoal.
  3. Pressione Ctrl+ Hpara mostrar os arquivos ocultos.
  4. Abra um arquivo chamado .npmrccom seu editor de texto favorito.
  5. Encontre uma linha nesse arquivo com este conteúdo:

    prefix=/home/<your_username>/npm
    
  6. Substitua /home/<your_username>/npmpor um caminho seguro (como /usr/local/bin).
  7. Uma vez substituído, ficará assim:

    prefix=/usr/local/bin
    
  8. Salve o arquivo.
  9. Corra novamente sudo npm install n -g

Maneira terminal:

Execute este comando:

sed -i.bak "s%^prefix=.*$%prefix=/usr/local/bin%" ~/.npmrc
Helio
fonte
Eu acho que isso acertou em cheio! Também me ajudou agora quando atualizei minha versão do npm, mas não a reconhecia. Então, aceito e obrigado!
precisa saber é o seguinte
Não ajudou, ainda é o mesmo isssue: /
Luckylooke
Isso me ajudou! Eu não tinha ~ / arquivo .npmrc, então eu adicionei-lo e agora ele funciona muito bem
Kirill Gusyatin
2
Cuidado: isto irá desfazer Opção 2 de fixação permissões NPM
Edson Horacio Júnior
23

Eu encontrei a solução que funcionou para mim:

sudo -E env "PATH=$PATH" n stable

Encontre-o aqui: /programming//a/29400598/861615

Luckylooke
fonte
env: n: Não
existe
1
@ user3311522 você usou: sudo npm install n -gantes sudo -E env "PATH=$PATH" n stable??
Luckylooke
2

Eu sei que este é um fórum do Ubuntu, mas tenho certeza de que isso ajudará alguém com o mesmo problema nos sabores do RHEL que pesquisou no Google aqui como eu. Talvez também funcione no Ubuntu.

Esta é a abordagem :

ln -s /usr/local/bin/n /usr/bin/n
chique
fonte
0

Para evitar mexer com a .npm-globalpasta, como observado por Edson Horacio Junior, e com base na resposta de @ pohest , eis como eu a corrigi :

sudo ln -s /home/<username>/.npm-global/bin/n /usr/local/bin/n
sudo n --version # test it

Como observação, isso provavelmente não funcionará se você não seguiu as etapas do npm para alterar o diretório global padrão .

Gus
fonte
0

Encontrei uma solução que funcionou para mim. Use o nvmpacote para baixar o nó mais recente.

  1. Instale o nvm usando o comando abaixo

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

  1. Crie uma variável de ambiente para usar o nvm
export NVM_DIR="${XDG_CONFIG_HOME/:-$HOME/.}nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
  1. Tente nvm -vse não conseguir ver nvminstalado, execute o script abaixo

command -v nvm

  1. Para instalar o nó, execute o comando abaixo

nvm install node

  1. Após reiniciar o terminal, tente verificar a versão do nó, que deve ser atualizado

node -v

Mais informações aqui: https://github.com/nvm-sh/nvm

Jacek Góraj
fonte
0

Isso significa que você não possui N instalado em seu sistema, N é um gerenciador de versão de nó baseado em npm. Você pode instalá-lo instalando primeiro alguma versão do nó e depois executando

sudo npm install -g n

agora você pode instalar a versão no nó usando o comando n

sudo n stable

O acima irá instalar a versão estável mais recente

sudo n lates

isso instalará a versão lates

você também pode instalar a versão específica especificando a versão como abaixo

sudo n  10.16.0
satyam chinna
fonte
-1

Eu encontrei o mesmo problema, é assim que você pode resolvê-lo:

  1. Obter prefixo de configuração npm
    npm config get prefix 
    // get -> ${myhome}/.npm-global
  2. Adicione as seguintes linhas em .zshrc

    # Specify `n` to put the version of `node` in the `.n` directory.
    export N_PREFIX=${myhome}/.npm-global/.n
    
    # Make `nman` command work
    export PATH=${myhome}/.npm-global/bin:$PATH
    
    # Add this line to use `node -v` command
    export PATH=${myhome}/.npm-global/.n/bin:$PATH

Referência: GitHub - tj / n: Gerenciamento de versão do nó

Nota do editor: Esta resposta foi originalmente escrita em chinês e foi traduzida e editada usando ferramentas online. Para ver a resposta original, consulte a Revisão # 1

dingyanhe
fonte