Ruby on rails leopard到lion升级后安装pg gem并运行服务器时出错

Ruby on rails leopard到lion升级后安装pg gem并运行服务器时出错,ruby-on-rails,macos,postgresql,osx-lion,pg,Ruby On Rails,Macos,Postgresql,Osx Lion,Pg,使用时间机器备份将文件从我的macbook running Leopard同步到我的macbook pro running Lion。由于运行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 c

使用时间机器备份将文件从我的macbook running Leopard同步到我的macbook pro running Lion。由于运行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 noob,我担心time machine在将32位leopard与64位lion混搭在一起时创建的文件结构存在严重问题。到目前为止,我已经采取了一些措施

重新安装的XCode

Xcode 4.3.3
Build version 4E3002
从首选项在XCode中安装了命令行工具

更新至rvm 1.14.6(主版本),带有

试图用macports在本地安装postgre时,头部撞在墙上。已卸载macports并已安装自制软件

brew doctor
然后

brew安装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

同样的结果 我过去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
def已经开发了吗?
除非定义$得发
$have_devel=true
$have\u devel=try\u链接(MAIN\u不执行任何操作)
结束
$have_devel
结束
def try_do(src、命令和b)
除非你有德维尔?

raise找到的文件是
mkmf.rb
,而不是
mkmf.log
。开始时,
mkmf.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
文件,该文件通常包含指向正确方向的必要线索。

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


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

在搜索“gem安装狮子”时,有许多几乎相同的问题。你在发帖前搜索过吗?如果是的话,那么现有的答案对你没有帮助吗?我花了将近4个小时浏览相关的帖子(因此我的第一篇帖子很长,主要来自SE建议)。看起来文件结构中有很多相关的奇怪的意外情况——都依赖于机器。在我的例子中,我的postgresql安装位置创建了一个新的本地用户(尽管我没有更改任何默认位置-可能安装到/usr/root??),并导致gem安装在错误的位置查找本地pg安装。重置和删除用户(+原始帖子中提到的所有其他内容)将事情弄清楚。啊,谢谢。我只是问‘因为我最近在ruby on OSX lion上看到了很多关于pg jem的类似帖子。如果你链接到相关的帖子,会很有帮助,尤其是因为它会帮助那些发现你的问题很晚的人!这可能也是答案的一部分。我确实重新安装了gcc。在我的例子中,文件mkmf.log是通过以下方式找到的:find/usr/lib/ruby/-name*.logFYI,。PostgreSQL通常在其自己的用户帐户下运行。删除该选项可能会导致在默认配置下运行该选项时出现问题。
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 */
less $(dirname $(gem which pg))/../ext/mkmf.log