にせねこメモ

はてなダイアリーがUTF-8じゃないので移ってきました。

Pleroma 2.4.5→2.5.0の更新

概要

Pleromaの2.5.0がリリースされていたので更新した。
更新方法は次の記事に書かれていたので、それに従ったが、Elixirの更新が必要になったのでそこでつまづいた。

環境

Ubuntu 20.04 LTS
Pleroma 2.4.5 (ソースからインストール)

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

sudo systemctl stop pleroma
sudo -Hu postgres pg_dump -d pleroma -v --format=custom -f /home/nixeneko/pleroma_dev.20221225.pgdump

pleromaはデータベースの名前、/home/nixeneko/pleroma_dev.20221225.pgdumpは出力先ファイルの指定

Pleromaをv2.5.0へ更新

ソースをv2.5.0に更新する。

cd /opt/pleroma
sudo -Hu pleroma git pull
sudo -Hu pleroma git checkout v2.5.0

ここで、コンパイルに進もうと

sudo -Hu pleroma MIX_ENV=prod mix deps.get

とやってみたが、次のエラーがでた。

** (Mix) You're trying to run :pleroma on Elixir v1.9.1 but it has declared in its mix.exs file it supports only Elixir ~> 1.11

つまり、Elixirのバージョンが1.11以上でないといけないということだった。

Elixirの更新

Ubuntu 20.04 LTSで入るElixirのバージョンは1.9.1だが、Pleroma 2.5.0では1.11以上が必要らしい。
というわけで、Elixirのバージョンを上げる。

面倒なのでErlang Solutionsのリポジトリを使うことにした。

wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb
sudo dpkg -i erlang-solutions_2.0_all.deb
sudo apt update
sudo apt install erlang
sudo apt upgrade

Pleromaのコンパイル

ここでPleromaをコンパイルするのだが、ここでつまづいた。

まず依存するモジュールを取ってくるところで…

cd /opt/pleroma
sudo -Hu pleroma MIX_ENV=prod mix deps.get

次のエラーが出た。

Could not start Hex. Try fetching a new version with "mix local.hex" or uninstalling it with "mix archive.uninstall hex.ez"

mixが古いとのことなので、次のように実行した。

sudo -Hu pleroma MIX_ENV=prod mix local.hex

しかし、コンパイルしようとして、

sudo -Hu pleroma MIX_ENV=prod mix deps.get
sudo -Hu pleroma MIX_ENV=prod mix compile

としたところ、

** (Mix) Could not compile dependency :eblurhash, "/var/lib/pleroma/.mix/rebar3 bare compile --paths /opt/pleroma/_build/prod/lib/*/ebin" command failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile eblurhash", update it with "mix deps.update eblurhash" or clean it with "mix deps.clean eblurhash"

と出てeblurhashコンパイルできないということだった。

ここでしばらく途方に暮れていたのだが、救いの手はAkkomaが差しのべてくれた*1

このページのCompilation Troubleshootingにおいて、

If you ever encounter compilation issues during the updating of Akkoma, you can try these commands and see if they fix things:

  • mix deps.clean --all
  • mix local.rebar
  • mix local.hex
  • rm -r _build
https://akkoma.dev/sfr/akkoma

とするとよいとのこと。つまり、rebarを更新するのを忘れていたということになると思う。

というわけで、書かれている通りに

cd /opt/pleroma
sudo -Hu pleroma MIX_ENV=prod mix deps.clean --all
sudo -Hu pleroma MIX_ENV=prod mix local.rebar
sudo -Hu pleroma MIX_ENV=prod mix local.hex
sudo -Hu pleroma rm -r _build

を実行し、コンパイルを行うと…

sudo -Hu pleroma MIX_ENV=prod mix deps.get
sudo -Hu pleroma MIX_ENV=prod mix compile

無事コンパイルできた!!

その後、Migrationを行い、

sudo -Hu pleroma MIX_ENV=prod mix ecto.migrate

VACUUM ANALYZEをする。

sudo -Hu pleroma MIX_ENV=prod mix pleroma.database vacuum analyze

再起動して終了。

sudo systemctl start pleroma

いやーヒヤヒヤしました。

*1:普通にPleromaのサイトにも書いてあったけどなんかAkkomaの方が引っかかった、なんで?