まず、少しコンテキスト。ほとんどのVagrantベースボックスはChefとPuppetが使用するためにRubyをインストールしますが、最新のものはシステムパッケージを使用するのではなく/ 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つがあなたが探しているものになるでしょう。
1.9.2でChefレシピを実行する
1.9.2で実行中のChefレシピをテストしたいが、ボックスの近くに1.8.7は必要ない場合があります。これに取り組む最善の方法は、独自のVeeWeeテンプレートを作成し、新しいベースボックスを作成することです。上記のリンクを変更して、1.8.7ではなく1.9.2をコンパイルし、https://github.com/jedi4ever/veeweeの指示に従うことができます。
Ruby1.9.2で開発する
おそらく、1.9.2を使用してRubyコードをハックしたいという可能性が高くなります。このためには、Rubyをインストールし、/ opt/rubyエントリの前にバイナリをパスに配置する必要があります。これを行うにはいくつかの方法があります。
これらはすべて、Chefレシピを使用して管理できます。私はおそらくコンパイルオプションを選択しないでしょう。ただのダウンロードとパッケージリソースを残すか、次のRVMクックブックがRVMに便利なhttp://community.opscode.com/cookbooks/rvmかもしれません。
パッケージリソースの*gem_binary*オプションは、新しい1.9.2 Ruby(optの1.8.7ではなく)にgemを確実にインストールする方法によっては、ここでも役立つ場合があります。
の目標はknife bootstrap
、Chefをターゲットシステムにインストールして、ChefClientを実行できるようにすることです。VagrantベースボックスにはすでにChefがインストールされている傾向があるため、特定のことを行っていて、Chefの複数のバージョンを実行したい場合を除いて、このルートは避けます。http://vagrantup.com/docs/provisioners/chef_solo.htmlのような組み込みのChefプロビジョナーの方が適しています。