LoadError - не может открыть общий объектный файл - файл присутствует, но он говорит, что такого файла нет
Руби придумывает LoadErrors
Я не понимаю. Он жалуется на открытие общего объектного файла, пока он присутствует.
irb(main):001:0> require 'openssl'
LoadError: libssl.so.1.0.0: cannot open shared object file: No such file or directory - /usr/lib/ruby/2.3.0/x86_64-linux/openssl.so
from /usr/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/lib/ruby/2.3.0/openssl.rb:13:in `<top (required)>'
from /usr/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
но ls /usr/lib/ruby/2.3.0/x86_64-linux/openssl.so
возвращает файл /usr/lib/ruby/2.3.0/x86_64-linux/openssl.so
Путь загрузки:
irb(main):001:0> pp $LOAD_PATH
["/usr/lib/ruby/site_ruby/2.3.0",
"/usr/lib/ruby/site_ruby/2.3.0/x86_64-linux",
"/usr/lib/ruby/site_ruby",
"/usr/lib/ruby/vendor_ruby/2.3.0",
"/usr/lib/ruby/vendor_ruby/2.3.0/x86_64-linux",
"/usr/lib/ruby/vendor_ruby",
"/usr/lib/ruby/2.3.0",
"/usr/lib/ruby/2.3.0/x86_64-linux"]
Другой пример, с rails
gem установлен, генерация нового проекта завершается неудачно LoadError
,
/usr/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:120:in `require': libcrypto.so.1.0.0: cannot open shared object file: No such file or directory - /usr/lib/ruby/2.3.0/x86_64-linux/digest/md5.so (LoadError)
И снова занимаюсь ls /usr/lib/ruby/2.3.0/x86_64-linux/digest/md5.so
показывает наличие файла.
моя рубиновая версия ruby 2.3.1p112
, Если вам интересно, uname -m
возвращается x86_64
,
Я должен пропустить что-то очевидное, я думаю. Любые всплывающие подсказки очень ценятся!
1 ответ
Благодаря комментарию Джорданма я смог решить проблему!
Проблема была связана с openssl
, ldd
печатает общие объектные зависимости и выявляет недостающие библиотеки.
ldd /usr/lib/ruby/2.3.0/x86_64-linux/openssl.so
...
libssl.so.1.0.0 => not found
libcrypto.so.1.0.0 => not found
...
После установки openssl-1.0
пакет, (пока openssl
пакет v1.1.0 был установлен), вывод той же команды выглядит лучше:
libssl.so.1.0.0 => /usr/lib/libssl.so.1.0.0 (0x00007faddac8f000)
libcrypto.so.1.0.0 => /usr/lib/libcrypto.so.1.0.0 (0x00007fadda814000)
и теперь я могу require 'openssl'
а также создание нового rails
проект.
Но, в конце концов, рубин не должен жаловаться на отсутствующие пакеты или должен openssl-1.0
быть хотя бы зависимостью rails
?