RVM на Snow Leopard: можно установить 1.8.7, но не 1.9.3 или 1.9.2 (возможны архитектурные проблемы?)

Наткнулся щас. Это ошибка, которую я получаю постоянно (недавно я обновил свою OSX с Leopard до Snow Leopard):

redacted's Mac[~]$ rvm install 1.9.3
Fetching yaml-0.1.4.tar.gz to /Users/redacted/.rvm/archives
Extracting yaml-0.1.4.tar.gz to /Users/redacted/.rvm/src
Configuring yaml in /Users/redacted/.rvm/src/yaml-0.1.4.
Compiling yaml in /Users/redacted/.rvm/src/yaml-0.1.4.
Installing yaml to /Users/redacted/.rvm/usr
Installing Ruby from source to: /Users/redacted/.rvm/rubies/ruby-1.9.3-p125, this may take a while depending on your cpu(s)...

ruby-1.9.3-p125 - #fetching 
ruby-1.9.3-p125 - #extracted to /Users/redacted/.rvm/src/ruby-1.9.3-p125 (already extracted)
ruby-1.9.3-p125 - #configuring 
ruby-1.9.3-p125 - #compiling 
Error running 'make ', please read /Users/redacted/.rvm/log/ruby-1.9.3-p125/make.log
There has been an error while running make. Halting the installation.

Заглянув в журнал, мы увидим следующее:

ld: in /usr/local/lib/libxml2.2.dylib, file was built for i386 which is not the architecture being linked (x86_64)

Погуглил, а также выполнил поиск по этому сайту, следуя некоторым рекомендациям, в том числе:

1) обновление XCode до 3.2.6 (я на Snow Leopard). Это не та же версия, что и Xcode на установочном DVD.

2) полное удаление всех следов MacPorts (согласно процедурам здесь http://www.libertypages.com/clarktech/?p=743), включая удаление / opt / local, где раньше находились мои файлы MacPort.

3) Полное удаление всех следов RVM (согласно процедурам здесь Как я могу удалить RVM (Ruby Version Manager) из моей системы?)

4) Установка MacPorts для Snow Leopard и запуск sudo port -v selfupdate

5) sudo port install libxml2 libxslt (я подтверждаю, что он, похоже, использует архитектуру x86_64 - вот как это выглядело для libxml2:

--->  Computing dependencies for libxml2
--->  Dependencies to be installed: zlib
--->  Fetching archive for zlib
--->  Attempting to fetch zlib-1.2.6_0.darwin_10.x86_64.tbz2 from http://packages.macports.org/zlib
--->  Attempting to fetch zlib-1.2.6_0.darwin_10.x86_64.tbz2.rmd160 from http://packages.macports.org/zlib
--->  Installing zlib @1.2.6_0
--->  Activating zlib @1.2.6_0
--->  Cleaning zlib
--->  Fetching archive for libxml2
--->  Attempting to fetch libxml2-2.7.8_0.darwin_10.x86_64.tbz2 from http://packages.macports.org/libxml2
--->  Attempting to fetch libxml2-2.7.8_0.darwin_10.x86_64.tbz2.rmd160 from http://packages.macports.org/libxml2
--->  Installing libxml2 @2.7.8_0
--->  Activating libxml2 @2.7.8_0
--->  Cleaning libxml2

6) установка RVM

7) На данный момент мои файлы библиотеки, RVM, MacPorts, XCode кажутся последней и правильной архитектурой.

8) установка rvm 1.8.7 прошла успешно

9) rvm install 1.9.2 и 1.9.3 завершается ошибкой, сообщения об ошибках показаны в начале этого вопроса.

Есть идеи, что я пропустил? Я заметил это, когда пробовал разные вещи из чтения статей:

file /usr/local/lib/libxml2.2.dylib

/usr/local/lib/libxml2.2.dylib: Mach-O dynamically linked shared library i386

Не уверен, что это важно .. Странно, что он все еще думает, что libxml2 - это i386, когда MacPorts, кажется, установили версию x86_64.

-> отредактируйте примерно через 21 минуту после того, как я разместил это - на самом деле, я вижу файл macport как 64-битный, я считаю, возможно, путь к файлу библиотеки настроен неправильно, когда rvm пытается установить 1.9.2 / 1.9.3 ? (увидеть ниже)

file /opt/local/lib/libxml2.2.dylib
/opt/local/lib/libxml2.2.dylib: Mach-O 64-bit dynamically linked shared library x86_64

Вот мой ПУТЬ:

redacted's Mac[~]$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/local/mysql/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/Users/redacted/.rvm/bin

Информация о rvm:

system:

  system:
    uname:       "Darwin redacted-macbook-pro.local 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun  7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386"
    bash:        "/bin/bash => GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)"
    zsh:         "/bin/zsh => zsh 4.3.9 (i386-apple-darwin10.0)"

  rvm:
    version:      "rvm 1.10.3 by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.beginrescueend.com/]"
    updated:      "3 hours 26 minutes 47 seconds ago"

  homes:
    gem:          "not set"
    ruby:         "not set"

  binaries:
    ruby:         "/usr/local/bin/ruby"
    irb:          "/usr/local/bin/irb"
    gem:          "/usr/local/bin/gem"
    rake:         "/usr/local/bin/rake"

  environment:
    PATH:         "/opt/local/bin:/opt/local/sbin:/usr/local/mysql/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/Users/redacted/.rvm/bin"
    GEM_HOME:     ""
    GEM_PATH:     ""
    MY_RUBY_HOME: ""
    IRBRC:        ""
    RUBYOPT:      ""
    gemset:       ""

Не знаю, как действовать на этом этапе; Я практически удалил и переустановил все дважды, но безрезультатно.

-> изменить: добавить это для Стива

[2012-02-24 22:54:41] make 
    CC = /usr/bin/gcc-4.2
    LD = ld
    LDSHARED = /usr/bin/gcc-4.2 -dynamiclib
    CFLAGS = -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32 -Werror=implicit-function-declaration  -fno-common -pipe 
    XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT
    CPPFLAGS = -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I. -I.ext/include/x86_64-darwin10.8.0 -I./include -I.
    DLDFLAGS = -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -Wl,-flat_namespace -install_name /Users/craigflannagan/.rvm/rubies/ruby-1.9.3-p125/lib/libruby.1.9.1.dylib -current_version 1.9.1 -compatibility_version 1.9.1 -Wl,-unexported_symbol,_Init_* -Wl,-unexported_symbol,*_threadptr_*  -Wl,-u,_objc_msgSend   
    SOLIBS = 
linking miniruby
rbconfig.rb unchanged
generating enc.mk
generating prelude.c
compiling prelude.c
linking static-library libruby.1.9.1-static.a
linking shared-library libruby.1.9.1.dylib
generating encdb.h
encdb.h unchanged
making enc
make[1]: Nothing to be done for `enc'.
making srcs under enc
make[1]: Nothing to be done for `srcs'.
generating transdb.h
transdb.h unchanged
making trans
make[1]: Nothing to be done for `./enc/trans'.
making encs
installing default bug libraries
installing default resize libraries
installing default bug libraries
installing default bug libraries
installing default funcall libraries
installing default dot.dot libraries
installing default old_thread_select libraries
installing default numhash libraries
installing default string libraries
installing default wait_for_single_fd libraries
installing default bigdecimal libraries
installing default continuation libraries
installing default coverage libraries
installing default curses libraries
installing default date_core libraries
make[2]: Nothing to be done for `all'.
installing digest libraries
installing default digest libraries
installing default bubblebabble libraries
installing default md5 libraries
installing default rmd160 libraries
installing default sha1 libraries
installing default sha2 libraries
installing dl libraries
installing default dl libraries
installing default callback libraries
make[2]: Nothing to be done for `all'.
installing default etc libraries
installing default fcntl libraries
installing default fiber libraries
installing default fiddle libraries
make[2]: Nothing to be done for `all'.
installing default iconv libraries
installing default console libraries
installing default nonblock libraries
installing default wait libraries
installing default libraries
installing default generator libraries
installing default parser libraries
installing default complex libraries
installing default rational libraries
installing default nkf libraries
installing default objspace libraries
installing default openssl libraries
installing default pathname libraries
installing default psych libraries
installing default pty libraries
installing default cparse libraries
installing default readline libraries
installing default ripper libraries
checking ../.././parse.y and ../.././ext/ripper/eventids2.c
installing default sdbm libraries
installing default socket libraries
installing default stringio libraries
installing default strscan libraries
installing default syck libraries
installing default syslog libraries
linking shared-object tcltklib.bundle
ld: in /usr/local/lib/libxml2.2.dylib, file was built for i386 which is not the architecture being linked (x86_64)
collect2: ld returned 1 exit status
make[2]: *** [../../.ext/x86_64-darwin10.8.0/tcltklib.bundle] Error 1
make[1]: *** [ext/tk/all] Error 2
make: *** [build-ext] Error 2

person Craig Flannagan    schedule 25.02.2012    source источник
comment
Это не лучший вопрос для stackoverflow. Вместо этого вы должны разместить его на serverfault.com.   -  person Ben Lee    schedule 25.02.2012
comment
Возможно, вы правы, но я не уверен, что понимаю почему - этот вопрос не имеет ничего общего с сервером, это я пытаюсь установить версию Ruby на свой ноутбук, чтобы я мог возобновить свои усилия по разработке.   -  person Craig Flannagan    schedule 25.02.2012
comment
Ладно, возможно, я неправильно понял вопрос. Возможно, это хорошо подходит для stackoverflow. Что касается таких вещей, как проблемы с установкой программного обеспечения, я полагаю, что это серая зона.   -  person Ben Lee    schedule 25.02.2012
comment
В любом случае люди с необходимым опытом, скорее всего, будут присутствовать на обоих сайтах.   -  person Ben Lee    schedule 25.02.2012
comment
Я думаю, что создание и запуск среды разработки вполне допустимо для stackflow, и он явно проделал некоторую домашнюю работу (в отличие от множества других сообщений о моем рубине, которые не работают!).   -  person Marc Talbot    schedule 25.02.2012
comment
Может, мы оба ошибаемся. Кто-то уже задавал очень похожий на ваш вопрос о суперпользователе и получил ответ: superuser.com/questions/389806/ (не знаю, поможет ли это вам, но решил, что выложу на всякий случай)   -  person Ben Lee    schedule 25.02.2012
comment
@MarcTalbot, это определенно хороший вопрос, я никогда не имел в виду обратного. И теперь я понимаю, что, вероятно, ошибался в том, куда это идет. 973 вопроса с тегами rvm в stackoverflow и только 36 на serverfault (и 22 на суперпользователя).   -  person Ben Lee    schedule 25.02.2012
comment
Бен - вопрос / ответ суперпользователя, который вы опубликовали, похоже, не близок к проблеме, с которой я здесь столкнулся;) Моя проблема, похоже, имеет архитектурный характер, тогда как эта ссылка была о том, что кто-то уже связал что-то. Спасибо, ухмылка   -  person Craig Flannagan    schedule 25.02.2012


Ответы (2)


Проблема в том, что вы устанавливаете только переменную PATH. Однако эта переменная среды не используется для поиска разделяемых библиотек. Вам необходимо установить переменную среды DYLD_LIBRARY_PATH. Также обратите внимание на "man dyld".

person steve    schedule 25.02.2012
comment
Звучит многообещающе - в какую папку мне указать эту переменную окружения? Я попробовал экспортировать DYLD_LIBRARY_PATH = / opt / local / lib и получил тот же результат (жалобы на архитектурные различия) при попытке установить rvm 1.9.3 - person Craig Flannagan; 25.02.2012
comment
Теоретически это должно работать. Мне интересно, связан ли make-файл с жестко запрограммированным путем. Не могли бы вы опубликовать команду ld с ее параметрами. - person steve; 25.02.2012
comment
Добавлен к моему исходному вопросу выше по вашему запросу (комментарий имеет ограничение около 550 символов). Кажется, все еще смотрит на файл libxml2, не установленный Macport, даже после установки DYLD_LIBRARY_PATH. Было ли что-то еще, что мне нужно было изменить, прежде чем пытаться установить rvm 1.9.3? - person Craig Flannagan; 25.02.2012
comment
Может ли это быть оскорбительной строкой в ​​Makefile? (Я не специалист по Makefile в целом) $ cat Makefile | grep / usr / local LDFLAGS = $ (CFLAGS) -L. -L / usr / местные / библиотека - person Craig Flannagan; 25.02.2012
comment
Вот кое-что интересное: я достал свой рабочий ноутбук с почти идентичной настройкой (Snow Leopard, RVM, Ruby 1.9.2 / 1.9.3 и т. Д.), И оказалось, что у меня даже нет / usr / local / lib! Фактически он переименован в /usr/local/lib.old. Изучая это, я, кажется, нахожу рекомендации по удалению / usr / local / lib (apple.stackexchange.com/questions/9992/). Мысли? - person Craig Flannagan; 25.02.2012
comment
фигово. Это означает, что он не распознает переменную среды. Еще одна вещь, как вы вызываете macports? - person steve; 25.02.2012
comment
не уверен, что вы имеете в виду - я обычно делаю такие вещи, как sudo port install libxml2 libxslt, это то, о чем вы спрашивали? - person Craig Flannagan; 26.02.2012

вам необходимо обновить, чтобы удалить старый Xcode и установить Xcode 4.1 или использовать osx-gcc-installer

пожалуйста, прочтите rvm requirements для получения более подробной информации о том, что необходимо для правильной установки ruby

person mpapis    schedule 26.02.2012
comment
Из требований rvm: Примечания для Darwin (Mac OS X) Для Snow Leopard: Xcode версии 3.2.1 (1613) или новее, например 3.2.6 или Xcode 4.1. Хотя, похоже, не упоминается, что требуется 4.1. Прежде чем я попытаюсь выполнить обновление, я надеюсь получить объяснение того, как это решит мою проблему - посмотреть, как я могу заставить его работать с помощью 3.2.6, если я выведу / usr / local / lib из обращения, переименовав его в / usr /local/lib.old. Обновит ли 4.1 содержимое / usr / local / lib и заставит ли меня снова работать? (Я не разбираюсь в том, что именно XCode изменит в моих файлах / папках, когда я установлю обновленную версию). - person Craig Flannagan; 09.03.2012
comment
@CraigFlannagan Xcode 3.2.6 все еще может работать с Ruby 1.8.6 / 7 ... У меня нет массива возможных комбинаций, я указываю только на лучшие результаты, которые вы получаете с 4.1 - person mpapis; 10.03.2012