Проблема установки Ruby 1.9.2 на Mac OS Lion - PullRequest
6 голосов
/ 08 августа 2011

Я использую Lion с Xcode 4, у меня установлены RVM и homebrew, но я могу запустить только ruby ​​1.8.7

    spurvis:~ rogue$ ruby -v
    ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]
    spurvis:~ rogue$ 

Я прочитал несколько тем, связанных с этой темой, но, похоже, ничего не помогло в моей проблеме:

    spurvis:~ rogue$ rvm install 1.9.2
    Installing Ruby from source to: /Users/rogue/.rvm/rubies/ruby-1.9.2-p290, this may take a     while depending on your cpu(s)...

    ruby-1.9.2-p290 - #fetching 
    ruby-1.9.2-p290 - #extracted to /Users/rogue/.rvm/src/ruby-1.9.2-p290 (already extracted)
    Fetching yaml-0.1.4.tar.gz to /Users/rogue/.rvm/archives
    Extracting yaml-0.1.4.tar.gz to /Users/rogue/.rvm/src
    Configuring yaml in /Users/rogue/.rvm/src/yaml-0.1.4.
    Compiling yaml in /Users/rogue/.rvm/src/yaml-0.1.4.
    Installing yaml to /Users/rogue/.rvm/usr
    ruby-1.9.2-p290 - #configuring 
    ruby-1.9.2-p290 - #compiling 
    ERROR: Error running 'make ', please read /Users/rogue/.rvm/log/ruby-1.9.2-p290/make.log
    ERROR: There has been an error while running make. Halting the installation.

make.log дает мне следующую информацию:

    [2011-08-08 11:50:52] make
    /usr/bin/gcc-4.2 -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith  -Wwrite-strings -Wno-missing-field-initial
    rbconfig.rb unchanged
    ./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb  ./enc/make_encmake.rb --  builtin-encs="ascii.o us_ascii.o unicode.o utf_8.
    ./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb  -I. ./tool/compile_prelude.rb     ./prelude.rb ./enc/prelude.rb ./gem_prelude
    /usr/bin/gcc-4.2 -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initial
    ar rcu libruby.1.9.1-static.a dln.o encoding.o version.o array.o bignum.o class.o compar.o     complex.o dir.o dln_find.o enum.o enumera
    /usr/bin/gcc-4.2 -dynamiclib -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -Wl,-flat_namespace -install_name /Users/r
    : -w -L 'Init_*' -L '*_threadptr_*' libruby.1.9.1.dylib
    ./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb  ./tool/generic_erb.rb -c -o    encdb.h ./template/encdb.h.tmpl ./enc enc
    encdb.h unchanged
    make -f enc.mk RUBY="./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb "    MINIRUBY="./miniruby -I./lib -I.ext/common -I./- -r
    make[1]: Nothing to be done for `enc'.
    make -f enc.mk RUBY="./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb "  MINIRUBY="./miniruby -I./lib -I.ext/common -I./- -r
    make[1]: Nothing to be done for `srcs'.
./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb  ./tool/generic_erb.rb -c -o  transdb.h ./template/transdb.h.tmpl ./enc/tra
    transdb.h unchanged
    make -f enc.mk RUBY="./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb "    MINIRUBY="./miniruby -I./lib -I.ext/common -I./- -r
    make[1]: Nothing to be done for `./enc/trans'.
make -f enc.mk RUBY="./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb "   MINIRUBY="./miniruby -I./lib -I.ext/common -I./- -r
    mkdir -p .ext/x86_64-darwin11.0.0/enc .ext/x86_64-darwin11.0.0/enc/trans enc enc/trans
    compiling -test-/bug-3662
    make[1]: Nothing to be done for `all'.
    compiling -test-/string
    make[1]: Nothing to be done for `all'.
    compiling bigdecimal
    make[1]: Nothing to be done for `all'.
    compiling continuation
    make[1]: Nothing to be done for `all'.
    compiling coverage
    make[1]: Nothing to be done for `all'.
    compiling curses
    
    compiling openssl
    /usr/bin/gcc-4.2 -I. -I../../.ext/include/x86_64-darwin11.0.0 -I../.././include - I../.././ext/openssl -DRUBY_EXTCONF_H=\"extconf.h\"
    ossl_bio.c: In function ‘ossl_obj2bio’:
    ossl_bio.c:26: error: called object ‘".rnd"’ is not a function
    ossl_bio.c:42: warning: implicit conversion shortens 64-bit value into a 32-bit value
    make[1]: *** [ossl_bio.o] Error 1
    make: *** [mkmain.sh] Error 1

По другим предложениям я пытался добавить экспорт CC = / usr / bin / gcc-4.2 в мой bashrc, но это тоже не решило проблему.

Пожалуйста, помогите!

Ответы [ 3 ]

5 голосов
/ 11 августа 2011

Убедитесь, что у вас есть последний доступный xcode (вам нужно будет обновить его, если вы запускаете копию со снежного барса. Обновите RVM rvm get head, а затем повторите попытку.

У меня были проблемы с компиляцией ree, но 1.9.2 работал нормально, вы можете попробовать добавить эту функцию в .profile в вашем домашнем каталоге, она скомпилируется с gcc (вместо LLVM по умолчанию)

# using_gcc for 64btt compiling on lion (solves compatability issues)
function using_gcc() {
  env CC="/usr/bin/gcc-4.2" ARCHFLAGS="-arch x86_64" ARCHS="x86_64" $*
}

Затем запустите using_gcc rvm install 1.9.2

1 голос
/ 18 ноября 2011

Если вы используете свежую копию Lion & Xcode 4.2, вам нужно сначала установить библиотеки GCC 4.2 dev - они не включены в новую установку Xcode 4.2.

Затем установите флаг CC="/usr/bin/gcc-4.2" при установке rvm.

Обязательно rvm remove все предыдущие попытки установки в первую очередь.

0 голосов
/ 17 ноября 2011

Если вы хотите, чтобы rvm install ree с ruby ​​1.8.7 работал, это решило проблему для меня:

# using_gcc for 32btt compiling on lion (solves compatability issues)
function using_gcc() {
  env CC="/usr/bin/gcc-4.2" ARCHFLAGS="-arch x86_32" ARCHS="x86_32" $*
}

#then

using_gcc rvm install ree

По сути, просто изменив "64" на "32" в другом ответе.

...