ubuntuでsnapベースのrubyをインストールしてはまった
TL;DR
ubuntuでsnapベースのrubyをインストールしたけど、スクリプトの実行すらできない状況だった。
他経由(aptなど)でインストールしたrubyが悪さしてる可能性があるので、消すなりしましょう。
起きた現象
snapベースでインストールしたrubyでスクリプトを実行しようとすると下記のようなエラーが出て起動できなかった。
/snap/ruby/260/lib/ruby/3.1.0/rubygems.rb:1334:in `rescue in <top (required)>': undefined method `rubyforge_project=' for class `Gem::Specification' (NameError)
Loading the rubygems/defaults/operating_system.rb file caused an error. This file is owned by your OS, not by rubygems upstream. Please find out which OS package this file belongs to and follow the guidelines from your OS to report the problem and ask for help.
from /snap/ruby/260/lib/ruby/3.1.0/rubygems.rb:1321:in `<top (required)>'
from <internal:gem_prelude>:2:in `require'
from <internal:gem_prelude>:2:in `<internal:gem_prelude>'
/usr/lib/ruby/vendor_ruby/rubygems/defaults/operating_system.rb:50:in `<class:Specification>': undefined method `rubyforge_project=' for class `Gem::Specification' (NameError)
from /usr/lib/ruby/vendor_ruby/rubygems/defaults/operating_system.rb:49:in `<top (required)>'
from /snap/ruby/260/lib/ruby/3.1.0/rubygems.rb:1325:in `require'
from /snap/ruby/260/lib/ruby/3.1.0/rubygems.rb:1325:in `<top (required)>'
from <internal:gem_prelude>:2:in `require'
from <internal:gem_prelude>:2:in `<internal:gem_prelude>'
いろいろめんどくさいので、anyenv/rbenvで逃げてたところ、 @hsbt さんから
というアドバイスをもらったので、試したらうまくいった。
aptベースでインストールされたruby関連パッケージの探し方
下記コマンドを実行したらrubyはなかったけど、いくつかruby関連のパッケージがあった。
% apt list --installed |grep ruby
ruby-net-telnet/focal,now 0.1.1-2 all [installed,auto-removable]
ruby-power-assert/focal,now 1.1.7-1 all [installed,auto-removable]
ruby-test-unit/focal,now 3.3.5-1 all [installed,auto-removable]
ruby-xmlrpc/focal,now 0.3.0-2 all [installed,auto-removable]
rubygems-integration/focal,now 1.16 all [installed,auto-removable]
aptベースのパッケージのアンインストール方法
% sudo apt remove パッケージ名
おまけ
snapとは
snapはUbuntuのCanonical社が開発しているパッケージシステムで、Dockerベースでパッケージ構成することで、ディストリビューションの依存関係を少なくできるというのがウリ(だけど今回ハマった…)
rbenvとは
rbenvはrubyのバージョン管理システムで、複数バージョンのrubyを切り替えることができる。
anyenvとは
XXenvをさらにまとめたもので、下記のようなXXenvに対応している
% anyenv install -l
Renv
crenv
denv
erlenv
exenv
goenv
hsenv
jenv
jlenv
luaenv
nodenv
phpenv
plenv
pyenv
rbenv
sbtenv
scalaenv
swiftenv
tfenv
現場からは以上です。それではまたー。
Author And Source
この問題について(ubuntuでsnapベースのrubyをインストールしてはまった), 我々は、より多くの情報をここで見つけました https://zenn.dev/yamaz/articles/b82b09000089a5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol