我正在使用rvm在新的macbook pro上安装ruby 1.8.7。我在10.6.8,我有xcode 4.0.2。 RVM已启动。我可以毫无问题地安装1.9.2。但是当我尝试1.8.7时,我收到一个错误:
ERROR: Error running 'make ', please read /Users/brentw/.rvm/log/ruby-1.8.7-p352/make.log
ERROR: There has been an error while running make. Halting the installation.
在make.log文件中,最后几行是:
ld: warning: ignoring file ../../../libruby.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
compiling win32ole
compiling zlib
making ruby
/usr/bin/gcc-4.2 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp -fno-common -pipe -fno-common -DRUBY_EXPORT -L. -arch i386 -arch x86_64 -bind_at_load main.o -lruby -lpthread -ldl -lobjc -o ruby
ld: warning: ignoring file ./libruby.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
Undefined symbols for architecture i386:
"_ruby_init_stack", referenced from:
_main in main.o
"_ruby_init", referenced from:
_main in main.o
"_ruby_options", referenced from:
_main in main.o
"_ruby_run", referenced from:
_main in main.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
lipo: can't open input file: /var/folders/ay/aypnf68iFrumAawnjs+96FjhQuk/-Tmp-//cc7BuLDX.out (No such file or directory)
make[1]: *** [ruby] Error 1
make: *** [all] Error 2
我一直在寻找各地,尝试多种方法,但我似乎无法获得1.8.7。我尝试了不同的补丁(虽然可能不是全部),尝试安装ree代替,安装了rvm readline,试过“rvm install 1.8.7 -C --with-arch = x86_64, - with-readline-dir = $ rvm_path / usr” ......没有运气......
答案 0 :(得分:2)
在我的情况下,我最终降级到rvm 1.8.0并使用--with-readline-dir标志来安装ruby 1.8.7。它终于奏效了!!谢谢你的线索。
答案 1 :(得分:1)
啊,在这里找到答案:https://rvm.io/os/darwin/
rvm_archflags="-arch i386" CFLAGS="-arch i386" LDFLAGS="-arch i386" rvm install 1.8.7 --patch osx-arch-fix
现在,当我尝试安装gems时,我遇到了libz问题..要解决..
答案 2 :(得分:1)
问题在于1.8.2。你必须回滚到1.8.0,一切都会按预期工作。
rvm get 1.8.0
如果您已删除rvm,请使用以下命令安装1.8.0:
curl -s https://rvm.beginrescueend.com/install/rvm -o rvm-installer ; chmod +x rvm-installer ; ./rvm-installer --version 1.8.0
如果您使用rvm 1.8.0并且不需要任何标志来安装它,您将不会收到zlib错误。
答案 3 :(得分:1)
实际上,所有必须要做的就是rvm get head,它会带你到1.8.3,它通过删除一个意外添加的-arch i386到构建过程来解决问题。最重要的是,只需从Homebrew安装zlib就可以消除zlib问题以及执行
rvm install 1.8.7 --with-zlib-dir=/usr/local/Cellar/zlib/x.x.x
或者如果您使用rvm将zlib安装为'rvm pkg install zlib',那么您可以完成
rvm install 1.8.7 --with-zlib-dir=$rvm_path/usr
我相信我已更新网站上的文档以反映这一点。如果您发现错误,请打开针对https://github.com/rvm/rvm-site/issues/的问题,我将非常乐意解决此问题。
答案 4 :(得分:-1)
这不是一个解决方案,但这就是我做这个时所做的......
我花了很多时间在这个问题上花了很多时间,在安装之后我最终收集并编译ruby我的自己并使用另一个名为rbenv的ruby版本管理器:
使用家庭酿造安装readline:
brew install readline
然后下载最新的ruby版本,如1.9.2-p290: http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz 并在$ HOME / .rbenv / versions /
中提取它然后转到:
cd $HOME/.rbenv/versions
然后通过执行以下操作来补充ruby版本:
./configure --prefix=$HOME/.rbenv/versions/1.9.2-p290 --with-readline-dir=/usr/local/Cellar/readline/6.2.1/
make
sudo make install
不要忘记将当前版本设置为:
rbenv global 1.9.2-p290
rbenv rehash