1 votes

Le nœud est installé lors du provisionnement sur vagrant mais disparaît lors de la connexion à ssh.

Je commence vraiment à en avoir marre et je ne sais pas ce qui ne va pas. J'utilise Vagrant 1.7.2 , Ubuntu 13.04 , Virtual Box 4.3 12 r93733

Ma machine hôte est Windows 8.1

Voici mon nœud bootstrap script trouvé sur mon 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

Pendant le provisionnement, j'ai pu voir que le nœud est installé correctement. J'ai pu voir que le J'utilise maintenant le nœud v0.12 . J'ai également pu constater que le npm install sont réussis

Cependant, lorsque je me connecte en utilisant vagabond ssh . Je reçois Aucune commande 'nvm' trouvée . Et Le programme 'node' se trouve dans les paquets suivants : . J'ai également vérifié ~/.nvm/ il n'existe pas.

Ça devient encore plus bizarre. Donc pendant que je suis à ssh, je réexécute le script à nouveau. Alors nvm est maintenant correctement installé et je pouvais utiliser node.

3voto

Daniel Points 31

Eh bien, j'ai trouvé comment le faire. Et c'est très facile (bien plus facile que je ne l'ai dit).

En un mot, suivez les étapes suivantes :

  1. Configurer Vagrantfile pour qu'il soit exécuté en tant qu'utilisateur normal :

    config.vm.provision "shell", path: "provision.sh", privileged: false
  2. Dans votre fichier de provision, faites ceci :

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

La commande ci-dessus va, tout d'abord, installer nvm à partir de github creationix, et rafraîchir le Shell pour activer la disposition à utiliser les commandes nvm pour installer node et npm.

  1. Ensuite, tu fais juste ça :

    nvm install stable
    nvm alias default stable

Le "stable" sera toujours la dernière version stable du nœud. Donc si vous voulez une version particulière, il suffit de changer le 'stable' pour la version dont vous avez besoin.

La deuxième ligne, où vous tapez nvm alias, indique simplement à nvm qu'il doit utiliser par défaut la version que vous lui avez passée. Ainsi nvm saura quelle version de node appeler lorsque nvm lancera les commandes de node et npm.

Crédits à djheru pour avoir clarifié les choses ici https://stackoverflow.com/a/26691455

2voto

ChiperSoft Points 121

Sauf erreur de ma part, vagrant provisioning fonctionne en tant que root. L'installation de NVM est spécifique à l'utilisateur, et elle ajoute des commandes à la configuration bash de l'utilisateur actuel (dans ce cas, root). Sans ces commandes, NPM n'est pas disponible dans le Shell. Vous devez installer NVM et node en tant qu'utilisateur de vagrant, et non en tant que root.

Aussi, vous utilisez une ancienne version de 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'

1voto

bman Points 121

C'est ainsi que j'ai résolu le problème. Je n'ai pas encore essayé vos réponses, donc je ne peux en accepter aucune, mais c'est ce qui a fonctionné pour moi.

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

0voto

Daniel Points 31

Tout d'abord, je dois dire que ma réponse n'est pas une réponse complète, alors lisez-la attentivement.

Vous devez vérifier si votre fichier Vagrantfile exécute la provision en tant que root. Si c'est le cas, vous devez changer pour utiliser un utilisateur normal :

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

En privileged: false fera ce changement pour vous.

Ensuite, vous devrez rafraîchir le Shell après la commande d'installation de nvm depuis github :

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

En source $HOME/.nvm/nvm.sh le fera pour vous. Vous pouvez attacher cette commande à votre fichier .bashrc, dans $HOME/.bashrc dans le vagabond.

La chose triste est que vous devrez exporter certaines variables d'environnement de node et npm et mettre la commande dans .bashrc aussi de sorte que lorsque vous entrez via ssh dans vagrant vous serez en mesure d'utiliser les commandes node et npm, mais je ne sais pas encore les bonnes commandes pour le faire, c'est pourquoi je me retrouve ici hehehe....

Oh, et après avoir ajouté les commandes au .bashrc, vous devez rafraîchir le Shell faisant :

source $HOME/.bashrc

Bien, maintenant je dois juste trouver comment exporter les variables lors de l'installation de node avec nvm pour compléter cette tâche hehe....

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X