簡體   English   中英

使用Chef和Vagrant在Ubuntu上安裝Ruby 1.9.2

[英]Installing Ruby 1.9.2 on Ubuntu using Chef and Vagrant

我想用Ruby 1.9.2配置一個新的Ubuntu 10.04盒子。 我正在使用Vagrant和Chef Solo為盒子提供我需要的一切(例如Rails,Rake,MongoDB)。 默認的Ruby版本是1.8.7。

有沒有辦法安裝Ruby 1.9.2作為Vagrant / Chef配置過程的一部分?

我在Chef網站上讀到了關於使用我自己的bootstrap模板 - 可能還有刀 - 比如這個 ,但因為我使用Vagrant我不知道在哪里放這個模板 - 我沒有廚師 - repo,.chef目錄,甚至是/ etc / chef中安裝的任何Chef東西。

首先,一點背景。 大多數Vagrant基本框都安裝了Ruby供Ch​​ef和Puppet使用,但是最新的基本框用於/ opt / ruby​​而不是使用系統包。 他們還將/ opt / ruby​​ / bin添加到路徑中,但最后。

此VeeWee模板顯示了當前如何構建10.04框: https//github.com/jedi4ever/veewee/blob/master/templates/ubuntu-10.04.3-server-i386/postinstall.sh

至於你的問題,他們可能會嘗試解決幾種不同的情況,每種情況都有不同的解決方案。 希望其中一個將是您正在尋找的。

使用1.9.2運行Chef配方

您可能想要在1.9.2下測試正在運行的Chef配方,並且您不希望1.8.7在您的盒子附近的任何地方。 解決這個問題的最佳方法是創建自己的VeeWee模板並為自己構建一個新的basebox。 你可以修改上面鏈接的那個來編譯1.9.2而不是1.8.7並按照https://github.com/jedi4ever/veewee上的說明進行操作

使用Ruby 1.9.2開發

可能更有可能的是你想使用1.9.2破解一些Ruby代碼。 為此,您只需安裝Ruby並在/ opt / ruby​​條目之前在路徑上包含二進制文件。 有幾種方法可以做到這一點:

所有這些都可以使用Chef配方進行管理。 我可能不會選擇編譯選項,只留下直接下載和包資源,或者下面的RVM cookbook可能很方便http://community.opscode.com/cookbooks/rvm用於RVM。

包資源上的* gem_binary *選項在這里也可能有用,具體取決於您希望如何確保為新的1.9.2 Ruby安裝gem(而不是1.8.7 in opt)

knife bootstrap的目標是將Chef安裝在目標系統上,以便它可以運行Chef Client。 Vagrant baseboxs往往已經安裝了Chef,所以除非你正在做一些特定的事情,並且想要運行多個版本的Chef,否則我會避開這條路線。 http://vagrantup.com/docs/provisioners/chef_solo.html這樣內置的Chef配置器是更好的選擇。

我知道這個問題已經很老了,而且已經回答了,但是我希望對於這個絆倒這個問題的人來說,這仍然很有趣。

我已經構建了一個Github倉庫,它打算提供幾種配置來構建和配置Vagrant盒子, 而無需從頭開始編寫配置配方

例如,使用當前提供的配置,您可以構建和配置包含以下內容的框:

  • Ruby 1.9.2-p290,使用rbenv管理並使用Bundler進行gems
  • PostgreSQL 8.4
  • MongoDB的

這是我博客上的介紹文章

由於這幾乎符合要求,我覺得值得添加這個遲到的答案:)

這是我用來安裝Ruby 1.9.2的方法

package "libffi5" do
  action :install
  provider Chef::Provider::Package::Apt
end

package "ruby-1.9.2" do
  action :install
  source "/tmp/vagrant-chef/cookbooks-0/ruby-1.9.2/files/default/ruby-1.9.2-p290_i386.deb"
  provider Chef::Provider::Package::Dpkg
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM