मैं निम्नलिखित शेफ कमांड चलाने की कोशिश कर रहा हूं:
# 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] (शेफ-रेडटेल :: डिफ़ॉल्ट लाइन 205) में एक त्रुटि थी: Errno :: ENOENT: ऐसी कोई फ़ाइल या निर्देशिका नहीं है - npm स्थापित -gq ज़ोंबी को कॉफी-स्क्रिप्ट को मोक करना चाहिए
vagrant ssh
मैन्युअल रूप से कमांड को चलाने और चलाने के लिए योनि में प्रवेश करना पूरी तरह से ठीक काम करता है। रूट के रूप में लॉग इन करना, sudo -i
कमांड चलाना और चलाना उसी कारण से विफल हो जाता है जब तक शेफ रेसिपी विफल हो जाती है (npm स्थानीय रूप से केवल योनि उपयोगकर्ता के लिए इंस्टॉल किया जाता है, रूट के लिए नहीं: यह वही है जो मैं चाहता हूं)।
तो ... मैं इस शेफ execute
ब्लॉक को योनि उपयोगकर्ता के रूप में चलाने के लिए कैसे निर्दिष्ट कर सकता हूं और रूट नहीं?
अद्यतन : मुझे लगता है कि यह मेरी समस्या है:
(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://ticket.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
इसके बिना लौटेगा ? क्या यह मुद्दा है?