環境
H/W : HP ENVY x360 Convertible 13-ar0xxx(CPU:Ryzen7 3700U Mem:16GB)
OS : Linux(Debian12 bookworm on WSL2)
Host OS : Windows11 Home 23H2
はじめに
インストールの記事は書いてるけど、そういやrbenvを使ったバージョンアップについて書いてないので投稿したいと思います。
参考URL
「gem update --system」と「gem update」の違い
LinuxでRuby 2.5.0 インストールメモ
【Ruby】インストール済みのGemを確認する方法
前提
過去記事のLinux Ruby3.3.1インストール完全に理解した(rbenv)の続きです。
インストールパスや各ディレクトリの所有者(グループ)設定、権限設定は前回の記事どおりの設定となっている前提となります。
Rubyのupdate
git pullでruby-buildを最新化する
$ ruby -v
ruby 3.3.2 (2024-05-30 revision e5a195edf6) [x86_64-linux]
$ cd "$(rbenv root)"/plugins/ruby-build
$ git pull
fatal: detected dubious ownership in repository at '/usr/local/lib/rbenv/plugins/ruby-build'
To add an exception for this directory, call:
git config --global --add safe.directory /usr/local/lib/rbenv/plugins/ruby-build
上記の様にgit pull
でエラーとなります。
これは該当ディレクトリの所有者がrootなのでたとえrubyグループで読み書き実行の権限があったとしてもlocalアカウントではgitのポリシーでpullが実行できないためです。
$ git config --global --add safe.directory /usr/local/lib/rbenv/plugins/ruby-build
$ git pull
error: cannot open '.git/FETCH_HEAD': Permission denied
エラーメッセージにあったgit config ~
を実行しましたが、今度は'Permission denied'エラーとなりました。
結局、root権限(sudo)でgit pull
を実行しました。
(以下訂正・追記)
.git配下を見たら所有者root、グループrootになっているファイルが複数ありました。
おそらく以前updateしたときにroot権限で作業したためです。
rbenvディレクトリ配下のグループ所有権をrubyに変更し、読み・書き・実行の権限を付与すればローカルアカウントで管理(updateなど)できるようになります。
$ cd /usr/local/lib/
$ ls
rbenv
$ sudo chgrp -R ruby rbenv
$ sudo chmod -R g+rwxX rbenv
$ ls -l
drwxrwxr-x 14 root ruby 4096 May 22 10:56 rbenv
気を取り直して、git pull
します。
$ cd "$(rbenv root)"/plugins/ruby-build
$ git pull
(略)
$ rbenv install --list
3.1.6
3.2.5
3.3.5
jruby-9.4.8.0
mruby-3.3.0
picoruby-3.0.0
truffleruby-24.0.2
truffleruby+graalvm-24.0.2
Only latest stable releases for each Ruby implementation are shown.
Use `rbenv install --list-all' to show all local versions.
3.3.5インストールとバージョン切替え
$ rbenv install -v 3.3.5
(略)
==> Installed ruby-3.3.5 to /usr/local/lib/rbenv/versions/3.3.5
$ rbenv versions
3.3.1
* 3.3.2 (set by /usr/local/lib/rbenv/version)
3.3.5
$ rbenv global 3.3.5
$ ruby -v
ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-linux]
Gemのupdate
gemコマンド(RubyGems)本体のupdateと各gemモジュールのupdateの二種類あります。
gemコマンド(RubyGems)本体のupdate
--system
オプションを付けるとgemコマンド本体のupdateになります。
今回は3.5.16から3.5.18へupdateしました。
$ gem -v
3.5.16
$ gem update --system
(略)
RubyGems system software updated
$ gem -v
3.5.18
Gemモジュールのupdate
オプションなしで全Gemモジュールのupdateを実行します。
$ gem update
Updating installed gems
(略)
ターゲットのGemのみupdateしたい場合はgem update [GEMNAME]
の様にGemの名前を指定します。
インストール済Gemとバージョン確認
$ gem list
*** LOCAL GEMS ***
abbrev (default: 0.1.2)
(略)
-d
オプションを付けると詳細な情報が表示されます。
おわりに
ちょっとしたことでもすぐに忘れるのですぐに見返せるようメモを作っておくと便利です。