我遇到的问题让我陷入了一天半的困境,我想要一些帮助。
我一直在我的iMac和我的macbook pro之间移动我最新的rails 3应用程序,只需要一个简单的副本,直到现在,我没有遇到任何问题。
fyi,我使用rvm来管理我的项目版本。
我安装了一台新的iMac,并且在我运行捆绑更新之前,一切似乎都很好。从那时起,我一直无法让捆绑器工作。构建gem原生扩展时会出现问题。
一旦我运行捆绑包更新,我的iMac(osx lion)机器上的任何设备都无效。我可以继续在笔记本电脑上运行捆绑更新(Snow Leopard)。
所以我希望能够继续在我的Lion机器上开发。以下是我到目前为止所做的事情:
最初,我的编译器出现了一些错误,但由于我重新安装了xcode并运行安装程序,因此我不再是那些错误。
我仍然继续在我的nokogiri版本上出错。有一次,我遵循了一些博客说明(并做了:
sudo port upgrade --enforce-variants libxml2 +universal
但是建立nokogiri似乎没什么区别。
现在,当我进行捆绑更新时,我得到了:
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中删除capybara和lanuchy,这样我就可以解决这个错误了。瞧,捆绑更新让我再次无法构建原生扩展:
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版本时,我没有注意到任何丢失的文件,但我似乎仍在使用它们。这可能是nokogiri问题的遗留问题吗?如果是这样,有谁知道我如何清除这些?
我想知道丢失了哪个文件,我似乎无法在错误消息中找到它。有没有办法从捆绑更新中获取调试器详细信息?
我也注意到在make中,include目录包含一个以旧版本ruby命名的目录。这已经有一段时间了,没有任何问题,所以我怀疑这不会是问题,只是想指出来。
答案 0 :(得分:6)
Lion上几乎没有这样的文件或目录gcc-4.2。当我尝试“rvm install ruby-1.9.3”时,我遇到了这个问题,这与你报告的内容类似。修复是指定CC命令,如“CC = gcc rvm install ruby-1.9.3”。如果CC = gcc选项无法传递给bundler,那么“sudo ln -s / usr / bin / gcc /usr/bin/gcc-4.2”可能更简单,只需创建它要查找的符号链接。
答案 1 :(得分:1)
我已经重新安装了OSX Lion上的所有内容。我升级到服务器以解决一些postgres问题。注意当我安装rvm时,其中一个步骤就是运行;
$ rvm要求
返回,其中包括:
Xcode 4.2:*仅支持ruby 1.9.3+使用命令行 flag:--with-gcc = clang *它打破了原生扩展的gems, 尤其是数据库驱动程序。
Xcode 4.2.1+用户 - 请注意 - 如果有任何编译 问题*降级到Xcode 4.1 *卸载Xcode并安装 osx-gcc-installer并重新安装你的红宝石。
注意:如果卸载Xcode,则会丢失标准的MacPort Xcode设置。
请注意,您可以使用gcc从源代码构建MacPorts - 未尝试过(至少尚未尝试过)。
答案 2 :(得分:1)
ln -s /usr/bin/gcc /usr/bin/gcc-4.2
答案 3 :(得分:0)
我用clang制作了我的ruby-1.9.3所以在安装nokogiri宝石时我使用CC = clang gem install nokogiri -v'1.5.5'对我有用。