Aşağıdaki şef komutunu çalıştırmaya çalışıyorum:
# 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
Ama başarısız olmaya devam ediyor çünkü bulamıyor npm
:
execute [q ve zombiejs'i yükle] (chef-redtail :: varsayılan satır 205) bir hata verdi: Errno :: ENOENT: Böyle bir dosya veya dizin yok - npm install -gq zombi mocha kahve komut dosyası yapmalı
Vagrant'ta oturum açmak vagrant ssh
ve komutu manuel olarak çalıştırmak mükemmel şekilde çalışır. Kök olarak oturum açmak sudo -i
, komutun çalıştırılması ve çalıştırılması, şef tarifinin başarısız olmasından dolayı başarısız olur (npm yerel olarak yalnızca vagrant kullanıcısı için kurulur, kök için değil: bu istediğim şey).
Öyleyse ... bu şef execute
bloğunu kök kullanıcı olarak değil, vagrant kullanıcı olarak çalışacak şekilde nasıl belirleyebilirim ?
GÜNCELLEME : Sanırım bu benim sorunumu özetliyor:
(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 aracılığıyla
BAŞKA BİR GÜNCELLEME : Yani bu tutarsızlığı fark ettim:
(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
Farkı fark ettiniz PATH
mi? Dışa aktarma işleminde /home/vagrant/.local/bin
dizin listelenmiyor ... neden ilk yankı PATH
onunla geri dönüyor ve ikinci dışa aktarım PATH
olmadan geri dönüyor ? Sorun bu mu?