使用时间机器备份将运行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
答案 0 :(得分: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
文件,该文件通常包含指向正确方向所需的线索。
答案 1 :(得分:0)
重新启动,并注意到PostgreSQL以某种方式被添加为用户(!)。删除了用户,将gem'pg'添加到gemfile并安装了bundle,整个过程顺利进行。不确定安装过程中的奇怪之处是否会导致这种情况发生。我没有更改安装中的任何默认值 - 但我的猜测是使用过期版本的macports的问题。
对于处于类似情况的人,我建议1)永远不要用时间机器备份来切换操作系统。 2)清理安装xcode,xcode开发人员工具(来自xcode首选项菜单)和自制软件。 3)强制更新rvm 4)使用brew install postgresql在本地安装postgresql。 5)重新启动并尝试再次捆绑安装pg gem。我做了很多东西,但我认为这些是我认为有效的步骤。