win32/clipboard のインストールにてこずるの巻
ああもう、10分くらいで終わる見込みでやりかけた仕事が3時間もかかっちゃったじゃん!
(1) gemから直接インストール
以前はこれでOKだったのだけど・・・
gem install win32-clipboard ---- Building native extensions. This could take a while... ERROR: Error installing win32-clipboard: ERROR: Failed to build gem native extension. C:/Ruby/bin/ruby.exe extconf.rb install -r win32-clipboard can't find header files for ruby. Gem files will remain installed in C:/Ruby/lib/ruby/gems/1.8/gems/win32-api-1.0.5 for inspection. Results logged to C:/Ruby/lib/ruby/gems/1.8/gems/win32-api-1.0.5 /ext/gem_make.out ----
ビルド環境がないので、失敗する。なんでwin32前提なくせにバイナリ配布してないんだ・・・まあいいや、コンパイル済みのバイナリgemを取ってくりゃいいんだろ。
(2) sourceforgeから、win32-clipboardをインストール
・http://rubyforge.org/frs/?group_id=85
・http://rubyforge.org/frs/download.php/23224/win32-clipboard-0.4.3.gem
gem install win32-clipboard-0.4.3.gem ---- Successfully installed win32-api-1.0.5-unknown Successfully installed windows-api-0.2.0 Successfully installed windows-pr-0.7.3 Successfully installed win32-clipboard-0.4.3 4 gems installed Installing ri documentation for win32-api-1.0.5-unknown... Installing ri documentation for windows-api-0.2.0... Installing ri documentation for windows-pr-0.7.3... Installing ri documentation for win32-clipboard-0.4.3... Installing RDoc documentation for win32-api-1.0.5-unknown... Installing RDoc documentation for windows-api-0.2.0... Installing RDoc documentation for windows-pr-0.7.3... Installing RDoc documentation for win32-clipboard-0.4.3... ----
ところが、依存関係から自動インストールされるwin32-apiがうまく読み込めない。
irb -r rubygems -r win32/clipboard ---- C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- win32/api (LoadError) from C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require' from C:/Ruby/lib/ruby/gems/1.8/gems/windows-api-0.2.0 /lib/windows/api.rb:1 from C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require' from C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require' from C:/Ruby/lib/ruby/gems/1.8/gems/windows-pr-0.7.3 /lib/windows/clipboard.rb:1 from C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require' from C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require' from C:/Ruby/lib/ruby/gems/1.8/gems/win32-clipboard-0.4.3 /lib/win32/clipboard.rb:1 from C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in `gem_original_require' from C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in `require' from C:/Ruby/lib/ruby/1.8/irb/init.rb:252:in `load_modules' from C:/Ruby/lib/ruby/1.8/irb/init.rb:250:in `each' from C:/Ruby/lib/ruby/1.8/irb/init.rb:250:in `load_modules' from C:/Ruby/lib/ruby/1.8/irb/init.rb:21:in `setup' from C:/Ruby/lib/ruby/1.8/irb.rb:54:in `start' from C:/Ruby/bin/irb.bat:21 ----
(3) win32-apiの手動インストール
何なんだ・・・調べてみるとgemがwin32/api.soを見つけられないらしい。フォルダ名が-unknownで終わってるのが気になるがよくわからないので、gems\win32-api-1.0.5-unknown\lib にある win32/api.so を site-ruby/1.8/i386-msvcrt にコピーする。
irb -r rubygems -r win32/clipboard ---- C:/Ruby/lib/ruby/gems/1.8/gems/win32-clipboard-0.4.3 /lib/win32/clipboard.rb:25:NameError: uninitialized constant Win32::Clipboard::Win32API ----
お、いいところまでいった。あと、Win32APIが必要らしい。
irb -r rubygems -r Win32API -r win32/clipboard ---- irb(main):001:0> ----
やっと使えるようになった!
(4) 試行錯誤中にわかったこと
依存先のgemが壊れていた場合、依存もとのgemspecファイルを編集して、依存指定を外すとよい。
そもそもそういうgemを配布しないで欲しいわけだが・・・。