Cygwin上のrubyで共有ライブラリロードエラー
現象
ruby(2.3.3) 上 itamae を実行していて以下のエラーが発生するようになった。
$ itamae ssh ...
/c/Users/xxx/.rbenv/versions/2.3.3/lib/ruby/2.3.0/fiddle/import.rb:86:in `rescue in block in dlload': can't load user32 (Fiddle::DLError)
from /c/Users/xxx/.rbenv/versions/2.3.3/lib/ruby/2.3.0/fiddle/import.rb:83:in `block in dlload'
from /c/Users/xxx/.rbenv/versions/2.3.3/lib/ruby/2.3.0/fiddle
...
対応
回避策として、2つのファイルを修正した。
本来なら dlload の中身を直した方が良さそうだけど、取りあえず。
Ruby 2.4.0ではこの部分が修正されているので必要ないらしい(情報源)。
- ~/.rbenv/versions/2.3.3/lib/ruby/2.3.0/win32/resolv.rb
- ~/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/net-ssh-4.0.1/lib/net/ssh/authentication/pageant.rb
resolv.rb
前
~/.rbenv/versions/2.3.3/lib/ruby/2.3.0/win32/resolv.rb
module Kernel32
extend Importer
dlload "kernel32"
end
後
~/.rbenv/versions/2.3.3/lib/ruby/2.3.0/win32/resolv.rb
module Kernel32
extend Importer
dlload "kernel32.dll"
end
pageant.rb
前
~/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/net-ssh-4.0.1/lib/net/ssh/authentication/pageant.rb
dlload 'user32.dll'
dlload 'kernel32.dll'
dlload 'advapi32.dll'
...
dlload 'user32.dll','kernel32.dll', 'advapi32.dll'
後
~/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/net-ssh-4.0.1/lib/net/ssh/authentication/pageant.rb
dlload 'user32.dll'
dlload 'kernel32.dll'
dlload 'advapi32.dll'
...
dlload 'user32.dll','kernel32.dll', 'advapi32.dll'
参考
Author And Source
この問題について(Cygwin上のrubyで共有ライブラリロードエラー), 我々は、より多くの情報をここで見つけました https://qiita.com/mo12ino/items/a14babc8b32494cb8f3b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .