我正在使用ubuntu 12.04 LTS,带有RVM的ruby 2.0
安装期间。发生此错误。
checking for alloca.h... *** /home/pastelcorp/.rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.10/ext/ruby/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}/lib
--with-make-prog
--without-make-prog
--srcdir=/home/pastelcorp/.rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.10/ext/ruby
--curdir
--ruby=/home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/bin/ruby
/home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/mkmf.rb:430:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/mkmf.rb:561:in `try_cpp'
from /home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/mkmf.rb:1040:in `block in have_header'
from /home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/mkmf.rb:891:in `block in checking_for'
from /home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/mkmf.rb:336:in `block (2 levels) in postpone'
from /home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/mkmf.rb:306:in `open'
from /home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/mkmf.rb:336:in `block in postpone'
from /home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/mkmf.rb:306:in `open'
from /home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/mkmf.rb:332:in `postpone'
from /home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/mkmf.rb:890:in `checking_for'
from /home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/mkmf.rb:1039:in `have_header'
from /home/pastelcorp/.rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.10/ext/ruby/extconf.rb:37:in `<main>'
rake aborted!
Command failed with status (1): [cd 'buildout/ruby/ruby-2.0.0-x86_64-linux/...]
/home/pastelcorp/.rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.10/build/ruby_extension.rb:55:in `block in <top (required)>'
/home/pastelcorp/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `eval'
/home/pastelcorp/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `<main>'
Tasks: TOP => nginx => buildout/ruby/ruby-2.0.0-x86_64-linux//passenger_native_support.so => buildout/ruby/ruby-2.0.0-x86_64-linux//Makefile
(See full trace by running task with --trace)
它说我必须先安装开发工具。
但我已经完成了sudo apt-get install build-essential
这是我的mkmf.log文件(我根本不懂)
" -o conftest -I/home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/include/ruby-2.0.0/x86_64-linux -I/home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/include/ruby-2.0.0/ruby/backward -I/home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/include/ruby-2.0.0 -I/home/pastelcorp/.rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.10/ext/ruby -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -fPIC -g conftest.c -L. -L/home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/lib -Wl,-R/home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic '-Wl,-rpath,/../lib' -Wl,-R -Wl,/home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/lib -L/home/pastelcorp/.rvm/rubies/ruby-2.0.0-p247/lib -lruby -lpthread"
sh: 1: -o: not found
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main(int argc, char **argv)
4: {
5: return 0;
6: }
/* end */
有关于此的任何想法吗?
答案 0 :(得分:12)
问题解决了。
在RVM中,我用二进制安装了ruby2.0.0,没有编译源代码。
所以我做了
rvm remove 2.0.0
和rvm install 2.0.0 ----disable-binary
所以ruby 2.0.0已经从源代码编译并且乘客编译工作正常。
答案 1 :(得分:1)
You have to install development tools first.
很可能你错过了一些库,就像错误所表明的那样。几个星期前我遇到了同样的事情。这是一个很好的教程,类似于帮助我的教程。
http://alexpearce.me/2012/06/setting-up-a-vps/
运气方面,我相信这一行可以解决您当前的问题,但请务必查看整个文档。
sudo apt-get -y install curl git-core python-software-properties build-essential zlib1g-dev libssl-dev libreadline-gplv2-dev libcurl4-openssl-dev
另外:在使用rvm时我也总是遇到麻烦,并且发现rbenv的打嗝工作较少,这在本教程中实际提到过。
对于数据库,如果您不使用postgres,那么您应该只需将数据库中的位替换为mysql等效库。