Q. 久しぶりにメンテナンス記事を書いたな? A. Ruby 3.2.3アップデート時のメモを紛失して書けなかったから ということで、備忘録として残しておきます。 ## 大まかな手順 1. Mastodonユーザーに移動 2. 最新のMastodonバージョンにcheakout 3. インストールできるバージョンを確認する 4. (必要に応じて)rbenv周辺のアップデート 5. Rubyのインストール 6. 環境変数に登録 ## 詳細な手順 ### 1. Mastodonユーザーに移動 ``` $ sudo su - mastodon ``` RubyはMastodon用のユーザーアカウントでインストールしています。([公式インストールマニュアル](https://docs.joinmastodon.org/admin/install/#installing-ruby)をよく見るとわかる)そのため、最初にMastodonユーザーに切り替えます。 ### 2.最新のMastodonバージョンにcheakout ``` $ git fetch --tags $ git checkout <タグ名> ``` マイグレーションは行わなくてOK。Rubyのバージョンの関係でエラーになります。 ### 3. インストールできるバージョンを確認する 次にRubyのバージョン管理ツール`rbenv`を使って、インストールしているRubyとバージョンアップしたいRubyを調べます。 ``` $ rbenv versions $ rbenv install --list ``` `rbenv versions`は今インストールしているRubyのバージョン、`rbenv install --list`はインストールできるRubyのバージョンを調べます。なお、`rbenv install --list`を行った際に、最新のRubyのバージョンが出ないときがあります。その時は手順4を経由してください。(`rbenv install --list`で最新バージョンがある場合、手順5に移動してOKです) ### 4. rbenv周辺のアップデート 必要に応じて`rbenv`周辺のアップデートを行います。`rbenv`自体と、rbenvのプラグイン「`ruby-build`」のアップデートの2種類あるので注意。(だいたい`ruby-build`だけで済みますが) #### rbenvのアップデート ``` $ cd ~/.rbenv $ git pull ``` `.rbenv`フォルダーに移動して、pullすればOKです。 #### ruby-buildのアップデート ``` $ cd ~/.rbenv/plugins/ruby-build $ git pull ``` `.rbenv/plugins/ruby-build`フォルダーに移動。同じくpullしてアップデートを行います。 アップデートが終わったらホームディレクトリに戻り、再度`rbenv install --list`を行います。最新バージョンのRubyが一覧に出てきます。 ### 5. Rubyのインストール 最新バージョンのRubyが一覧に載っていることを確認したら、最新のRubyのインストールを行います。 ``` $ RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install <インストールしたいバージョン> ``` この際注意したいのが、`RUBY_CONFIGURE_OPTS`の設定を入れた状態でインストールを行うこと。忘れるとMastodonのビルドができなかったはず。(3.2.3インストール時にやらかした) インストールが終わったら、最新バージョンを使う設定に切り替えます。 ``` $ rbenv global <インストールしたバージョン> ``` これでRubyのインストールができたので、Mastodonのマイグレーションに入りましょう。お疲れさまでした。 ## おまけ ### 不要になったRubyのアンインストール ``` $ rbenv uninstall <不要になったRubyのバージョン> ``` ## 関連記事 - [[WSL2を使ってローカルMastodon鯖を立てる]] メンテが不安なら、一度ローカルに鯖を立てて練習するといいかも。 ## 参考サイト - [Installing from source - Mastodon documentation](https://docs.joinmastodon.org/admin/install/) - [rbenv/ruby-buildのアップデート - Qiita](https://qiita.com/jhanyu/items/38671f7e9f03b77670c0)