2016-05-07 17 views
-1
bash-4.2# rake db:create 
/opt/rubystack-2.3.1-0/ruby/bin/.ruby.bin: symbol lookup error: /opt/rubystack-2.3.1-0/ruby/lib/ruby/gems/2.3.0/gems/pg-0.18.4/lib/pg_ext.so: undefined symbol: rb_thread_select 
bash-4.2# ruby -v 
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux] 
bash-4.2# rails -v 
Rails 4.2.6 
bash-4.2# gem list pg 

*** LOCAL GEMS *** 



    pg (0.18.4, 0.15.1) 

どうしたの?それはbitnamiのルビースタックです。pg_ext.so:未定義シンボル:rb_thread_select

注:これはpgバージョンのバグではありませんか?私のログをチェックしてください! Rubyバージョン2.3.1、pgバージョン0.18.4。

答えて

1

Ruby 1.9.3のため、rb_thread_select関数は廃止されました。これは、ルビー2.2のようrb_thread_fd_select関数で置き換えた:

VA VD VR 
old 193 22 rb_thread_select -> rb_thread_fd_select 

しかし、pg GEM has been using the correct functionをバージョン0.15ため。ここpg_connection.c @ e5cb1dfの関連セクションがあります:

#ifndef HAVE_RB_THREAD_FD_SELECT 
#define rb_fdset_t fd_set 
#define rb_fd_init(f) 
#define rb_fd_zero(f) FD_ZERO(f) 
#define rb_fd_set(n, f) FD_SET(n, f) 
#define rb_fd_term(f) 
#define rb_thread_fd_select rb_thread_select 
#endif 

これらのディレクティブは、コンパイル時に評価されているので、Cの拡張機能の共有オブジェクトが正しくコンパイルされている必要があります。

pg_ext.soをビルドしたときに、HAVE_RB_THREAD_FD_SELECTマクロが定義されていてはなりません。

    :それは rb_thread_fd_select
  • それは間違ってビルドプロセス中

参照を設定しました持っていなかったというのRubyに対して構築された

+0

'これは、Rubyのに対して構築されたrb_thread_fd_select'を持っていなかったこと:もしかして、バンドルをインストールするとき、それは悪いルビーバージョンを指す@Matheusモレイラ –

+0

@? Albert.Qing、あなた自身が宝石をインストールし、その時に拡張機能をビルドした場合、チェックされたRubyビルドシステムに 'rb_thread_fd_select'機能がない可能性があります。だから、それはおそらく最新バージョンではありませんでした。おそらく古いシステムのRubyでしょうか? –

+1

あなたは私のパズルを解決しました、私はbitnamiのルビーが問題を抱えているかもしれないと思う、ありがとう@Matheus Moreira –

関連する問題