Mountain Lionに更新した後、1.8.7をインストールしようとしましたが、エラーが発生しました。 X11ファイルが見つかりません。Xquarkzをインストールしましたが、何も変わりません。どうしましたか?
Fail to find [tclConfig.sh, tkConfig.sh]
Use MacOS X Frameworks.
Find Tcl/Tk libraries. Make tcltklib.so which is required by Ruby/Tk.
clang -I. -I../.. -I../../. -I../.././ext/tk -DHAVE_RB_SAFE_LEVEL -DHAVE_RB_HASH_LOOKUP -DHAVE_RB_PROC_NEW -DHAVE_RB_OBJ_TAINT -DHAVE_ST_PTR -DHAVE_ST_LEN -DRUBY_VERSION=\"1.8.7\" -DRUBY_RELEASE_DATE=\"2012-06-29\" -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -DWITH_TCL_ENABLE_THREAD=0 -fno-common -g -O2 -fno-common -pipe -fno-common -c stubs.c
In file included from stubs.c:10:
/usr/include/tk.h:78:11: fatal error: 'X11/Xlib.h' file not found
# include <X11/Xlib.h>
^
1 error generated.
make[1]: *** [stubs.o] Error 1
make: *** [all] Error 1
http://xquartz.macosforge.org/landing/ を使用してX11をインストールしてみてください。コンパイラのX11ライブラリへの正しいパスを次のように設定します。
export CPPFLAGS=-I/opt/X11/include
次に、gcc-4.2が存在するコンパイラに渡して、Rubyを再インストールします。
CC=/usr/local/bin/gcc-4.2 rvm reinstall 1.8.7
CC
がなければ、多くのセグメンテーションエラーが発生しました。
OSX 10.8.2で問題なく以下を実行できました。
rvm install 1.8.7 --with-gcc=clang --without-tcl --without-tk
Tclやtkを必要とせず、rbenvを使用している場合、これは動作するはずです:
brew install https://raw.github.com/Homebrew/homebrew-dupes/master/Apple-gcc42.rb
CC=/usr/local/bin/gcc-4.2 CONFIGURE_OPTS="--without-tcl --without-tk" rbenv install 1.8.7-p358
X11の修正後でも、このコンパイルエラーが発生していました。
compiling stubs.c
In file included from stubs.c:16:
/usr/include/tk.h:23:3: error: #error Tk 8.5 must be compiled with tcl.h from Tcl 8.5
make[2]: *** [stubs.o] Error 1
make[1]: *** [ext/tk/all] Error 2
make: *** [build-ext] Error 2
頭をひっくり返した後、makeの出力でこの行に気付きました。
Use ActiveTcl libraries (if available).
数年前にActiveTcl 8.4をインストールしていましたが、バージョン8.5の/ usr/includeからtk.hを取得していました。
ActiveTclと ActiveTclのアンインストール手順が正しくありませんでした を安全にアンインストールする方法がわかりませんでしたが、ActiveTcl 8.5をインストールすると問題が回避されました。 ActiveTclダウンロード こちら。
欲求不満。とにかく、これが他の人に役立つことを願っています。
ここに私の.rvmrc bootstrapファイルがあります。
if (uname -a | grep '12.0.0 Darwin' >/dev/null); then
CC=/usr/local/bin/gcc-4.2 CPPFLAGS=-I/opt/X11/include rvm --install --create --disable-tcl --disable-tk use ree@gemset_name
else
rvm --install --create --disable-tcl --disable-tk use ree@gemset_name
fi
if ! which bundle >/dev/null; then
gem install bundler --pre --no-ri --no-rdoc && bundle install
fi
if ! bundle check >/dev/null; then
bundle install
fi