私は rbenv で ruby を管理しているので、rbenv の ruby installer の ruby-build への反映待ち プラス、 ruby-build を brew で入れてるので brew への反映待ちということで今日試してみることに。 というかこう見ると依存酷い。
あと、Vim で rubyinterp を使うためには dylib が必要なので、 --enable-shared な 2.0.0-p0 が欲しいところ。なのでビルドしてみた。
環境
- OS X Mountain Lion
- XCode 4.6 + Command Line Tools
- rbenv 0.4.0
- ruby-build 20130224
結論
$ RUBY_CONFIGURE_OPTS="--enable-shared" rbenv install 2.0.0-p0とりあえず結論から先に書くと、RUBY_CONFIGURE_OPTS を使えば良い様子。
以下、格闘のログだのぼやきだの。
格闘ログとかぼやきとかつぶやき
atton.blog: ruby 1.9.3 の rubyinterp を有効にした最新の Vim を brew でビルドする で書いたように
$ CONFIGURE_OPTS="--enable-shared" rbenv install 2.0.0-p0じゃダメな様子。
1.9系列の yaml みたいに、2.0.0 では openssl を rbenv が依存の解決として入れてくれるのだけれど、 openssl の configure にも --enable-shared が渡っちゃって configure が落ちる。
openssl は shared ってオプションがあるらしいので、そっちに合わせると、今度は ruby の configure が通らない。
どーしたものかしてると 2.0.0-rc2 のビルドが通らない的な issue を見つける。
そこでは openssl の path とか gcc とか cc の話もあるのだけれど
2.0.0-rc2 build failed · Issue #290 · sstephenson/ruby-build · GitHub
というのを発見。RUBY_CONFIGURE_OPTS=--with-openssl-dir=`brew --prefix openssl` ...
RUBY_CONFIGURE_OPTS 使えば良いのかなー、と思って試してみる。
この issue 的に brew の openssl を使いたかったからかもしれないけれど、 --with-openssl-dir も指定する必要があるらしい。
けれど私は brew で入れてる訳じゃないのでどーしたものか。
とりあえず、試しに openssl-dir は無視して
$ RUBY_CONFIGURE_OPTS="--enable-shared" rbenv install 2.0.0-p0する。通った。なんか怖い。
一応、 configure のオプションを見るために ruby-build に echo 挟んだつもりなのだけれど全く出ていない。なんか怖い。
でもちゃんと dylib ある。うーん。
%ls ~/.rbenv/versions/2.0.0-p0/lib/rbenv とか ruby-build がどこで作業してるのか分からないので configure の log 見られないし、ruby が見てる openssl のバージョン確認もできそうにない。
libruby.2.0.0-static.a libruby.2.0.dylib pkgconfig
libruby.2.0.0.dylib libruby.dylib ruby
ちなみにコマンド打つと出てくる openssl は Mac のデフォルトの様子
%which openssl
/usr/bin/openssl
%openssl version
OpenSSL 0.9.8r 8 Feb 2011
うーむ。 ruby-build 側の openssl でちゃんと build されてるかな。 気になる。
とりえあず、openssl の version が低くて bundle install がコケる事例 があるらしいので、逆に bundle install できたら良いかな、と思ってその辺も試す。
まずは 2.0.0-p0 を使うように
$ rbenv global 2.0.0-p0
とりあえず github から 本家 rails を clone。んで、bundle install 前にバージョン確認
%ruby -v大丈夫そう。
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin12.2.0]
%gem -v
2.0.0
念のため gem の version を update
%gem update --system最新。
Latest version currently installed. Aborting.
いざ bundle install と思ったら
%bundle install入ってない。入れる。
rbenv: bundle: command not found
The `bundle' command exists in these Ruby versions:
1.9.2-p320
1.9.3-p194
%gem install bundleさらにもう一度 bundle install と思ったら
%bundle installなんか 2.0互換無いっぽい。gem install bundle で入った bundler は 1.2.4 で
Bundler is not compatible with Ruby 2.0 or Rubygems 2.0.
Please upgrade to Bundler 1.3 or higher.
Ruby 2.0 で bundler を使うには 1.3 以降を入れたら良い らしい。ので
いざもう一度 bundle install。$ gem install bundler --version '1.3.0.pre'
いろいろ入ったので大丈夫っぽい。 mysql の native extention の compile はコケたけれどこれは bundler 側の問題じゃないよね……?
bundle install できたので openssl も有効であると勝手に判断。最低限、古くはなさそう。
一応 irb で requre 'openssl' すると true 返ってきたから良いのかな。
その辺分かる方いたら教えて欲しいです。 ruby が見てる openssl の path 表示方法とか。
という訳でなんだかんだしながら --enable-shared な 2.0.0-p0 のビルド完了。
2.0.0 でほげほげする前に大分時間食った感。
brew だと brew install ruby --enable-shared とかで良いのかな。 rbenv さんもその辺サポートしてくんないかな。
あと、1.9.3だと gcc のversion は組込みだと落ちたのに、2.0.0だと通ったのも気になる。大丈夫かな。
まー、今のところ問題無し。何もしてないので問題の発生しようも無いけれど。
0 件のコメント:
コメントを投稿