На недавно установленной Windows 7 Professional 64 Bit я установил Cygwin (64) и некоторые его пакеты, включая Ruby. Я также установил Ruby с помощью установщика Ruby, потому что он, вероятно, понадобится как для стандартных оболочек Windows, так и для Cygwin.
Теперь, когда я пытаюсь выполнить команду gem
такую как gem list
или gem install foo
, я получаю странную ошибку, которую не удалось устранить в течение последних нескольких часов поиска в Интернете.
$ which ruby
/usr/bin/ruby
$ which gem
/usr/bin/gem
$ ruby -v
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-cygwin]
$ gem -v
2.4.8
$ gem list
ERROR: Loading command: list (Fiddle::DLError)
can't load kernel32
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass
$ gem install sass
ERROR: Loading command: install (Fiddle::DLError)
can't load kernel32
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass
Однако с родной версией Windows, из Windows CMD, она работает без проблем. Однако я не могу использовать нативную Windows Ruby от Cygwin, потому что это дает мне ошибки, но в любом случае это не вопрос.
С Process Monitor я выяснил, что Ruby пытается открыть C:\cygwin64\bin\kernel32.dll
и терпит неудачу, потому что этого файла нет. Я попытался скопировать kernel32.dll
из C:\Windows\System32
и один из C:\Windows\SysWOW64
в эту папку bin
Cygwin и все еще получил ту же ошибку (кроме того, что он сказал, что не может загрузить kernel32.dll), хотя Process Monitor больше не показывает ошибку NAME NOT FOUND
.
Какая магия здесь происходит? Мне бы очень хотелось понять, что здесь не так. Я ценю любую помощь.