今日のなんでやねん
2011-03-17 [長年日記]
凹 [Ruby] rvm package install zlibがコケる
そろそろ本格的にrvm使ってみるかということでrvmを色々イジっている. で,rvmでiconvやらreadlineやらをインストールしたんだが,zlibのインストールでコケてしまう.
% rvm --version rvm 1.2.9 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/] % rvm package install zlib Fetching zlib-1.2.5.tar.gz to /Users/kita/Developer/.rvm/archives Extracting zlib-1.2.5.tar.gz to /Users/kita/Developer/.rvm/src Configuring zlib in /Users/kita/Developer/.rvm/src/zlib-1.2.5. Compiling zlib in /Users/kita/Developer/.rvm/src/zlib-1.2.5. Installing zlib to /Users/kita/Developer/.rvm/usr ERROR: Error running '/usr/bin/make install', please read /Users/kita/Developer/.rvm/log/zlib/make.install.log
make.install.logを読めというので読んでみると
[2011-03-17 20:34:55] /usr/bin/make install
cp libz.a /Users/kita/Developer/.rvm/usr/lib
cp /Users/kita/Developer/.rvm/usr/lib
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
make: *** [install-libs] Error 64
2つ目のcpの引数が1つしかない. これは多分変数に何も設定されてないんだろう. src/zlib-1.2.5/Makefileを見てみると
cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)
これが該当行.案の定上の方で
SHAREDLIBV=
となっていた. なんでだろうなぁと思ってlog/zlib/configure.logを見てみる.
[2011-03-17 20:34:46] MACOSX_DEPLOYMENT_TARGET=10.6 CFLAGS='-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp' CCFLAGS='-arch i386 -arch x86_64 -g -Os -pipe' CXXFLAGS='-arch i386 -arch x86_64 -g -Os -pipe' LDFLAGS='-arch i386 -arch x86_64 -bind_at_load' LDSHARED='-arch i386 -arch x86_64 cc -dynamiclib -undefined suppress -flat_namespace' ./configure --prefix="/Users/kita/Developer/.rvm/usr" Checking for gcc... Checking for shared library support... Tested gcc -w -c -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp -fPIC ztest63780.c Tested -arch i386 -arch x86_64 cc -dynamiclib -undefined suppress -flat_namespace -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp -fPIC -o ztest63780.dylib ztest63780.o ./configure: line 245: -arch: command not found No shared library support; try without defining CC and CFLAGS Building static library libz.a version 1.2.5 with gcc. Checking for off64_t... No. Checking for fseeko... Yes. Checking for unistd.h... Yes. Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf(). Checking for vsnprintf() in stdio.h... Yes. Checking for return value of vsnprintf()... Yes. Checking for attribute(visibility) support... Yes.
No shared library support? なんだそれは. configureの254行目あたりを見てみると
echo Tested $LDSHARED $SFLAGS -o $test$shared_ext $test.o $LDSHARED $SFLAGS -o $test$shared_ext $test.o echo 'No shared library support; try without defining CC and CFLAGS'
こんな感じ. どうもLDSHAREDがちゃんと設定されてないっぽい. configure.logの先頭をもう一度ちゃんと見ると
[2011-03-17 20:34:46] MACOSX_DEPLOYMENT_TARGET=10.6 CFLAGS='-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp' CCFLAGS='-arch i386 -arch x86_64 -g -Os -pipe' CXXFLAGS='-arch i386 -arch x86_64 -g -Os -pipe' LDFLAGS='-arch i386 -arch x86_64 -bind_at_load' LDSHARED='-arch i386 -arch x86_64 cc -dynamiclib -undefined suppress -flat_namespace' ./configure --prefix="/Users/kita/Developer/.rvm/usr"
ん?
LDSHARED='-arch i386 -arch x86_64 cc -dynamiclib -undefined suppress -flat_namespace'
なんかccの場所がおかしいね. これは誰が設定してるんだろうか,ということでgrep作戦.
% grep -r -- -dynamiclib scripts
scripts/functions/build: rvm_configure_env="${rvm_configure_env} LDSHARED='$architectures cc -dynamiclib -undefined suppress -flat_namespace'"
いました.試しに
% diff -u scripts/functions/build{.orig,}
--- scripts/functions/build.orig 2011-03-17 19:34:12.000000000 +0900
+++ scripts/functions/build 2011-03-17 22:00:24.000000000 +0900
@@ -9,7 +9,7 @@
rvm_configure_env="${rvm_configure_env} CCFLAGS='$architectures -g -Os -pipe'"
rvm_configure_env="${rvm_configure_env} CXXFLAGS='$architectures -g -Os -pipe'"
rvm_configure_env="${rvm_configure_env} LDFLAGS='$architectures -bind_at_load'"
- rvm_configure_env="${rvm_configure_env} LDSHARED='$architectures cc -dynamiclib -undefined suppress -flat_namespace'"
+ rvm_configure_env="${rvm_configure_env} LDSHARED='cc $architectures -dynamiclib -undefined suppress -flat_namespace'"
fi
export rvm_configure_env
}
こんなパッチを当ててみたら,すんなりzlibもインストールできた. これunameがDarwinな人達は誰も困ってないのかなぁ.
まったく同じエラーでハマっていたので、すごく助かりました! <br>ありがとうございます。