【问题标题】:Error Installing pg gem and running server after leopard to lion upgrade豹升级到狮子后安装pg gem并运行服务器时出错
【发布时间】:2012-07-23 18:05:26
【问题描述】:

使用时间机器备份将文件从运行 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) with

rvm get head

试图用 macports 在本地安装 postgre 时头撞墙。卸载 macports 并安装 homebrew

来自

的关注记录
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

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

【问题讨论】:

  • 在搜索“gem install Lion”时有很多几乎相同的问题。您在发布之前是否进行了搜索,如果是,那么现有答案没有帮助怎么办?
  • 我花了将近 4 个小时逐步浏览相关线程,(因此我的初始帖子很长,主要来自 SE 建议)。似乎有很多相关的奇怪的文件结构意外事件 - 所有机器依赖。就我而言,不知何故,我的 postgresql 安装位置创建了一个新的本地用户(尽管我没有更改任何默认位置 - 安装到 /usr /root 可能??),并引导 gem install 在错误的地方。重置和删除用户(+原始帖子中提到的所有其他内容)让事情变得简单。
  • 啊,谢谢。我只问'因为我最近在 OSX lion 上看到了关于 ruby​​ 的 pg jem 的 v.similar 帖子的真正激增。如果您链接到相关帖子会有所帮助,尤其是因为它会帮助其他迟到发现您的问题的人。r

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


【解决方案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。如果缺少,您需要在 any 扩展从源代码正确安装之前修复它。

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

【讨论】:

  • 谢谢!这可能也是答案的一部分。我确实重新安装了 gcc。
  • 在我的情况下,文件 mkmf.log 是使用以下命令找到的:find /usr/lib/ruby/ -name *.log
【解决方案2】:

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

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

【讨论】:

  • 仅供参考,。通常 PostgreSQL 在其自己的用户帐户下运行。删除它,您可能会导致在默认配置上运行它时出现问题。
猜你喜欢
  • 2017-08-27
  • 1970-01-01
  • 1970-01-01
  • 2014-01-16
  • 1970-01-01
  • 2016-05-02
  • 2011-05-19
  • 2013-05-21
  • 1970-01-01
相关资源
最近更新 更多