2023/10/16(月) [n年前の日記]
#3 [ruby] gemの表示が妙なことになってしまった
Windows10 x64 22H2 + Ruby 2.3.3 p222 i386-mingw32 (RubyInstaller) で動作確認していたら、gem の表示がおかしいことに気づいた。
gem -v でバージョンを確認できるらしいのだけど…。
Ruby 2.3.3 + gem 3.3.26 だとこんなことになってしまう…。ちなみに、gem 3.3.19 もこんな感じ。
アレ? C: と D: が混在してる。なんだコレ。元々Cドライブに入っていたものをDドライブに移動して、Cドライブにはシンボリックリンクを置いたのだけど、そのせいだろうか…。
それはともかく、gem (rubygems) を更新するには、2つ方法があるようで。
zip の入手先は以下。現行版のzipのURLから類推してみた。
_RubyGemsをダウンロード | RubyGems.org | コミュニティのgemホスティングサービス
_https://rubygems.org/rubygems/rubygems-3.2.25.zip
_https://rubygems.org/rubygems/rubygems-3.2.26.zip
_https://rubygems.org/rubygems/rubygems-3.2.27.zip
_https://rubygems.org/rubygems/rubygems-3.2.28.zip
_https://rubygems.org/rubygems/rubygems-3.2.29.zip
_https://rubygems.org/rubygems/rubygems-3.2.30.zip
_https://rubygems.org/rubygems/rubygems-3.2.33.zip
_https://rubygems.org/rubygems/rubygems-3.2.34.zip
_https://rubygems.org/rubygems/rubygems-3.3.19.zip
_https://rubygems.org/rubygems/rubygems-3.3.26.zip
また、以下の記事によると、3.1.x は問題があるらしいので、3.2.0以降にしておかないといけない模様。
_業務の中で出会った default gem のアップグレードによる CVE 対応と rubygems 3.2.0 未満の不具合の話 - STORES Product Blog
とりあえず色々なバージョンを試してみたけど、gem 3.2.26 が一番メッセージ表示が少なくて済むようだなと…。
gem -v でバージョンを確認できるらしいのだけど…。
> gem -v D:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:11: warning: already initialized constant Gem::VERSION C:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:11: warning: previous definition of VERSION was here D:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:115: warning: already initialized constant Gem::RUBYGEMS_DIR C:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:115: warning: previous definition of RUBYGEMS_DIR was here D:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:120: warning: already initialized constant Gem::UNTAINT C:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:120: warning: previous definition of UNTAINT was here D:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:123: warning: already initialized constant Gem::KERNEL_WARN_IGNORES_INTERNAL_ENTRIES C:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:123: warning: previous definition of KERNEL_WARN_IGNORES_INTERNAL_ENTRIES was here D:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:129: warning: already initialized constant Gem::WIN_PATTERNS C:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:129: warning: previous definition of WIN_PATTERNS was here D:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:138: warning: already initialized constant Gem::GEM_DEP_FILES C:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:138: warning: previous definition of GEM_DEP_FILES was here D:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:148: warning: already initialized constant Gem::REPOSITORY_SUBDIRECTORIES C:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:148: warning: previous definition of REPOSITORY_SUBDIRECTORIES was here D:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:161: warning: already initialized constant Gem::REPOSITORY_DEFAULT_GEM_SUBDIRECTORIES C:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:161: warning: previous definition of REPOSITORY_DEFAULT_GEM_SUBDIRECTORIES was here D:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:171: warning: already initialized constant Gem::LOADED_SPECS_MUTEX C:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:171: warning: previous definition of LOADED_SPECS_MUTEX was here D:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:1294: warning: already initialized constant Gem::MARSHAL_SPEC_DIR C:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems.rb:1294: warning: previous definition of MARSHAL_SPEC_DIR was here 3.3.26
Ruby 2.3.3 + gem 3.3.26 だとこんなことになってしまう…。ちなみに、gem 3.3.19 もこんな感じ。
アレ? C: と D: が混在してる。なんだコレ。元々Cドライブに入っていたものをDドライブに移動して、Cドライブにはシンボリックリンクを置いたのだけど、そのせいだろうか…。
それはともかく、gem (rubygems) を更新するには、2つ方法があるようで。
- zip をDLして、解凍して、中に入って ruby setup.rb を実行。
- gem update --system 3.2.25 とバージョンを指定して更新。
zip の入手先は以下。現行版のzipのURLから類推してみた。
_RubyGemsをダウンロード | RubyGems.org | コミュニティのgemホスティングサービス
_https://rubygems.org/rubygems/rubygems-3.2.25.zip
_https://rubygems.org/rubygems/rubygems-3.2.26.zip
_https://rubygems.org/rubygems/rubygems-3.2.27.zip
_https://rubygems.org/rubygems/rubygems-3.2.28.zip
_https://rubygems.org/rubygems/rubygems-3.2.29.zip
_https://rubygems.org/rubygems/rubygems-3.2.30.zip
_https://rubygems.org/rubygems/rubygems-3.2.33.zip
_https://rubygems.org/rubygems/rubygems-3.2.34.zip
_https://rubygems.org/rubygems/rubygems-3.3.19.zip
_https://rubygems.org/rubygems/rubygems-3.3.26.zip
また、以下の記事によると、3.1.x は問題があるらしいので、3.2.0以降にしておかないといけない模様。
_業務の中で出会った default gem のアップグレードによる CVE 対応と rubygems 3.2.0 未満の不具合の話 - STORES Product Blog
とりあえず色々なバージョンを試してみたけど、gem 3.2.26 が一番メッセージ表示が少なくて済むようだなと…。
> gem -v D:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems/user_interaction.rb:546: warning: already initialized constant Gem::StreamUI::ThreadedDownloadReporter::MUTEX C:/Ruby/Ruby23-x86/lib/ruby/site_ruby/2.3.0/rubygems/user_interaction.rb:546: warning: previous definition of MUTEX was here 3.2.26
◎ シンボリックリンクがマズいっぽい :
Rubyのバージョンを切り替えられるツール、pik で、C:\Ruby\Ruby23-x86\bin を登録していたけど、実際にRuby関連ファイル群が入っている D:\Ruby\Ruby23-x86\bin を登録し直してみた。これなら変なメッセージが出てこないな…。
とりあえず、pik や uru の設定ファイルを書き換えて、C:/ や C:\\ を D:/ や D:\\ にしておこう…。
pik や uru の設定ファイルの場所は以下。
とりあえず、pik や uru の設定ファイルを書き換えて、C:/ や C:\\ を D:/ や D:\\ にしておこう…。
pik や uru の設定ファイルの場所は以下。
C:\Users\(USERNAME)\.pik\config.yml C:\Users\(USERNAME)\.uru\rubies.json
[ ツッコむ ]
以上です。