Open4

Mastodon v3.4.6 → v3.5.0の更新に失敗した経緯メモ

Kumasun MorinoKumasun Morino

環境

  • 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 動作環境

https://github.com/mastodon/mastodon/releases/tag/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

要件をすべて満たしているように見える。

Kumasun MorinoKumasun Morino

やったこと

データベースバックアップ

すでにルーチンワーク化しているが、データベースダンプを吐き出してファイルに保存する作業
問題なく完了

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 のバージョンと互換性がないから無理、とのこと

Kumasun MorinoKumasun Morino

試したこと

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 は対応してないと言い出した

Kumasun MorinoKumasun Morino

そして切り戻しへ

パッケージが入手できないことにはどうしようもないため
Mastodon v3.4.6の環境へ戻すこととした。

ベースの環境(Fedora Server 31)が古すぎるためだろうと推測される。

node.jsのソースを入手して独自にビルドすれば解決できそうな気もしなくもないが、一歩間違うと環境をめちゃくちゃにしてしまう可能性があるため、今回は見送りとした。

じゃあどうするの

新しいサーバを用意し、まるっと移植するのが手っ取り早いのではないかと考えている。

ただし、それをやるには綿密な計画を立てた上で集中して取り組む必要があるため、通常のアップデートのように片手間でできるようなタスクではない。

よって、当分の間アップデートについては見送ることとする。