Próbuję uruchomić następujące polecenie szefa kuchni:
# install zombiejs, q (promises), should, coffee-script & mocha
execute "install q and zombiejs" do
cwd "/home/vagrant"
user "vagrant"
action :run
command "npm install -g q zombie should mocha coffee-script"
end
Ale ciągle zawodzi, ponieważ nie może znaleźć npm
:
Wykonaj [zainstaluj q i zombiejs] (szef-redtail :: domyślna linia 205) miał błąd: Errno :: ENOENT: Brak takiego pliku lub katalogu - npm zainstaluj -gq zombie powinien mocha skrypt skryptowy
vagrant ssh
Ręczne logowanie się do włóczęgi i uruchomienie polecenia działa idealnie. Logowanie się jako root, przez sudo -i
i uruchomienie polecenia kończy się niepowodzeniem z tego samego powodu, dla którego przepis szefa kuchni się nie powiedzie (npm jest instalowany lokalnie tylko dla włóczęgi, a nie dla roota: tego właśnie chcę).
Więc ... jak mogę określić ten execute
blok szefa kuchni , aby działał jako włóczęga, a nie root?
AKTUALIZACJA : Myślę, że to podsumowuje mój problem:
(ssh) /vagrant git:backbone ❯ whoami
vagrant
(ssh) /vagrant git:backbone ❯ which npm
/home/vagrant/.local/bin/npm
(ssh) /vagrant git:backbone ❯ echo $PATH
/home/vagrant/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
(ssh) /vagrant git:backbone ❯ sudo -H -u vagrant -i echo $PATH
/home/vagrant/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
(ssh) /vagrant git:backbone ❯ sudo -H -u vagrant -i which npm
npm not found
przez http://tickets.opscode.com/browse/CHEF-2517
KOLEJNA AKTUALIZACJA : Właśnie zauważyłem tę rozbieżność:
(ssh) /vagrant git:backbone ❯ sudo -H -u vagrant -i echo $PATH
/home/vagrant/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
(ssh) /vagrant git:backbone ❯ sudo -H -u vagrant -i export
HOME=/home/vagrant
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LOGNAME=vagrant
MAIL=/var/mail/vagrant
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
SHELL=/bin/zsh
SSH_AUTH_SOCK=/tmp/ssh-uJUopA4146/agent.4146
SUDO_COMMAND='/bin/zsh -c export'
SUDO_GID=1001
SUDO_UID=1000
SUDO_USER=vagrant
TERM=xterm
USER=vagrant
Czy zauważysz różnicę w PATH
? Eksport nie ma w nim /home/vagrant/.local/bin
katalogu ... dlaczego pierwsze echo miałoby PATH
z nim wrócić , a drugi eksport PATH
bez niego? Czy to jest problem?