如何解决Ruby ocra LoadError 异常 - net/ssh
所以我正在尝试使用 ocra 从我的 ruby 脚本构建一个独立的 .exe:
#test.rb
require "rubygems"
require "net/ssh"
$hostname = "1.1.1.1"
$username = "root"
$password = "example"
Net::SSH.start($hostname,$username,password: $password,non_interactive: true) do |ssh|
ssh.exec!("exit")
end
puts "Successful!"
当我尝试使用命令 ocra --dll ruby_builtin_dlls\libssp-0.dll --console --no-autoload --add-all-core test.rb
使用 ocra 构建可执行文件时,我得到以下输出:
=== Loading script to check dependencies
Successful!
=== Detected gem did_you_mean-1.4.0 (loaded,files)
=== 0 files,0 bytes
=== Detected gem ocra-1.3.11 (loaded,files)
=== 5 files,271800 bytes
=== Detected gem uri-0.10.0 (loaded,0 bytes
=== Detected gem net-ssh-6.1.0 (loaded,files)
=== 83 files,384755 bytes
=== Detected gem logger-1.4.2 (loaded,0 bytes
=== Detected gem etc-1.1.0 (loaded,0 bytes
=== Detected gem ipaddr-1.2.2 (loaded,0 bytes
=== Detected gem openssl-2.1.2 (loaded,0 bytes
=== Detected gem stringio-0.1.0 (loaded,0 bytes
=== Detected gem strscan-1.0.3 (loaded,0 bytes
=== Detected gem delegate-0.1.0 (loaded,0 bytes
=== Detected gem zlib-1.1.0 (loaded,0 bytes
=== Detected gem io-console-0.5.6 (loaded,0 bytes
=== Detected gem fiddle-1.0.0 (loaded,0 bytes
=== Including 61 encoding support files (3642880 bytes,use --no-enc to exclude)
=== Will include all ruby core libraries
=== Building test.exe
=== Adding user-supplied source files
=== Adding ruby executable ruby.exe
=== Adding detected DLL C:/Users/UAC7FE/Ruby27-x64/bin/ruby_builtin_dlls/libgmp-10.dll
=== Adding detected DLL C:/Users/UAC7FE/Ruby27-x64/bin/ruby_builtin_dlls/libffi-7.dll
=== Adding detected DLL C:/Users/UAC7FE/Ruby27-x64/bin/ruby_builtin_dlls/ZLIB1.dll
=== Adding external manifest C:/Users/UAC7FE/Ruby27-x64/bin/ruby_builtin_dlls/ruby_builtin_dlls.manifest
=== Adding supplied DLL ruby_builtin_dlls\libssp-0.dll
=== Adding library files
=== Compressing 24627069 bytes
LZMA 19.00 (x86) : Igor Pavlov : Public domain : 2019-02-21
Input size: 24627069 (23 MiB)
Output size: 4498148 (4 MiB)
=== Finished building test.exe (4548856 bytes)
Ocra 告诉我可执行文件已成功创建,但是当我尝试执行它时,我得到以下输出:
Traceback (most recent call last):
2: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/src/test.rb:2:in `<main>'
1: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require': cannot load such file -- net/ssh (LoadError)
21: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/src/test.rb:2:in `<main>'
20: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:156:in `require'
19: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:168:in `rescue in require'
18: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:168:in `require'
17: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/gems/2.7.0/gems/net-ssh-6.1.0/lib/net/ssh.rb:12:in `<top (required)>'
16: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
15: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
14: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/gems/2.7.0/gems/net-ssh-6.1.0/lib/net/ssh/transport/session.rb:6:in `<top (required)>'
13: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
12: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
11: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/gems/2.7.0/gems/net-ssh-6.1.0/lib/net/ssh/transport/algorithms.rb:1:in `<top (required)>'
10: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
9: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
8: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/gems/2.7.0/gems/net-ssh-6.1.0/lib/net/ssh/buffer.rb:1:in `<top (required)>'
7: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
6: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
5: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/gems/2.7.0/gems/net-ssh-6.1.0/lib/net/ssh/transport/openssl.rb:1:in `<top (required)>'
4: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
3: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
2: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/openssl.rb:13:in `<top (required)>'
1: from C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require'
C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:92:in `require': 126: The specified module Could not be found. - C:/Users/UAC7FE/AppData/Local/Temp/ocrEF8E.tmp/lib/ruby/2.7.0/x64-mingw32/openssl.so (LoadError)
我很困惑,因为我无法确定问题所在。 好像不能加载net-ssh和openssl.so(?),但是为什么呢?
有谁知道我做错了什么?提前致谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。