在leopard升级到Lion之后安装pg gem和运行服务器时出错

时间:2012-07-23 18:05:26

标签: ruby-on-rails macos postgresql osx-lion pg

使用时间机器备份将运行Leopard的macbook中的文件同步到运行Lion的macbook pro。因为我正在运行sqlite3而无法推送到heroku后,我试图安装一个pg gem,然后走了一个兔子洞。

gem install pg

的产率:

        /Users/taylorjackson/.rvm/rubies/ruby-1.9.2-p136/bin/ruby extconf.rb 
checking for pg_config... yes
Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... *** 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.

我是一个Unix菜鸟,并且担心时间机器用32位豹子和64位狮子捣碎的文件结构存在严重问题。我到目前为止采取的步骤。

重新安装XCode

Xcode 4.3.3
Build version 4E3002

根据首选项在XCode中安装命令行工具。

使用

更新到rvm 1.14.6(master)
rvm get head

试图用macports在本地安装postgre时撞墙。卸载了macports并安装了自制程序

来自

的记录
brew doctor

然后

brew install postgresql

遇到python问题,并按照建议安装w / o python

brew install --no-python postgresql

似乎得到了一个干净的postgresql安装,但我的输出来自

gem install pg 

仍然是:

        /Users/taylorjackson/.rvm/rubies/ruby-1.9.2-p136/bin/ruby extconf.rb 
checking for pg_config... yes
Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... *** 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.

也试过

bundle install

bundle config build.pg --with-pg-config=/users/taylorjackson/postgresql/bin/pg_config
bundle install

具有相同的结果 过去7个小时我的工作效率已降至零。找不到相关的mkmf.log文件。还有其他想法吗?

编辑:

找到了mkmf.log。以下是相关内容:

def have_devel?
  unless defined? $have_devel
    $have_devel = true
    $have_devel = try_link(MAIN_DOES_NOTHING)
  end
  $have_devel
end

def try_do(src, command, &b)
  unless have_devel?
    raise <<MSG
The complier failed to generate an executable file.
You have to install development tools first.
MSG
  end
  begin
    src = create_tmpsrc(src, &b)
    xsystem(command)
  ensure
    log_src(src)
    rm_rf 'conftest.dSYM'
  end
end

2 个答案:

答案 0 :(得分:1)

您找到的文件是mkmf.rb,而不是mkmf.logmkmf.log在开头会看起来像这样:

find_executable: checking for pg_config... -------------------- yes

--------------------

find_header: checking for libpq-fe.h... -------------------- yes
"/usr/bin/gcc-4.2 -o conftest -I/Users/mgranger/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/x86_64-darwin11.3.0 -I/Users/mgranger/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/ruby/backward -I/Users/mgranger/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1 -I. -I/Users/mgranger/.rvm/usr/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/usr/include  -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration  -fno-common -pipe conftest.c  -L. -L/Users/mgranger/.rvm/rubies/ruby-1.9.3-p194/lib -L/Users/mgranger/.rvm/usr/lib -L. -L/usr/local/lib -L/usr/lib     -lruby.1.9.1  -lpthread -ldl -lobjc "
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main() {return 0;}
/* end */

您可以在解压缩的gem中的'ext'目录中找到它。在bash下,这对我有用:

less $(dirname $(gem which pg))/../ext/mkmf.log

在OSX下,第一个标题的失败几乎总是表明你的编译器设置存在一些问题,特别是如果它找到你的pg_config(看起来你的确如此)。看看引号中命令开头的'gcc'实际上存在于您的机器上。在我的情况下是/usr/bin/gcc-4.2。如果缺少,那么在任何扩展名将从源正确安装之前,您需要修复此问题。

另一方面,如果您的gcc确实存在,请附上mkmf.log文件,该文件通常包含指向正确方向所需的线索。

答案 1 :(得分:0)

重新启动,并注意到PostgreSQL以某种方式被添加为用户(!)。删除了用户,将gem'pg'添加到gemfile并安装了bundle,整个过程顺利进行。不确定安装过程中的奇怪之处是否会导致这种情况发生。我没有更改安装中的任何默认值 - 但我的猜测是使用过期版本的macports的问题。

对于处于类似情况的人,我建议1)永远不要用时间机器备份来切换操作系统。 2)清理安装xcode,xcode开发人员工具(来自xcode首选项菜单)和自制软件。 3)强制更新rvm 4)使用brew install postgresql在本地安装postgresql。 5)重新启动并尝试再次捆绑安装pg gem。我做了很多东西,但我认为这些是我认为有效的步骤。