我刚升级到Rails 3,需要整理的MacPorts、gems和数据库有点乱.我扔掉了所有的Ruby ,重新安装.除了pg gem的要求外,一切似乎都很好.

在创建了一个新的Rails 3项目(为PostgreSQL做准备)之后,服务器无法启动,抱怨缺少pg gem.完成bundle install分后,它开始了一段时间,当然,在pg gem上失败了.

Installing pg (0.10.0) with native extensions /Library/Ruby/Site/1.8/rubygems/installer.rb:483:in `build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb 
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h


Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/pg-0.10.0 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/pg-0.10.0/ext/gem_make.out
    from /Library/Ruby/Site/1.8/rubygems/installer.rb:446:in `each'
    from /Library/Ruby/Site/1.8/rubygems/installer.rb:446:in `build_extensions'
    from /Library/Ruby/Site/1.8/rubygems/installer.rb:198:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/source.rb:95:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/installer.rb:55:in `run'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/spec_set.rb:12:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/spec_set.rb:12:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/installer.rb:44:in `run'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/installer.rb:8:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/cli.rb:225:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/vendor/thor/task.rb:22:in `send'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/vendor/thor/task.rb:22:in `run'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/vendor/thor.rb:246:in `dispatch'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/vendor/thor/base.rb:389:in `start'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/bin/bundle:13
    from /usr/bin/bundle:19:in `load'
    from /usr/bin/bundle:19

我在论坛和博客上发现的最常见的建议是(重新)安装XCode开发工具.它们已经在那里了,但我还是重新安装了它们,没有比上面更好的结果.

which ruby表示/usr/bin/rubyruby -v表示ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0],如果有任何线索的话.

欢迎指点.任何有助于解决这一问题的缺失信息,我都乐意及时提供!


我下载了XCode,因为DVD版本据说已经坏了,事情好了一段时间.bundle install开始谈论"archflags",于是我:

sudo env ARCHFLAGS="-arch i386" bundle install

事情似乎进展顺利,直到起跑轨吐了出来,说:

/Library/Ruby/Gems/1.8/gems/pg-0.10.0/lib/pg_ext.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/pg-0.10.0/lib/pg_ext.bundle, 9): no suitable image found.  Did find: (LoadError)
    /Library/Ruby/Gems/1.8/gems/pg-0.10.0/lib/pg_ext.bundle: mach-o, but wrong architecture - /Library/Ruby/Gems/1.8/gems/pg-0.10.0/lib/pg_ext.bundle

为了 payable 任何事情,我try 了bundle install次,把archflags设置为-arch x86_64,但效果不好:

*** Your PostgreSQL installation doesn't seem to have an architecture in common with the running ruby interpreter ([] vs. ["x86_64"])
I'll continue anyway, but if it fails, try setting ARCHFLAGS.
[...]
Can't find the PostgreSQL client library (libpq)
*** extconf.rb failed ***

libpq是我现在必须通过一些标志提供的路径吗?还是我完全出go 吃午饭了?

推荐答案

一般来说,Postgres的gem bundle想要知道pg_config隐藏在哪里,这样他们就可以询问Postgres的安装情况.

locate pg_config看看你的Mac电脑是否知道它藏在哪里.

我用mappstack安装了一个Postgres副本,所以我的Mac电脑上显示有一个副本:

/Applications/mappstack-1.2-3/postgresql/bin/pg_config

另一个网址是:

/Library/PostgreSQL/9.0/bin/pg_config

我不记得在/Library/PostgreSQL/9.0安装了这个,所以它可能是雪豹预先安装的,或者是我在太多工作的影响下安装的,可能是使用了EnterpriseDB的Postgres安装程序.

找到pg_config的位置后,try 将该目录添加到路径的开头,然后重新运行gem安装.

export SQL_PATH=/Library/PostgreSQL/9.0
gem install pg -- --with-pg-config=$SQL_PATH/bin/pg_config

然后try 安装.如果你完成了这两项工作中的任何一项.否则

接下来,安装人员可能希望访问Postgres标题,因此您可以查看bin个目录的父目录,看看是否可以找到include个目录.

之后,在该目录中查找lib个目录.一旦你知道了这些位置,你就应该拥有所有你需要设置的环境变量,让安装程序完成.你需要阅读安装程序的READMEINSTALL文件,看看需要设置什么.您将配置:

export include_dir=$SQL_PATH/include/
export     lib_dir=$SQL_PATH/lib/
gem install pg -- --with-pgsql-include-dir=$include_dir --with-pgsql-lib-dir=$lib_dir

希望这些都能帮上忙.我有Rails 3和我的Postgres运行良好,使用mappstack Postgres和EnterpriseDB版本,所以上面的信息应该能让你达到目的.

Postgresql相关问答推荐

"错误:无法创建用户:错误:关系\users\违反了非空约束

Postgresql我必须创建一个索引还是已经有一个索引了?

在Power BI和Excel中将日期格式化为正确格式

Postgres 会话处于空闲状态,query = COMMIT 或 ROLLBACK

在 PostgreSQL 中返回插入的行

PostgreSQL - jsonb_each

PostgreSQL ORDER BY 问题 - 自然排序

无法向 postgresql 数据库授予用户权限(对于 rails 应用程序)

Mac psql/readline - 未加载库

gem install pg 无法绑定到 libpq

IntegrityError:postgres 从转储恢复后,所有具有 ForeignKey 的模型/字段的id列中的空值

为什么 sqlalchemy 的默认列值不起作用

在 row_to_json 函数中 Select 查询

仅在存在时重命名列

在 postgres 中创建超级用户

根据 Helm 图表设置值

PostgreSQL 使用 UUID 与文本作为主键

pg_restore 会覆盖现有的表吗?

没有函数匹配给定的名称和参数类型

GRANT SELECT 特权使用一个语句对所有序列