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?

Другие вопросы по тегам