0

使用时间机器备份将文件从运行 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 并安装 homebrew

关注的记录来自

brew doctor

然后

冲泡安装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
4

2 回答 2

1

您找到的文件是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文件,该文件通常包含为您指明正确方向所需的线索。

于 2012-07-24T17:58:05.937 回答
0

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

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

于 2012-07-25T03:55:06.887 回答