Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 错误:无法在Mavericks上构建gem本机扩展_Ruby On Rails_Ruby_Ruby On Rails 4_Pg_Osx Mavericks - Fatal编程技术网

Ruby on rails 错误:无法在Mavericks上构建gem本机扩展

Ruby on rails 错误:无法在Mavericks上构建gem本机扩展,ruby-on-rails,ruby,ruby-on-rails-4,pg,osx-mavericks,Ruby On Rails,Ruby,Ruby On Rails 4,Pg,Osx Mavericks,我正试图在OSX 10.9上的Rails项目中运行bundle。当到达pggem时失败,出现以下错误: Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /Users/kyledecot/.rvm/rubies/ruby-2.0.0-p247/bin/ruby extconf.rb checking for pg_config... no No pg_config... t

我正试图在OSX 10.9上的Rails项目中运行
bundle
。当到达
pg
gem时失败,出现以下错误:

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /Users/kyledecot/.rvm/rubies/ruby-2.0.0-p247/bin/ruby extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for pg_config_manual.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 PQescapeLiteral()... yes
checking for PQescapeIdentifier()... yes
checking for PQgetCancel()... yes
checking for lo_create()... yes
checking for pg_encoding_to_char()... yes
checking for pg_char_to_encoding()... yes
checking for PQsetClientEncoding()... yes
checking for PQlibVersion()... yes
checking for PQping()... yes
checking for PQsetSingleRowMode()... yes
checking for rb_encdb_alias()... yes
checking for rb_enc_alias()... no
checking for rb_thread_call_without_gvl()... yes
checking for rb_thread_call_with_gvl()... yes
checking for rb_thread_fd_select()... yes
checking for rb_w32_wrap_io_handle()... no
checking for PGRES_COPY_BOTH in libpq-fe.h... no
checking for PGRES_SINGLE_TUPLE in libpq-fe.h... no
checking for PG_DIAG_TABLE_NAME in libpq-fe.h... no
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 "DESTDIR="
compiling gvl_wrappers.c
clang: warning: argument unused during compilation: '-fno-fast-math'
compiling pg.c
clang: warning: argument unused during compilation: '-fno-fast-math'
pg.c:272:9: warning: implicit declaration of function 'PQlibVersion' is invalid in C99 [-Wimplicit-function-declaration]
        return INT2NUM(PQlibVersion());
               ^
In file included from pg.c:48:
In file included from ./pg.h:17:
In file included from /Users/kyledecot/.rvm/rubies/ruby-2.0.0-p247/include/ruby-2.0.0/ruby.h:33:
/Users/kyledecot/.rvm/rubies/ruby-2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:1167:21: note: instantiated from:
# define INT2NUM(v) INT2FIX((int)(v))
                    ^
pg.c:272:9: note: instantiated from:
        return INT2NUM(PQlibVersion());
               ^
pg.c:272:17: note: instantiated from:
        return INT2NUM(PQlibVersion());
                       ^
pg.c:375:48: error: use of undeclared identifier 'PQPING_OK'
        rb_define_const(rb_mPGconstants, "PQPING_OK", INT2FIX(PQPING_OK));
                                                      ^
pg.c:375:56: note: instantiated from:
        rb_define_const(rb_mPGconstants, "PQPING_OK", INT2FIX(PQPING_OK));
                                                              ^
pg.c:377:52: error: use of undeclared identifier 'PQPING_REJECT'
        rb_define_const(rb_mPGconstants, "PQPING_REJECT", INT2FIX(PQPING_REJECT));
                                                          ^
pg.c:377:60: note: instantiated from:
        rb_define_const(rb_mPGconstants, "PQPING_REJECT", INT2FIX(PQPING_REJECT));
                                                                  ^
pg.c:379:57: error: use of undeclared identifier 'PQPING_NO_RESPONSE'
        rb_define_const(rb_mPGconstants, "PQPING_NO_RESPONSE", INT2FIX(PQPING_NO_RESPONSE));
                                                               ^
pg.c:379:65: note: instantiated from:
        rb_define_const(rb_mPGconstants, "PQPING_NO_RESPONSE", INT2FIX(PQPING_NO_RESPONSE));
                                                                       ^
pg.c:381:56: error: use of undeclared identifier 'PQPING_NO_ATTEMPT'
        rb_define_const(rb_mPGconstants, "PQPING_NO_ATTEMPT", INT2FIX(PQPING_NO_ATTEMPT));
                                                              ^
pg.c:381:64: note: instantiated from:
        rb_define_const(rb_mPGconstants, "PQPING_NO_ATTEMPT", INT2FIX(PQPING_NO_ATTEMPT));
                                                                      ^
1 warning and 4 errors generated.
make: *** [pg.o] Error 1


Gem files will remain installed in /Users/kyledecot/.rvm/gems/ruby-2.0.0-p247@skateboxes/gems/pg-0.17.0 for inspection.
Results logged to /Users/kyledecot/.rvm/gems/ruby-2.0.0-p247@skateboxes/gems/pg-0.17.0/ext/gem_make.out

An error occurred while installing pg (0.17.0), and Bundler cannot continue.
Make sure that `gem install pg -v '0.17.0'` succeeds before bundling.
尝试使用
--with pg config
参数:

bundle config build.pg --with-pg-config=/usr/pgsql-9.1/bin/pg_config
要显示pg_配置的路径,请执行以下操作:

which pg_config

对于Ubuntu用户:

sudo apt-get install postgresql
sudo apt-get install libpq-dev
然后:


还要确保您已经升级了Xcode,以便在Mavericks上重新安装命令行工具。 在终端类型中:

xcode-select --install

然后按照提示进行操作

对于使用Mavericks、Rails 3.2.13、Ruby 2.0.0-p247、PostgreSQL 9.1的我来说,我需要这样做:

gem install pg -v '0.15.1' -- --with-pg-config=/Library/PostgreSQL/9.1/bin/pg_config

对我来说,当我这样做时,它起了作用:

brew install postgresql

这对我和小牛队以及Postgresapp都很管用:

gem install pg -v '0.17.0' -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config

这在Mac OS X 10.9.3和Postgres.app 9.3.4.2版上对我很有效:

1) 安装Postgres.app

2)
bundle config build.pg——带pg config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

3)
gem安装pg-v'0.17.1'


4)
bundle安装

我刚刚通过

ARCHFLAGS="-arch x86_64" gem install pg

在使用brew安装posgres后,以下几点对我起到了作用:


gem安装pg-v'0.18.1'--with pg config=/Library/PostgreSQL/9.3/bin/pg_config

您必须使用当前版本配置pg我在约塞米蒂使用了我的9.4版本。下面是以下命令

bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config 
你应该使用你自己的版本

bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/(YOUR POSTGRES VERSION)/bin/pg_config 
那就做吧

bundle install

安装调试器(1.6.5)时出错,绑定程序无法继续。
在绑定之前,请确保'gem install debugger-v'1.6.5'成功。

我可以通过回滚到Ruby v2.0.0来修复这个错误。我运行的是Ruby 2.1.1,这个调试器版本不支持它。如果遇到此问题,请务必检查您的ruby版本。

当我尝试安装时

apt-get install libpq-dev
安装失败,要解决未满足的依赖项问题

apt-get remove libpq5
然后安装

apt-get install libpq-dev

终于解决了gem pg问题。

谢谢,这对我在osx mavericks FinalTanks上使用9.3.1版起到了作用,解决了我的问题。有时候,在brew安装PostgreSql后,你需要gem卸载pg也对我起到了作用!谢谢@user702342为我工作!看起来使用brew也解决了为我设计的问题,对于那些复制此命令的人,请注意路径Postgres/Contents/Versions/9.3/bin/pg_config中的Postgres.app名称。对于任何使用OS X Postgres app安装的人,这不适用于我。我从CLI安装程序获得“无法安装软件,因为软件更新服务器当前不提供该软件”。进一步的研究表明,Xcode 5默认使用CLI工具。萨亚尼的回答对我有用。@JosephJuhnke我也有同样的问题。您可以从Apple网站手动下载和安装。奇怪的是,我记得我最近安装了这个软件,但按照规定再次运行安装程序,解决了我的问题。谢谢我安装了Xcode,但没有同意许可证。运行sudoxcodebuild-license解决了这个问题。对我有效的方法是
gem安装pg-v'0.18.1'---使用pg config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg\u config
apt-get install libpq-dev