概要
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:
https://akkoma.dev/sfr/akkoma
mix deps.clean --all
mix local.rebar
mix local.hex
rm -r _build
とするとよいとのこと。つまり、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の方が引っかかった、なんで?