Tôi đang cố chạy lệnh đầu bếp sau:
# 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
Nhưng nó liên tục thất bại vì không thể tìm thấy npm
:
thực hiện [install q và zombiejs] (Chef-redtail :: dòng mặc định 205) có lỗi: Errno :: ENOENT: Không có tệp hoặc thư mục như vậy - npm install -gq zombie nên mocha coffee-script
Đăng nhập vào vagrant qua vagrant ssh
và chạy lệnh thủ công hoạt động hoàn toàn tốt. Đăng nhập bằng root, thông qua sudo -i
và chạy lệnh không thành công vì lý do tương tự công thức đầu bếp thất bại (npm được cài đặt cục bộ chỉ dành cho người dùng mơ hồ, không phải cho root: đây là điều tôi muốn).
Vậy ... làm thế nào tôi có thể chỉ định execute
khối đầu bếp này chạy như người dùng mơ hồ và không root?
CẬP NHẬT : Tôi nghĩ rằng điều này tổng hợp vấn đề của tôi:
(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
thông qua http://tickets.opscode.com/browse/CHEF-2517
CẬP NHẬT KHÁC : Vì vậy, tôi chỉ nhận thấy sự khác biệt này:
(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
Nhận thấy sự khác biệt trong PATH
? Xuất khẩu không có /home/vagrant/.local/bin
thư mục được liệt kê trong đó ... tại sao tiếng vang đầu tiên sẽ trở lại PATH
với nó và lần xuất thứ hai trở lại PATH
mà không có nó? Đây có phải là vấn đề?