1

进出口引入nokogiri安装failes尝试部署与AWS弹性青苗我的Rails应用程序。我创建了实例和所有,但是当我尝试使用aws.push部署的应用,我得到在事件日志中以下错误:上弹性魔豆

2014-09-22 01:23:40 UTC+0550 ERROR [Instance: i-744edb4a Module: AWSEBAutoScalingGroup ConfigSet: null] Command failed on instance. Return code: 1 Output: Error occurred during build: Command hooks failed . 
2014-09-22 01:23:39 UTC+0550 ERROR Script /opt/elasticbeanstalk/hooks/appdeploy/pre/10_bundle_install.sh failed with returncode 5 

我把日志,发现nokogiri宝石的安装已经失败,错误:

------------------------------------- 
/var/log/directory-hooks-executor.log 
------------------------------------- 
Using mail 2.5.4 
Using actionmailer 4.0.2 
Using active_utils 2.2.1 
Using json 1.8.1 
Using money 6.1.1 
Using mini_portile 0.6.0 

Gem::Ext::BuildError: ERROR: Failed to build gem native extension. 

    /usr/bin/ruby1.9 extconf.rb 
Building nokogiri using packaged libraries. 
checking for iconv.h... yes 
checking for iconv_open() in iconv.h... yes 
Building libxml2-2.8.0 for nokogiri with the following patches applied: 
    - 0001-Fix-parser-local-buffers-size-problems.patch 
    - 0002-Fix-entities-local-buffers-size-problems.patch 
    - 0003-Fix-an-error-in-previous-commit.patch 
    - 0004-Fix-potential-out-of-bound-access.patch 
    - 0005-Detect-excessive-entities-expansion-upon-replacement.patch 
    - 0006-Do-not-fetch-external-parsed-entities.patch 
    - 0007-Enforce-XML_PARSER_EOF-state-handling-through-the-pa.patch 
    - 0008-Improve-handling-of-xmlStopParser.patch 
    - 0009-Fix-a-couple-of-return-without-value.patch 
    - 0010-Keep-non-significant-blanks-node-in-HTML-parser.patch 
    - 0011-Do-not-fetch-external-parameter-entities.patch 
************************************************************************ 
IMPORTANT! Nokogiri builds and uses a packaged version of libxml2. 

If this is a concern for you and you want to use the system library 
instead, abort this installation process and reinstall nokogiri as 
follows: 

    gem install nokogiri -- --use-system-libraries 

If you are using Bundler, tell it to use the option: 

    bundle config build.nokogiri --use-system-libraries 
    bundle install 

However, note that nokogiri does not necessarily support all versions 
of libxml2. 

For example, libxml2-2.9.0 and higher are currently known to be broken 
and thus unsupported by nokogiri, due to compatibility problems and 
XPath optimization bugs. 
************************************************************************ 
Extracting libxml2-2.8.0.tar.gz into tmp/x86_64-redhat-linux-gnu/ports/libxml2/2.8.0... OK 
Running patch with /usr/local/share/gems1.9/gems/nokogiri-1.6.2.1/ports/patches/libxml2/0001-Fix-parser-local-buffers-size-problems.patch... 
Running 'patch' for libxml2 2.8.0... ERROR, review 'tmp/x86_64-redhat-linux-gnu/ports/libxml2/2.8.0/patch.log' to see what happened. 
*** extconf.rb failed *** 
Could not create Makefile due to some reason, probably lack of 
necessary libraries and/or headers. Check the mkmf.log file for more 
details. You may need configuration options. 

Provided configuration options: 
    --with-opt-dir 
    --without-opt-dir 
    --with-opt-include 
    --without-opt-include=${opt-dir}/include 
    --with-opt-lib 
    --without-opt-lib=${opt-dir}/ 
    --with-make-prog 
    --without-make-prog 
    --srcdir=. 
    --curdir 
    --ruby=/usr/bin/ruby1.9 
    --help 
    --clean 
    --use-system-libraries 
    --enable-static 
    --disable-static 
    --with-zlib-dir 
    --without-zlib-dir 
    --with-zlib-include 
    --without-zlib-include=${zlib-dir}/include 
    --with-zlib-lib 
    --without-zlib-lib=${zlib-dir}/lib 
    --enable-cross-build 
    --disable-cross-build 
/usr/local/share/gems1.9/gems/mini_portile-0.6.0/lib/mini_portile.rb:279:in `block in execute': Failed to complete patch task (RuntimeError) 
    from /usr/local/share/gems1.9/gems/mini_portile-0.6.0/lib/mini_portile.rb:271:in `chdir' 
    from /usr/local/share/gems1.9/gems/mini_portile-0.6.0/lib/mini_portile.rb:271:in `execute' 
    from extconf.rb:282:in `block in patch' 
    from extconf.rb:279:in `each' 
    from extconf.rb:279:in `patch' 
    from /usr/local/share/gems1.9/gems/mini_portile-0.6.0/lib/mini_portile.rb:108:in `cook' 
    from extconf.rb:253:in `block in process_recipe' 
    from extconf.rb:154:in `tap' 
    from extconf.rb:154:in `process_recipe' 
    from extconf.rb:419:in `<main>' 

extconf failed, exit code 1 

Gem files will remain installed in /usr/local/share/gems1.9/gems/nokogiri-1.6.2.1 for inspection. 
Results logged to /usr/local/lib64/gems1.9/exts/nokogiri-1.6.2.1/gem_make.out 
An error occurred while installing nokogiri (1.6.2.1), and Bundler cannot 
continue. 
Make sure that `gem install nokogiri -v '1.6.2.1'` succeeds before bundling. 

2014-09-21 19:53:39,643 [ERROR] (321 MainThread) [directoryHooksExecutor.py-33] [root directoryHooksExecutor error] Script /opt/elasticbeanstalk/hooks/appdeploy/pre/10_bundle_install.sh failed with returncode 5 

我已经添加了以下文件.ebextensions/packages.conf

packages: 
    yum: 
    postgresql-devel: [] 
    git: [] 
    gcc: [] 
    libxml2: [] 
    libxml2-devel: [] 
    libxslt: [] 
    libxslt-devel: [] 

我需要做任何事情来使nokogiri安装?我错过了什么吗?

谢谢!

回答

-2

引入nokogiri需要libxml2和的libxslt。在运行gem install nokogiri或者安装bundle之前,确保你已经安装了。

I.e. Ubuntu的服务器将获得这些安装使用apt-get或资质

+1

如果你正确读取我的问题,如果你知道我是问你会知道我已指示'eb'安装这些对我来说。不管怎么说,还是要谢谢你/。 – 2014-09-21 20:36:46

+0

我看过你的问题,但我不熟悉阳明并明确了库没有得到通过你想他们拥有的方式安装。 – 2014-09-21 20:40:53

+0

好的。谢谢! – 2014-09-21 20:44:07

11

我能够通过包括patch在包的列表来解决这个问题,必须安装:)

像这样:

packages: 
    yum: 
    postgresql-devel: [] 
    git: [] 
    patch: [] 
+0

用更新的文件/解决方案更新您的答案会很好,这样其他人就可以从中受益。 – 2014-09-21 20:59:16

0

nokogiri有时无法编译的另一个原因是它在低内存机器上耗尽内存。