cygwinでgem updateに失敗する(1)
こんばんは。
最底辺です。
久々にIT関係記事です。
rubyでも勉強してみようかとcygwinにruby入れたんですが、
なんかgemってやつのupdateが上手くいかないようです。
(なんでcygwinに入れたってツッコミはなしで。。。)
$ gem update ERROR: While executing gem ... (ArgumentError) invalid byte sequence in UTF-8
う~ん。これは、困った。とりあえず、ググるか。
http://chiranoura.nobody.jp/articles/2014-10-06_01_fix_rubygem/
この辺りの情報かな?
なんか、win32\registry.rbとかいうのが怪しいらしい。
という言うことで、リンク先の更にリンクにあった以下を参考に修正してみました。
$ diff -u registry.rb 'C:\cygwin64\usr\share\ruby\2.0.0\win32\registry.rb' --- registry.rb 2014-09-04 20:54:39.138646900 +0200 +++ "C:\\cygwin64\\usr\\share\\ruby\\2.0.0\\win32\\registry.rb" 2014-09-04 20:54:44.109928700 +0200 @@ -62,6 +62,9 @@ For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/predefined_keys.asp] article. =end rdoc + WCHAR = Encoding::UTF_16LE + WCHAR_SPACE = "\0".encode(WCHAR).freeze + LOCALE = Encoding.find(Encoding.locale_charmap) class Registry @@ -164,12 +167,12 @@ extend Fiddle::Importer dlload "kernel32.dll" end - FormatMessageA = Kernel32.extern "int FormatMessageA(int, void *, int, int, void *, int, void *)", :stdcall + FormatMessageW = Kernel32.extern "int FormatMessageW(int, void *, int, int, void *, int, void *)", :stdcall def initialize(code) @code = code - msg = "\0".force_encoding(Encoding::ASCII_8BIT) * 1024 - len = FormatMessageA.call(0x1200, 0, code, 0, msg, 1024, 0) - msg = msg[0, len].force_encoding(Encoding.find(Encoding.locale_charmap)) + msg = WCHAR_SPACE * 1024 + len = FormatMessageW.call(0x1200, 0, code, 0, msg, 1024, 0) + msg = msg[0, len].encode(LOCALE) super msg.tr("\r", '').chomp end attr_reader :code
実は、ここまで約2時間!! さすが最底辺。
$ gem update ... Building native extensions. This could take a while... ERROR: Error installing json: ERROR: Failed to build gem native extension. /usr/bin/ruby.exe -r ./siteconf20150515-1396-8b5m10.rb extconf.rb creating Makefile make "DESTDIR=" clean rm -f rm -f generator.so *.o *.bak mkmf.log .*.time make "DESTDIR=" gcc -I. -I/usr/include/ruby-2.0.0 -I/usr/include/ruby-2.0.0/ruby/backward -I/usr/include/ruby-2.0.0 -I. -DJSON_GENERATOR -ggdb -O2 -pipe -Wimplicit-function-declaration -o generator.o -c generator.c rm -f generator.so gcc -shared -o generator.so generator.o -L. -L/usr/lib -L. -fstack-protector -Wl,--export-all-symbols -Wl,--enable-auto-image-base,--enable-auto-import -lruby200 -lpthread -lrt -ldl -lcrypt /usr/lib/gcc/x86_64-pc-cygwin/4.8.3/../../../../x86_64-pc-cygwin/bin/ld: -lcrypt が見つかりません collect2: エラー: ld はステータス 1 で終了しました
お、さっきのエラーはなくなったようだけど、なんかまだ怪しいな!!(続く。。。)
ディスカッション
コメント一覧
まだ、コメントがありません