обновление до osx lion, bundler получает ошибки собственного расширения - такого файла или каталога нет - PullRequest
5 голосов
/ 07 декабря 2011

У меня проблема, из-за которой я застрял на полтора дня, и мне нужна помощь.

Я перемещал свое последнее приложение rails 3 между iMac и моим MacBook Pro с помощью простой копии, и до сих пор у меня не было проблем.

Кстати, я использую rvm для управления версиями своего проекта.

Я получил новый iMac с установленным lion, и все казалось хорошим, пока я не запустил обновление пакета. С тех пор я не смог заставить работать упаковщик. Проблемы возникают при создании собственного расширения для гемов.

После запуска обновления пакета на моем компьютере iMac (osx lion) ничего не работает. Я могу продолжать запускать обновление пакетов на своем ноутбуке (Snow Leopard).

Так что я бы хотел продолжать развиваться на моей машине Lion. Вот что я сделал до сих пор:

Изначально я получил некоторые ошибки о своих компиляторах, но, поскольку я переустановил xcode и запустил установщик, я больше не вижу этих ошибок.

Я все еще продолжал получать ошибки в моей сборке нокигири. В какой-то момент я следовал некоторым инструкциям в блоге (и сделал:

sudo port upgrade --enforce-variants libxml2 +universal

но, похоже, это не имело никакого значения для строительства нокогири.

Теперь, когда я делаю обновление пакета, я получаю:

Installing nokogiri (1.5.0) with native extensions /Users/tayloredwebsites/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:551:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

        /Users/tayloredwebsites/.rvm/rubies/ruby-1.9.2-p136/bin/ruby extconf.rb 
checking for libxml/parser.h... yes
checking for libxslt/xslt.h... yes
checking for libexslt/exslt.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... yes
checking for xmlParseDoc() in -lxml2... yes
checking for xsltParseStylesheetDoc() in -lxslt... yes
checking for exsltFuncRegister() in -lexslt... yes
checking for xmlHasFeature()... yes
checking for xmlFirstElementChild()... yes
checking for xmlRelaxNGSetParserStructuredErrors()... yes
checking for xmlRelaxNGSetParserStructuredErrors()... yes
checking for xmlRelaxNGSetValidStructuredErrors()... yes
checking for xmlSchemaSetValidStructuredErrors()... yes
checking for xmlSchemaSetParserStructuredErrors()... yes
creating Makefile

make
gcc-4.2 -I. -I/Users/tayloredwebsites/.rvm/rubies/ruby-1.9.2-p136/include/ruby-1.9.1/x86_64-darwin10.6.0 -I/Users/tayloredwebsites/.rvm/rubies/ruby-1.9.2-p136/include/ruby-1.9.1/ruby/backward -I/Users/tayloredwebsites/.rvm/rubies/ruby-1.9.2-p136/include/ruby-1.9.1 -I. -DHAVE_XMLHASFEATURE -DHAVE_XMLFIRSTELEMENTCHILD -DHAVE_XMLRELAXNGSETPARSERSTRUCTUREDERRORS -DHAVE_XMLRELAXNGSETPARSERSTRUCTUREDERRORS -DHAVE_XMLRELAXNGSETVALIDSTRUCTUREDERRORS -DHAVE_XMLSCHEMASETVALIDSTRUCTUREDERRORS -DHAVE_XMLSCHEMASETPARSERSTRUCTUREDERRORS -I/opt/local/include/libxml2 -I/usr/local/include/libxml2 -I/Users/tayloredwebsites/.rvm/rubies/ruby-1.9.2-p136/include/libxml2 -I/opt/local/include -I/usr/local/include -I/Users/tayloredwebsites/.rvm/rubies/ruby-1.9.2-p136/include -I/usr/include -I/usr/include/libxml2 -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long  -fno-common -pipe  -g -DXP_UNIX -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline  -o html_document.o -c html_document.c
make: gcc-4.2: No such file or directory
make: *** [html_document.o] Error 1


Gem files will remain installed in /Users/tayloredwebsites/.rvm/gems/ruby-1.9.2-p136@current/gems/nokogiri-1.5.0 for inspection.

После того, как я сделал это слишком много раз, я решил удалить капибару и ланучий из моего Gemfile, чтобы избежать этой ошибки. И вот, обновление пакета дает мне еще один сбой при создании собственного расширения:

Installing sqlite3 (1.3.5) with native extensions /Users/tayloredwebsites/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:551:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

        /Users/tayloredwebsites/.rvm/rubies/ruby-1.9.2-p136/bin/ruby extconf.rb 
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... yes
checking for rb_proc_arity()... yes
checking for sqlite3_initialize()... yes
checking for sqlite3_backup_init()... yes
checking for sqlite3_column_database_name()... no
checking for sqlite3_enable_load_extension()... no
checking for sqlite3_load_extension()... no
creating Makefile

make
gcc-4.2 -I. -I/Users/tayloredwebsites/.rvm/rubies/ruby-1.9.2-p136/include/ruby-1.9.1/x86_64-darwin10.6.0 -I/Users/tayloredwebsites/.rvm/rubies/ruby-1.9.2-p136/include/ruby-1.9.1/ruby/backward -I/Users/tayloredwebsites/.rvm/rubies/ruby-1.9.2-p136/include/ruby-1.9.1 -I. -DHAVE_RB_PROC_ARITY -DHAVE_SQLITE3_INITIALIZE -DHAVE_SQLITE3_BACKUP_INIT -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long  -fno-common -pipe  -o backup.o -c backup.c
make: gcc-4.2: No such file or directory
make: *** [backup.o] Error 1

Похоже, что я не получаю такой ошибки файла в моих сборках для того же набора кода, с основным отличием, что одна машина работает на Lion, а другая на Snow Leopard.

Так что, может быть, кто-то может помочь мне с этими вопросами:

В своих исследованиях я заметил, что в сборке nokogiri libxml2 запрашивается в 3 местах (два из которых не существуют !!!!). Кто-нибудь знает, как контролировать, как контролировать эти аргументы, чтобы я мог удалить те, которые не существуют?

Когда я посмотрел сборку sqlite3, я не заметил никаких отсутствующих файлов, но, похоже, все еще получаю их. Может ли это быть связано с проблемой нокогири? Если так, кто-нибудь знает, как я их убираю?

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

также я заметил, что в make каталог include содержит каталог с более старой версией ruby. Так было довольно долгое время, без каких-либо проблем, поэтому я подозреваю, что здесь это не будет проблемой, я просто хотел указать на это.

Ответы [ 4 ]

6 голосов
/ 10 декабря 2011

В Lion буквально нет такого файла или каталога gcc-4.2. Я застрял на этом при попытке "rvm install ruby-1.9.3", который потерпел неудачу подобно тому, что вы сообщаете. Было решено указать команду CC следующим образом: «CC = gcc rvm install ruby-1.9.3». Если параметр CC = gcc не может быть передан в упаковщик, может быть проще "sudo ln -s / usr / bin / gcc /usr/bin/gcc-4.2" и просто создать символическую ссылку, которую он ищет.

1 голос
/ 06 декабря 2012
ln -s /usr/bin/gcc /usr/bin/gcc-4.2
1 голос
/ 19 марта 2012

Я переустановил все на моем OSX Lion. Я обновился до сервера, чтобы преодолеть некоторые проблемы postgres. Обратите внимание, когда я установил rvm, один из шагов должен быть запущен;

$ rvm требования

, который возвращает, помимо прочего:

Xcode 4.2: * поддерживается только ruby ​​1.9.3+ с использованием командной строки flag: --with-gcc = clang * разбивает гем с собственными расширениями, особенно драйверы БД.

Пользователи Xcode 4.2.1+ - будьте осторожны - в случае любой компиляции проблемы * переход на Xcode 4.1 * удаление Xcode и установка osx-gcc-installer и переустановите ваши рубины.

Примечание: если вы удалите Xcode, вы потеряете стандартную настройку MacPort Xcode.

Обратите внимание, что вы можете создавать MacPorts из исходного кода, используя gcc - не пробовал (по крайней мере пока).

0 голосов
/ 28 июля 2012

Я собрал свой ruby-1.9.3 с помощью clang, поэтому при установке камня nokogiri я использовал CC = clang gem install nokogiri -v '1.5.5', который мне помог.

...