Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了`执行`作为流浪的用户,而不是root,与chef-solo?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在尝试运行以下主厨命令: # install zombiejs, q (promises), should, coffee-script & mocha execute "install q and zombiejs" do cwd "/home/vagrant"
我正在尝试运行以下主厨命令:
# 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:@H_944_19@

通过vagrant ssh登录到vagrant并手动运行命令可以很好地完成.以root身份登录,通过sudo -i并运行命令失败,原因与主厨配方失败相同(npm仅在本地安装为流浪者用户,而不是root用户:这就是我想要的).@H_944_19@

那么……我怎样才能指定这个厨师执行块作为流浪者用户而不是root用户?@H_944_19@

更新:我认为这总结了我的问题:@H_944_19@

(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@H_944_19@

一个更新:所以我只是注意到这种差异:@H_944_19@

(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目录…为什么第一个echo会返回PATH,第二个导出返回PATH而没有它?这是问题吗?@H_944_19@

解决方法

要以用户身份执行脚本或命令,您需要组合su -l和bash -i:
execute "npm_install" do
    command "su vagrant -l -c 'cd /shared-with-host/HelperScripts/ && bash -i npm install -g q zombie should mocha coffee-script'" 
    action :run
  end

由于some bugs,chef没有为执行中的指定用户正确设置环境. narced133的解决方案无效.@H_944_19@

大佬总结

以上是大佬教程为你收集整理的`执行`作为流浪的用户,而不是root,与chef-solo?全部内容,希望文章能够帮你解决`执行`作为流浪的用户,而不是root,与chef-solo?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。