gpt4 book ai didi

ruby - Vagrant 默认使用 Ruby 1.9.3

转载 作者:数据小太阳 更新时间:2023-10-29 07:17:02 27 4
gpt4 key购买 nike

嘿,我正在尝试构建一个 vagrant 虚拟机。我正在使用 chef-solo 进行供应和 chef-rbenv管理我的版本。所以在 vagrantfile 中我指定

config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
chef.add_recipe "ruby_build"
chef.add_recipe "rbenv::system"
chef.add_recipe "rbenv::vagrant"
...

chef.json = {
"rbenv" => {
"rubies" => [ "1.9.3-p327" ],
"global" => "1.9.3-p327",
"gems" => {
"1.9.3-p327" => [
{ "name" => "bundler" }
]
}
}
}
end

因此默认的 ruby​​ 版本将为 1.9.3-p327,但它会崩溃

Error executing action `install` on resource 'rbenv_ruby[1.9.3-p327] (system)'

如果我没有在 vagrant 文件中指定版本(如上所示),则使用 chef 构建的默认 rbenv,这样我就可以在虚拟机中安装它。然后我明白了

vagrant@precise64:/vagrant$ rbenv install 1.9.3-p327
Downloading yaml-0.1.4.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/36c852831d02cf90508c29852361d01b
Installing yaml-0.1.4...

BUILD FAILED
...

它在我运行 sudo rbenv install 1.9.3-p327 时有效,但是在运行任何东西时我都必须在它前面加上 sudo even ruby -v

vagrant@precise64:~$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [x86_64-linux]
vagrant@precise64:~$ sudo ruby -v
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.3.0]

我怎样才能用 chef-solo 安装它。我已经尝试了整个星期,但根本无法正常工作。

最佳答案

json 要求您为 chef 指定安装 ruby​​ 的 rbenv 位置。因为 Recipe 要求您在系统级别安装 rbenv,然后在本例中为用户 lvl vagrant。

chef.add_recipe "rbenv::system"
chef.add_recipe "rbenv::vagrant"

所以我去将 json 更改为:

chef.json = {
'rbenv' => {
'user_installs' => [
{
'user' => 'vagrant',
'rubies' => ['1.9.3-p327'],
'global' => '1.9.3-p327',
'gems' => {
'1.9.3-p327' => [
{ 'name' => 'bundler' },
{ 'name' => 'rake' }
]
}
}
]
}
}

此外,当前的 rbenv 说明书经常有错误,因此最好在 cheffile 中引用该说明书的最新标记版本。

cookbook 'rbenv', git: 'git://github.com/fnichol/chef-rbenv.git', ref: "v0.7.2"

像这样。

关于ruby - Vagrant 默认使用 Ruby 1.9.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16898298/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com