Ruby 2.7.0 в termux - FFI: NotFoundError - PullRequest
       185

Ruby 2.7.0 в termux - FFI: NotFoundError

1 голос
/ 16 февраля 2020

Мой вопрос касается использования Ruby 2.7.0 (построено через rbenv) на termux: -

Я вижу: -

FFI::NotFoundError: Function 'getdtablesize' not found in [libc.so] при попытке запустить rake, я искал в Интернете, но пока не смог найти много об этой ошибке.

Трассировка стека: -

FFI::NotFoundError: Function 'getdtablesize' not found in [libc.so]
/data/data/com.termux/files/home/Projects/myapp/.bundle/ruby/2.7.0/gems/ffi-1.11.3/lib/ffi/library.rb:273:in `attach_function'
/data/data/com.termux/files/home/Projects/myapp/.bundle/ruby/2.7.0/gems/ethon-0.12.0/lib/ethon/libc.rb:16:in `<module:Libc>'
/data/data/com.termux/files/home/Projects/myapp/.bundle/ruby/2.7.0/gems/ethon-0.12.0/lib/ethon/libc.rb:6:in `<module:Ethon>'
/data/data/com.termux/files/home/Projects/myapp/.bundle/ruby/2.7.0/gems/ethon-0.12.0/lib/ethon/libc.rb:1:in `<main>'
/data/data/com.termux/files/home/Projects/myapp/.bundle/ruby/2.7.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
/data/data/com.termux/files/home/Projects/myapp/.bundle/ruby/2.7.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
/data/data/com.termux/files/home/Projects/myapp/.bundle/ruby/2.7.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'```

1 Ответ

1 голос
/ 17 февраля 2020

Кажется, что функция getdtablesize (которая используется гемом ethon) была удалена из lib c более поздних Android дистрибутивов, по-видимому, после того, как устарела в течение некоторого времени.

Таким образом, чтобы использовать драгоценный камень ethon в вашем дистрибутиве Android, вам необходимо либо:

  • настроить гем, чтобы он больше не использовал функцию getdtablesize, либо
  • используйте другую библиотеку c для вашего проекта, которая все еще предоставляет функцию, например lib c проекта GNU
...