Я намагаюся запустити таку команду шеф-кухаря:
# 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
Але воно не вдається, оскільки не може знайти npm
:
виконати [встановити q і zombiejs] (chef-redtail :: рядок за замовчуванням 205) сталася помилка: Errno :: ENOENT: Немає такого файлу чи каталогів - npm install -gq zombie should mocha coffee-script
Вхід у бродягу за допомогою vagrant ssh
та запуск команди вручну працює прекрасно. Увійти як root, через sudo -i
та запустити команду не вдалося з тієї ж причини, де рецепт шеф-кухаря не працює (npm встановлюється локально лише для бродячого користувача, а не для root: це те, що я хочу).
Отже ... як я можу вказати цей execute
блок шеф-кухаря для запуску як бродячого користувача, а не root?
ОНОВЛЕННЯ : Я думаю, що це підсумовує мою проблему:
(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
через http://tickets.opscode.com/browse/CHEF-2517
ІНШЕ ОНОВЛЕННЯ : Тому я щойно помітив цю невідповідність:
(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
Помічаєте різницю в PATH
? Експорт не містить /home/vagrant/.local/bin
вказаного в ньому каталогу ... чому б перший ехо повертався PATH
разом із ним, а другий повертався PATH
без нього? Це питання?