J’essaie d’installer node.js et certains paquets via Vagrant et le shell provisioner.
Je trouve trois cas:
1- Simple vagrant up
et introduction manuelle des commandes une fois à l’intérieur du vagrant ssh
2- Installation depuis bootstrap.sh appelé dans VagrantFile avec des privilèges: false
Pendant le vagrant up
tout est installé (on dit même ” Now using node v0.11.14
“)
Une fois à l’intérieur du nœud mobile vagrant ssh
, nvm et npm se trouvent dans mon dossier d’utilisateur vagrant, mais la commande de node
n’est pas reconnue, ainsi que npm
. nvm
est reconnu mais nvm ls
ne liste rien.
3- Installation depuis bootstrap.sh appelé dans VagrantFile avec les privilèges: true
Pendant le vagrant up
tout est installé (on dit même ” Now using node v0.11.14
“)
node, nvm et npm sont installés dans le répertoire / root. node_modules se trouve dans le répertoire utilisateur vagrant.
Noeud de commandes et npm introuvable
Voici le contenu de VagrantFile et bootstrap.sh
VagrantFile:
# -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "ubuntu/trusty64" config.vm.network "forwarded_port", guest: 80, host: 8080 config.vm.network "forwarded_port", guest: 3306, host: 8081 config.vm.provision "shell", path: "bootstrap.sh", privileged: false config.vm.synced_folder "Server", "/home/vagrant/Server" end
bootstrap.sh
#!/usr/bin/env bash sudo apt-get update sudo apt-get -y install build-essential libssl-dev curl https://raw.githubusercontent.com/creationix/nvm/v0.17.2/install.sh | bash source ~/.nvm/nvm.sh nvm install 0.11.14 npm install express npm install -g nodemon
Merci!
Vous devez soit append nvm use 0.11.14
ou append nvm alias default 0.11.14
à votre script de provisioning pour que nvm sache quelle version utiliser lorsque vous exécutez une commande npm ou node.
Il vous suffit de trouver où il se trouve, vous avez toujours $ PATH:
$vagrant@box# echo $PATH
va vous donner quelque chose comme
/home/vagrant/.nvm/v0.10.18/bin:/usr/local/bin:/usr/bin:/bin
Alors essayez
$vagrant@box# sudo su $root@box# /home/vagrant/.nvm/v0.10.18/bin/npm install -g qunit --save
(^^ Par exemple, lorsque j’ai installé qunit, vagrant avait l’alias mais pas de permission)
Vous pourriez avoir besoin de sudo – pas une mauvaise idée pour npm de toute façon. Mon provisioning (Vagrant + ansible) utilise root pour la plupart des choses.