2016-01-26 75 views
2

我想我的應用程序推送到Heroku的,我配置了我的Gemfile這樣:Rails的錯誤運行創業板安裝PG

group :production do 
    gem 'pg', '0.18.4' 
    gem 'rails_12factor', '0.0.2' 
    gem 'puma' 
end 

運行時捆綁安裝,我在我的控制檯收到此錯誤:

An error occurred while installing pg (0.18.4), and Bundler cannot continue. 
Make sure that `gem install pg -v '0.18.4'` succeeds before bundling. 

後來,當我運行gem安裝PG -v '0.18.4',我得到如下:

ERROR: While executing gem ... (Gem::FilePermissionError) 
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory. 

當我運行sudo gem install pg -v '0.18.4'

我得到如下:

ERROR: Error installing pg: 
    ERROR: Failed to build gem native extension. 

    current directory: /Library/Ruby/Gems/2.0.0/gems/pg-0.18.4/ext 
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby -r ./siteconf20160125-5501-ugsd1s.rb extconf.rb 
checking for pg_config... yes 
Using config values from /usr/local/bin/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... no 
checking for PQconnectdb() in -llibpq... no 
checking for PQconnectdb() in -lms/libpq... no 
Can't find the PostgreSQL client library (libpq) 
*** 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. 

UPDATE

我重新安裝了RVM和鐵軌,現在當我運行gem安裝PG -v '0.18.4',它運行成功:

Successfully installed pg-0.18.4 
Parsing documentation for pg-0.18.4 
Done installing documentation for pg after 3 seconds 
1 gem installed 

但是,當運行捆綁安裝,我得到這個:

Installing pg 0.18.4 with native extensions 

Gem::Ext::BuildError: ERROR: Failed to build gem native extension. 

    current directory: /Users/benwong/Desktop/ruby/rails_projects/blog2/vendor/bundle/ruby/2.2.0/gems/pg-0.18.4/ext 
/Users/benwong/.rvm/rubies/ruby-2.2.1/bin/ruby -r ./siteconf20160126-44660-1ufenyc.rb extconf.rb --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config 
Using config values from /Applications/Postgres.app/Contents/MacOS/bin/pg_config 
sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: No such file or directory 
sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: No such file or directory 
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 PQconninfo()... yes 
checking for rb_encdb_alias()... yes 
checking for rb_enc_alias()... yes 
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 rb_str_modify_expand()... yes 
checking for rb_hash_dup()... yes 
checking for PGRES_COPY_BOTH in libpq-fe.h... yes 
checking for PGRES_SINGLE_TUPLE in libpq-fe.h... yes 
checking for PG_DIAG_TABLE_NAME in libpq-fe.h... yes 
checking for struct pgNotify.extra in libpq-fe.h... yes 
checking for unistd.h... yes 
checking for inttypes.h... yes 
checking for ruby/st.h... yes 
checking for C99 variable length arrays... yes 
creating extconf.h 
creating Makefile 

To see why this extension failed to compile, please check the mkmf.log which can be found here: 

    /Users/benwong/Desktop/ruby/rails_projects/blog2/vendor/bundle/ruby/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/pg-0.18.4/mkmf.log 

current directory: /Users/benwong/Desktop/ruby/rails_projects/blog2/vendor/bundle/ruby/2.2.0/gems/pg-0.18.4/ext 
make "DESTDIR=" clean 

current directory: /Users/benwong/Desktop/ruby/rails_projects/blog2/vendor/bundle/ruby/2.2.0/gems/pg-0.18.4/ext 
make "DESTDIR=" 
compiling gvl_wrappers.c 
compiling pg.c 
compiling pg_binary_decoder.c 
compiling pg_binary_encoder.c 
compiling pg_coder.c 
compiling pg_connection.c 
pg_connection.c:2394:3: warning: implicit declaration of function 'gettimeofday' is invalid in C99 [-Wimplicit-function-declaration] 
       gettimeofday(&currtime, NULL); 
       ^
1 warning generated. 
compiling pg_copy_coder.c 
compiling pg_errors.c 
compiling pg_result.c 
compiling pg_text_decoder.c 
compiling pg_text_encoder.c 
compiling pg_type_map.c 
compiling pg_type_map_all_strings.c 
compiling pg_type_map_by_class.c 
compiling pg_type_map_by_column.c 
compiling pg_type_map_by_mri_type.c 
compiling pg_type_map_by_oid.c 
compiling pg_type_map_in_ruby.c 
compiling util.c 
linking shared-object pg_ext.bundle 
ld: warning: directory not found for option '-L/Users/haven/.sm/pkg/active/lib' 
ld: file not found: dynamic_lookup 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
make: *** [pg_ext.bundle] Error 1 

make failed, exit code 2 

Gem files will remain installed in /Users/benwong/Desktop/ruby/rails_projects/blog2/vendor/bundle/ruby/2.2.0/gems/p 

g-0.18.4 for inspection. 
    Results logged to /Users/benwong/Desktop/ruby/rails_projects/blog2/vendor/bundle/ruby/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/pg-0.18.4/gem_make.out 

Using puma 2.15.3 
Using rails_serve_static_assets 0.0.4 
Using rails_stdout_logging 0.0.4 
Using sass 3.4.21 
Using tilt 2.0.2 
Using spring 1.6.2 
Using rdoc 4.2.1 
Using tzinfo 1.2.2 
Using nokogiri 1.6.7.2 
Using rack-test 0.6.3 
Using warden 1.2.4 
Using mail 2.6.3 
Using binding_of_caller 0.7.2 
Using coffee-script 2.4.1 
Using uglifier 2.7.2 
Using sprockets 3.5.2 
An error occurred while installing pg (0.18.4), and Bundler cannot continue. 
Make sure that `gem install pg -v '0.18.4'` succeeds before bundling. 
+0

與普通用戶和root用戶運行時使用的* pg_config *是否相同? –

+0

對不起。我不理解。我試着用sudo gem install和-pg-config再次嘗試,結果如下:錯誤:執行gem時(Gem :: FilePermissionError) 您沒有寫入/Library/Ruby/Gems/2.0權限.0目錄。 –

回答

0

您需要安裝PostgreSQL才能安裝pg gem。還需要配置PATH。 您可以使用http://postgresapp.com/在Mac上輕鬆安裝PostgreSQL。並用它來配置PATH:http://postgresapp.com/documentation/cli-tools.html

+0

我安裝了PostgreSQL並配置了PATH,但仍然給我:(安裝pg(0.18.4)時發生錯誤,Bundler無法繼續。 確保'gem install pg -v'0.18.4''成功捆綁)當我捆綁安裝。 –

0

很多時候,你可以在安裝寶石的時候找到類似的答案,只是因爲互聯網很慢......你確定不是這樣嗎?你又試過了嗎?你的第二個片段是線索......解釋其餘部分。