Mastodon v3.4.6 → v3.5.0の更新に失敗した経緯メモ
環境
- Fedora Server 31
- Linux xxxxxxxxxx 5.8.18-100.fc31.x86_64 #1 SMP Mon Nov 2 20:32:55 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
- ConoHa VPS 2GB
- PostgreSQL 11.8
- Ruby 3.0.3p157 with jemalloc
- Redis 5.0.9
- node.js 12.21.0
- Mastodon v3.4.6
Mastodon v3.5.0 動作環境
- Ruby: 2.5 up to 3.1
- PostgreSQL: 9.5 or newer
- Elasticsearch (optional, for full-text search): 7.x
- Redis: 4 or newer
- Node: 12 or newer
要件をすべて満たしているように見える。
やったこと
データベースバックアップ
すでにルーチンワーク化しているが、データベースダンプを吐き出してファイルに保存する作業
問題なく完了
Rubyのバージョンアップ(v3.0.3)
元々 v2.6系だったような気がするが、v3.0.3にバージョンアップ
rbenvを使っているので、自動的にダウンロードからコンパイルまで行うことができた
Mastodon v3.5.0 の fetch
git fetch
からの git checkout v3.5.0
。
問題なく完了した
bundle install && yarn install
bundle install
については問題なく完了、yarn install
時に下記エラー表示で停止。
$ yarn install
yarn install v1.22.18
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
[1/6] Validating package.json...
[2/6] Resolving packages...
[3/6] Fetching packages...
error eslint-plugin-promise@6.0.0: The engine "node" is incompatible with this module. Expected version "^12.22.0 || ^14.17.0 || >=16.0.0". Got "12.21.0"
error Found incompatible module.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
eslint-plugin-promise
は、今導入されている node.js のバージョンと互換性がないから無理、とのこと
試したこと
node.js のバージョンアップ(v14.x)
node.js 公式サイトからリポジトリ導入し、インストールされているnode.jsをアンインストールしてインストール
$ curl -fsSL https://rpm.nodesource.com/setup_14.x | sudo bash -
$ sudo yum install nodejs
Node.js Packages for Fedora Linux 31 - x86_64 340 kB/s | 748 kB 00:02
Last metadata expiration check: 0:00:01 ago on Fri 01 Apr 2022 10:26:56 AM JST.
Package nodejs-2:12.21.0-1nodesource.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
$ sudo yum remove nodejs
$ sudo yum install -y nodejs
Last metadata expiration check: 0:00:20 ago on Fri 01 Apr 2022 10:26:56 AM JST.
(中略)
Installed:
nodejs-2:14.16.0-1nodesource.x86_64
Complete!
v14.16.0 が導入されたが、これもeslint-plugin-promise
の要件を満たさない。
(v14系の場合、v14.17.0以上が必要)
node.js のバージョンアップ(v13.x)
ならばということで、v13系を導入してみた
v13系はdnf
コマンドで一括導入できるらしいので試した
$ sudo yum remove nodejs
$ sudo dnf module install nodejs:13/development
Last metadata expiration check: 0:10:34 ago on Fri 01 Apr 2022 10:26:56 AM JST.
Dependencies resolved.
==============================================================================================================================================================================================
Package Architecture Version Repository Size
==============================================================================================================================================================================================
Installing group/module packages:
nodejs x86_64 1:13.14.0-1.module_f31+8852+09e47682 updates-modular 98 k
nodejs-devel x86_64 1:13.14.0-1.module_f31+8852+09e47682 updates-modular 134 k
npm x86_64 1:6.14.4-1.13.14.0.1.module_f31+8852+09e47682 updates-modular 3.4 M
Installing dependencies:
brotli-devel x86_64 1.0.9-3.fc31 updates 32 k
libuv x86_64 1:1.37.0-1.module_f31+8852+09e47682 updates-modular 148 k
libuv-devel x86_64 1:1.37.0-1.module_f31+8852+09e47682 updates-modular 29 k
nodejs-libs x86_64 1:13.14.0-1.module_f31+8852+09e47682 updates-modular 13 M
nodejs-packaging noarch 23-2.module_f31+8338+78dfa9f3 updates-modular 20 k
Installing weak dependencies:
nodejs-docs noarch 1:13.14.0-1.module_f31+8852+09e47682 updates-modular 5.4 M
nodejs-full-i18n x86_64 1:13.14.0-1.module_f31+8852+09e47682 updates-modular 7.7 M
Transaction Summary
==============================================================================================================================================================================================
Install 10 Packages
Total size: 30 M
Installed size: 145 M
(中略)
Installed:
brotli-devel-1.0.9-3.fc31.x86_64 libuv-1:1.37.0-1.module_f31+8852+09e47682.x86_64 libuv-devel-1:1.37.0-1.module_f31+8852+09e47682.x86_64
nodejs-1:13.14.0-1.module_f31+8852+09e47682.x86_64 nodejs-devel-1:13.14.0-1.module_f31+8852+09e47682.x86_64 nodejs-docs-1:13.14.0-1.module_f31+8852+09e47682.noarch
nodejs-full-i18n-1:13.14.0-1.module_f31+8852+09e47682.x86_64 nodejs-libs-1:13.14.0-1.module_f31+8852+09e47682.x86_64 nodejs-packaging-23-2.module_f31+8338+78dfa9f3.noarch
npm-1:6.14.4-1.13.14.0.1.module_f31+8852+09e47682.x86_64
Complete!
これならええやろ!!!
$ yarn install
yarn install v1.22.18
[1/6] Validating package.json...
[2/6] Resolving packages...
[3/6] Fetching packages...
error icss-utils@5.1.0: The engine "node" is incompatible with this module. Expected version "^10 || ^12 || >= 14". Got "13.14.0"
error Found incompatible module.
_(┐「ε:)_ ズコー
今度は icss-utils
が node v13 は対応してないと言い出した
そして切り戻しへ
パッケージが入手できないことにはどうしようもないため
Mastodon v3.4.6の環境へ戻すこととした。
ベースの環境(Fedora Server 31)が古すぎるためだろうと推測される。
node.jsのソースを入手して独自にビルドすれば解決できそうな気もしなくもないが、一歩間違うと環境をめちゃくちゃにしてしまう可能性があるため、今回は見送りとした。
じゃあどうするの
新しいサーバを用意し、まるっと移植するのが手っ取り早いのではないかと考えている。
ただし、それをやるには綿密な計画を立てた上で集中して取り組む必要があるため、通常のアップデートのように片手間でできるようなタスクではない。
よって、当分の間アップデートについては見送ることとする。