我正在尝试通过 Vagrant/Chef-solo 构建一个基于 Centos 6.4 并使用 vagrant-omnibus (1.1.2) 的开发框,以确保该框使用最新的 Chef(同时创建/整理食谱,然后我'可能会冻结版本)。目前它安装 11.8.2。
其中一本食谱ruby_build
用于安装 Ruby 2.0.0-p353,然后在 /usr/local/bin 下创建符号链接,以便在厨师运行完成后 Ruby 可供所有用户使用。它还安装了一些我想在系统范围内强制安装的 gem。
问题是gem_package
在执行后使用资源ruby_build
将 gem 安装在 Chef Omnibus 安装的嵌入式 ruby 中。到目前为止,我使用gem_binary
强制检测系统范围的 Ruby 环境的选项解决了这个问题,但这让我开始思考,所以我检查了在 Chef 运行期间使用了哪个 PATH(使用 ashell_out
将 PATH 打印到文件)并发现它显示以下内容:
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/chef/embedded/bin:/opt/chef/embedded/bin:/usr/local/bin
那是从哪里来的?如何/为什么在之前/opt/chef/embedded/bin
添加? /usr/local/bin