いけむランド

はてダからやってきました

rubygems.cygport を読み解く

ruby.cygport を読み解くだけだと、よくわからないところがあったため rubygems.cygport も読み解いてた。

cygwin.com

ruby.cygport でダミールートにインストールすると、gem 群が /usr/share/ruby/3.2/gems/にインストールされる。

しかし cygwin のパッケージルール (現時点で公式から配布されている ruby-2.6.4-1) では /usr/share/gems に入ってる。

どうして? と思っていたら rubygem.cygport の追加ファイルの operating_system.rb がいい感じにしてくれるようだった。

operating_system.rb の中身を見ると、:gem_dir => File.join(path, RbConfig::CONFIG['datadir'].split(File::SEPARATOR).last, 'gems') あたりで上記のパスになっているっぽい。

cygwin.com

ここまで調べて、もしかして rubygems を先にアップデート (とインストール) しないといけないのでは? と思った。

ruby をパッケージにする時に同梱の gem を使うけど、ダミールートにインストールする時に削除するため、そのあとの cygport 側の処理の一部 (pkg_info) が動かないことがわかっていて、そこらへんを上手く動かすにもとりあえずは rubygems を何とかした方が良さそうというのが今の所の見解。

`RubyGems' were not loaded.
-e:1:in `<main>': undefined method `default_dirs' for Gem:Module (NoMethodError)

print Gem.default_dirs[:system][:gem_dir]
         ^^^^^^^^^^^^^

というわけで rubygem を最新にする ITA を投げた。

www.mail-archive.com