Saya mencoba menjalankan perintah koki berikut:
# 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
Tetapi terus gagal karena tidak dapat menemukan npm
:
mengeksekusi [install q dan zombiejs] (chef-redtail :: default line 205) memiliki kesalahan: Errno :: ENOENT: Tidak ada file atau direktori seperti itu - npm install -gq zombie harus mocha coffee-script
Masuk ke gelandangan melalui vagrant ssh
dan menjalankan perintah secara manual berfungsi dengan baik. Masuk sebagai root, melalui sudo -i
dan menjalankan perintah gagal karena alasan yang sama resep koki gagal (npm diinstal secara lokal hanya untuk pengguna gelandangan, bukan untuk root: ini yang saya inginkan).
Jadi ... bagaimana saya bisa menentukan execute
blok koki ini untuk dijalankan sebagai pengguna gelandangan dan bukan root?
UPDATE : Saya pikir ini meringkas masalah saya:
(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
via http://tickets.opscode.com/browse/CHEF-2517
PEMBARUAN LAIN : Jadi saya perhatikan perbedaan ini:
(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
Perhatikan perbedaannya PATH
? Ekspor tidak memiliki /home/vagrant/.local/bin
direktori yang terdaftar di dalamnya ... mengapa gema pertama kembali PATH
dengan itu dan ekspor kedua PATH
tanpa itu? Apakah ini masalahnya?