見出し画像

mastodonおひとりさまサーバをv4.2にアップデートした話

自由気ままに、のびのびとやっているfediverse向けおひとりさまmastodonサーバ。

mastodonがv4.2.0から全文検索に正式対応したとのことで、そろそろアップデートしましょうかーとアップデート作業をおこないました。

いくつか引っかかった点があったので、どこかの誰かの助けになるかもと思いその過程を書き記しておきます。

v4.1.3 -> v4.1.9

私のサーバーはもともとv4.1.3で稼働していました
(アップデートさぼりがち……)

v4.2.0のリリースノートにはv4.1.9からのアップデートを前提に書かれていたので、まずはv4.1.9までのアップデートを実施。

ここは特に難しい点はなかったので詳細は省略します。
基本的にはサービスを停止して、gitから該当バージョンをチェックアウトして、bundle/yarnで依存パッケージのインストール、再起動です。

技術的に明るい人であれば間のバージョンを飛ばして一気にアップデートされるのかもしれませんが、私はチキンなので一バージョンずつアップデートしては動作を確認して丁寧に進めています。

v4.1.9 -> v4.2.0

本題のv4.2.0です。

チェックアウト

まずはチェックアウト……でエラーが出ました。


error: Your local changes to the following files would be overwritten by checkout:
        app/javascript/mastodon/features/compose/components/compose_form.js
        app/serializers/rest/instance_serializer.rb
        app/validators/status_length_validator.rb
Please commit your changes or stash them before you switch branches.
Aborting

作業時は「なんもファイル編集なんてしてないけどなー」なんて思ってたんですが、実は文字数制限を弄っていたことをアップデート後に文字制限が元に戻っていて気付きました。

めんどくさいとくに何もするつもりはないので素直に変更を破棄します。

git reset --hard @

これでチェックアウトできるようになりました。

Ruby 3.2.2インストール

これはリリースノート通りです。
「ruby-buildってなんだ?」「もしかしてrbenv installってバージョン指定できたりする?」とかあまりに初歩的なことを調べつつもインストール。

このあとv4.2.5にするときに「どうやって3.2.3インストールするんだろう?」とか悩んでいたのは内緒です。

git -C ~/.rbenv/plugins/ruby-build pull
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.2.2

bundle install

ここで詰まりました。フェッチの途中でエラー発生。

Your bundle is locked to json-canonicalization (0.3.2) from rubygems repository https://rubygems.org/ or installed
locally, but that version can no longer be found in that source. That means the author of json-canonicalization (0.3.2)
has removed it. You'll need to update your bundle to a version other than json-canonicalization (0.3.2) that hasn't been
removed in order to install.

まったくわからん。

いえ、英語は読めるし言いたいことはなんとなくわかるんですが、このbundleは私が何かできる範疇ではないのでは……?

と思いつつ、調べます。
困った時のstackoverflowさん。同じ事象の人を発見。

やりとりを意訳すると、どうもv4.2.0リリースの時に発覚した問題らしく、v4.2.3から解消されてるからv4.2.3に直接アップデートしたらいいよ~とのこと。

ほんとかなぁ?

記事の最後には「v4.2.5に直接でもいけるで」と書いてありましたが、チキンなのでまずはv4.2.3へのアップデートを実施しました。

v4.1.9 -> v4.2.3

大きな手順は変わりません。
チェックアウトしてbundle install。たしかに、このバージョンだとエラー無く通ります。試しにv4.2.1と2も試してみましたが同じエラーでした。

次にyarn install。こちらもwarningは出ますが問題なし。

続いてv4.2.0のリリースノートで指示があるアセットのプリコンパイル。
が、このプリコンパイルが通らず。

Compilation failed:
`isModuleDeclaration` has been deprecated, please migrate to `isImportOrExportDeclaration`
    at isModuleDeclaration (/home/mastodon/live/node_modules/babel-plugin-lodash/node_modules/@babel/types/lib/validators/generated/index.js:2740:35)
    at PluginPass.Program (/home/mastodon/live/node_modules/babel-plugin-lodash/lib/index.js:102:44)
Browserslist: caniuse-lite is outdated. Please run:
  npx update-browserslist-db@latest
  Why you should do it regularly: https://github.com/browserslist/update-db#readme

いや、わからん。

調べます。
見つけました。同じ現象の人です。

このディスカッションを読んでいて気付きます。
これ、どうやらエラーは二つあるらしく、片方の「`isModuleDeclaration` has been~」はただのwarningやから無視してええよん、とのこと(ほんとかなぁ?)。

なので、後半の「Browserslist: caniuse-lite is outdated.~」に対処。
この理由も調べましたが、今の私にはちょっと理解が難しかったのでここでは省略させてください。このあたりの説明が一番近いように思いました。

対処法としては、もともとのエラーに「npx update-browserslist-db@latestを実行せよ」と書かれているので、素直に実行します。
いろいろとログは出ましたが、

caniuse-lite has been successfully updated

とのことなので、とりあえずsuccessfullyなんでしょう!
再度プリコンパイルをしたところ問題なく通りました。

あとは pre-deploymentのデータベースマイグレーション、再起動。
この時点できちんと画面が表示されてほっと一安心。
post-deploymentのデータベースマイグレーションも実行して完了です。

この後、一応セキュリティアップデートとなっていたのでv4.2.5まで上げておきました。

まとめ

今回は大きく躓くことなくアップデートを終えられて良かったなと思いました。まる。

余談ですが、threadsのActivityPub接続であったりとか、今回の全文検索であったりとか、ちょくちょく盛り上がるテーマに対して半年遅れくらいで情報をキャッチすることが多いので、もう少しfediまわりの情報アンテナを張らないとなーと思っています。

おしまい。




この記事が気に入ったらサポートをしてみませんか?