O nó é instalado durante o provisionamento no vagrant, mas desaparece ao conectar-se ao ssh

1

Estou realmente me cansando disso e não sei o que está errado. Estou usando o Vagrant 1.7.2 , Ubuntu 13.04 , Caixa Virtual 4.3 12 r93733

Minha máquina host é Windows 8.1

Aqui está o meu script de boot do nó encontrado no meu bootstrap.sh

echo "--- Installing Node.js ---"
curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | bash
source ~/.nvm/nvm.sh
nvm install 0.12
nvm use 0.12
sudo cp ~/.nvm/versions/nodejs/v0.12/bin/node /bin/node

echo "--- Install node app dependencies --"
cd /var/www/html/node
npm install express
npm install youtube-audio-stream

Durante o provisionamento, pude ver que o nó está instalado corretamente. Eu pude ver o Agora usando o nó v0.12 . Também pude ver que o npm install foi bem-sucedido

No entanto, quando me conecto usando vagrant ssh . Eu recebo Nenhum comando 'nvm' encontrado . E O programa 'node' pode ser encontrado nos seguintes pacotes: . Eu também verifiquei o diretório ~ / .nvm / , ele não existe.

Torna-se ainda mais estranho. Então, enquanto estou no ssh, repasso o script novamente. Então o nvm está agora corretamente instalado e eu poderia usar o node.

    
por bman 23.02.2015 / 22:58

4 respostas

3

Bem, eu encontrei como fazer isso. E é muito fácil (muito mais fácil do que eu disse).

Em poucas palavras, siga estas etapas:

  1. Defina o Vagrantfile para ser executado como usuário normal:

    config.vm.provision "shell", path: "provision.sh", privileged: false
    
  2. Dentro do seu arquivo de provisão, faça isso:

    curl https://raw.githubusercontent.com/creationix/nvm/v0.24.1/install.sh | bash
    source $HOME/.nvm/nvm.sh
    

O comando acima irá, primeiro, instalar o nvm a partir do github creationix, e atualizar o shell para permitir que a provisão use os comandos nvm para instalar o nó e o npm.

  1. Depois, faça isso:

    nvm install stable
    nvm alias default stable
    

O 'stable' sempre será a última versão estável do nó. Então, se você quer uma versão em particular, basta mudar o 'stable' para a versão que você precisa.

A segunda linha, onde você digita o alias nvm, é apenas dizer ao nvm que ele precisa usar como padrão a versão que você passou para ele. Então o nvm saberá qual versão do nó chamar quando o nvm executar os comandos do nó e do npm.

Créditos ao djheru para esclarecer as coisas aqui link

    
por Daniel 23.04.2015 / 02:09
2

A menos que eu esteja enganado, o provisionamento vagrant é executado como root. A instalação do NVM é específica para o usuário e adiciona comandos à configuração bash do usuário atual (neste caso, root). Sem esses comandos, o NPM não está disponível no shell. Você precisa instalar o NVM e o nó como o usuário errante, não o root.

Além disso, você está usando uma versão antiga do NVM.

sudo su vagrant -c 'curl https://raw.githubusercontent.com/creationix/nvm/v0.23.3/install.sh | bash'
sudo su vagrant -c '. ~vagrant/.nvm/nvm.sh;nvm install v0.12'
sudo su vagrant -c '. ~vagrant/.nvm/nvm.sh;nvm use v0.12'
    
por ChiperSoft 25.02.2015 / 22:26
0

Antes de mais nada, devo dizer que minha resposta não é completa, então leia com atenção.

Você precisa verificar se o seu Vagrantfile está executando a provisão como root. Se assim for, você precisa mudar para usar como usuário normal:

config.vm.provision "shell", path: "provision.sh", privileged: false

O privileged: false fará essa alteração para você.

Em seguida, você precisará atualizar o shell após o comando para instalar o nvm no github:

curl https://raw.githubusercontent.com/creationix/nvm/v0.24.1/install.sh | bash
source $HOME/.nvm/nvm.sh

O source $HOME/.nvm/nvm.sh fará isso por você. Você pode anexar este comando ao seu arquivo .bashrc, em $HOME/.bashrc dentro do vagrant.

O triste é que você precisará exportar algumas variáveis de ambiente do nó e do npm e colocar o comando dentro do .bashrc também, então quando você entrar via ssh no vagrant você será capaz de usar os comandos node e npm, mas eu ainda não sei os comandos certos para fazer isso, é por isso que eu acabo aqui hehehe ...

Ah, e depois de adicionar os comandos ao .bashrc, você precisa atualizar o shell fazendo:

source $HOME/.bashrc

Bem, agora eu só preciso encontrar como exportar as variáveis ao instalar o nó com nvm para completar esta tarefa hehe ...

    
por Daniel 23.04.2015 / 01:32
0

Esta é a maneira que eu resolvi isso. Eu ainda não tentei suas respostas, então não posso aceitar nada, mas é isso que funcionou para mim.

git clone https://github.com/creationix/nvm.git /home/vagrant/.nvm && cd /home/vagrant/.nvm && git checkout 'git describe --abbrev=0 --tags'
source /home/vagrant/.nvm/nvm.sh
nvm install 0.12
nvm use 0.12
n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local
    
por bman 29.03.2016 / 02:24