无法安装pg gem [英] Cannot install pg gem

查看:239
本文介绍了无法安装pg gem的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

最后,我花了数小时试图弄清楚为什么它不能正常工作,终于设法得到'pg'gem install ...



最后我输入了 sudo env ARCHFLAGS = - arch x86_64gem install pg -v 0.12.2 - --with-pg-config = / Applications / Postgres.app / Contents / MacOS / bin / pg_config bundle install 的意思:

 安装pg(0.12 .2)
Gem :: Installer :: ExtensionBuildError:错误:无法构建gem本机扩展。

/Users/thomas/.rvm/rubies/ruby-1.9.3-p392/bin/ruby extconf.rb --with-pg-config = / usr / pgsql-9.2 / bin / pg_config
使用/usr/pgsql-9.2/bin/pg_config中的配置值
sh:/usr/pgsql-9.2/bin/pg_config:没有这样的文件或目录
sh:/ usr / pgsql -9.2 / bin / pg_config:没有这样的文件或目录
检查libpq-fe.h ...是
检查libpq / libpq-fs.h ...是
检查PQconnectdb()in -lpq ...是
检查PQconnectionUsedPassword()...是
检查PQisthreadsafe()...是
检查PQprepare()...是
检查PQexecParams()...是
检查PQescapeString()...是
检查PQescapeStringConn()...是
检查PQgetCancel()...是
检查lo_create()...是
检查pg_encoding_to_char()...是
检查PQsetClientEncoding()...是
检查rb_encdb_alias()。 ..是
登记g为rb_enc_alias()...是
在libpq-fe.h中检查struct pgNotify.extra ...是
检查unistd.h ...是
检查ruby / st.h ...是
创建extconf.h
创建Makefile

make
编译compat.c
编译pg.c
pg.c:函数'pgconn_wait_for_notify':
pg.c:2117:警告:'rb_thread_select'已被弃用(在/Users/thomas/.rvm/rubies/ruby-1.9.3-p392/include/处声明) ruby-1.9.1 / ruby​​ / intern.h:380)
pg.c:在函数'pgconn_block'中:
pg.c:2592:warning:格式不是字符串和格式参数
pg.c:2598:警告:'rb_thread_select'已弃用(在/Users/thomas/.rvm/rubies/ruby-1.9.3-p392/include/ruby-1.9.1/ruby/intern.h中声明)。 :380)
pg.c:2607:警告:格式不是字符串字面,也不是格式参数
链接共享对象pg_ext.bundle
ld:warning:找不到选项的目录' - L-WL,-undefined,DYNAM ic_lookup'
架构x86_64的未定义符号:

....

ld:架构x86_64未找到符号
collect2:ld返回1退出状态
make:*** [pg_ext.bundle]错误1

I认为问题在于bundler试图使用来自另一postresql安装(我已经删除)的pg_config来安装gem。有没有什么方法可以确保bundler使用正确的路径?

解决方案

我被捆绑安装了3天。尝试一切,比如添加env ARCHFLAGS = - arch x86_64gem install pg - --with-pg-config = / usr / local / Cellar / postgresql / 9.3.5_1 / bin / pg_config



我能够看到pg gem在这个命令后被安装,但仍然不是从bundle install安装的,这是一种痛苦,因为我知道要在Gemfile中写入什么,除了gem'pg'



终于为我工作的东西是发现我的pg_config位于/Library/PostgreSQL/9.3/bin/pg_config,默认情况下,Gemfile捆绑安装在/ usr / local / bin / pg_config



我刚刚运行以下命令并发生了魔法。 bundle config build.pg --with-pg-config = / Library / PostgreSQL / 9.3 / bin / pg_config I finally managed to get the 'pg' gem install after spending hours trying to figure out why it's not working...

at the end I entered sudo env ARCHFLAGS="-arch x86_64" gem install pg -v 0.12.2 -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config which worked like a charm. But now I still have the same error when I try bundler - so I guess I didn't really solve the problem? Anyway, here's what bundle install is saying:

 Installing pg (0.12.2) 
    Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

            /Users/thomas/.rvm/rubies/ruby-1.9.3-p392/bin/ruby extconf.rb --with-pg-config=/usr/pgsql-9.2/bin/pg_config
    Using config values from /usr/pgsql-9.2/bin/pg_config
    sh: /usr/pgsql-9.2/bin/pg_config: No such file or directory
    sh: /usr/pgsql-9.2/bin/pg_config: No such file or directory
    checking for libpq-fe.h... yes
    checking for libpq/libpq-fs.h... yes
    checking for PQconnectdb() in -lpq... yes
    checking for PQconnectionUsedPassword()... yes
    checking for PQisthreadsafe()... yes
    checking for PQprepare()... yes
    checking for PQexecParams()... yes
    checking for PQescapeString()... yes
    checking for PQescapeStringConn()... yes
    checking for PQgetCancel()... yes
    checking for lo_create()... yes
    checking for pg_encoding_to_char()... yes
    checking for PQsetClientEncoding()... yes
    checking for rb_encdb_alias()... yes
    checking for rb_enc_alias()... yes
    checking for struct pgNotify.extra in libpq-fe.h... yes
    checking for unistd.h... yes
    checking for ruby/st.h... yes
    creating extconf.h
    creating Makefile

make
    compiling compat.c
    compiling pg.c
    pg.c: In function ‘pgconn_wait_for_notify’:
    pg.c:2117: warning: ‘rb_thread_select’ is deprecated (declared at /Users/thomas/.rvm/rubies/ruby-1.9.3-p392/include/ruby-1.9.1/ruby/intern.h:380)
    pg.c: In function ‘pgconn_block’:
    pg.c:2592: warning: format not a string literal and no format arguments
    pg.c:2598: warning: ‘rb_thread_select’ is deprecated (declared at /Users/thomas/.rvm/rubies/ruby-1.9.3-p392/include/ruby-1.9.1/ruby/intern.h:380)
    pg.c:2607: warning: format not a string literal and no format arguments
    linking shared-object pg_ext.bundle
    ld: warning: directory not found for option '-L-Wl,-undefined,dynamic_lookup'
    Undefined symbols for architecture x86_64:

....

    ld: symbol(s) not found for architecture x86_64
    collect2: ld returned 1 exit status
    make: *** [pg_ext.bundle] Error 1

I think the problem is that bundler tries to install the gem using the pg_config from another postresql installation (which I had removed). Is there any way to ensure that bundler uses the right path?

解决方案

I was stuck on my bundle install for 3 days. Tried Everything like adding env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/Cellar/postgresql/9.3.5_1/bin/pg_config

I was able to see pg gem getting installed after this command but still it was not installing from bundle install, which was a pain because I dint know what to write in Gemfile except gem 'pg'

The thing which finally worked for me was to find that my pg_config was in /Library/PostgreSQL/9.3/bin/pg_config and by default the Gemfile bundle install looks in /usr/local/bin/pg_config

I just ran the following command and magic happened. bundle config build.pg --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config

这篇关于无法安装pg gem的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆