2016-05-07 9 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) 

В чем проблема? это рубиновый стек битнами.pg_ext.so: undefined symbol: rb_thread_select

ПРИМЕЧАНИЕ: Это не ошибка версии pg? Пожалуйста, проверьте мой журнал! Ruby version 2.3.1, pg версия 0.18.4.

ответ

1

Функция rb_thread_select устарела, поскольку Ruby 1.9.3. Она была заменена функцией rb_thread_fd_select, как рубина 2.2:

VA VD VR 
old 193 22 rb_thread_select -> rb_thread_fd_select 

Однако pg драгоценный камень 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 

Эти директивы оцениваются во время компиляции, поэтому общий объект расширения С, должно быть составлено неправильно.

Макрос HAVE_RB_THREAD_FD_SELECT не должен определяться при создании pg_ext.so. Это могло произойти потому, что:

  • Он был построен против Рубина, который не имел rb_thread_fd_select
  • Он был настроен неправильно во время процесса сборки

Ссылки:

+0

'Он был построен против Рубина, который не имел rb_thread_fd_select': вы имели в виду, когда пакет установки, она указывала на плохой версии рубинового @Matheus Морейра –

+0

@? Albert.Qing, если вы сами установили самоцвет, и в это время он построил расширение, возможно, что система Ruby, построенная на сборке, не имела функции 'rb_thread_fd_select'. Так что, вероятно, это была не последняя версия; возможно, более старая система Ruby? –

+1

Вы решили мою загадку, я думаю, что рубин битнами может иметь проблемы, спасибо @Matheus Moreira –

 Смежные вопросы

  • Нет связанных вопросов^_^