0 / 140

MastodonがRuby2.4.2に対応したのでアップグレードしたときのメモ

mastodon_topMastodonがRuby2.4.2に対応したのでアップグレードしたときのメモです。Dockerなしのやり方でインストールしたものです。

Ruby2.4.2にアップグレード

Rubyを2.4.1から2.4.2にアップグレード

$ rbenv install 2.4.2
ruby-build: definition not found: 2.4.2
See all available versions with `rbenv install --list'.
If the version you need is missing, try upgrading ruby-build:
  brew update && brew upgrade ruby-build

とまあ、2.4.2が見つからないとなってできないので
rbenvとruby-buildを更新します。
まず、rbenvの更新

$ cd .rbenv
$ git pull
...
修正されていたりするのでcommitしてmergeしてからpullするようですね。

次にruby-build

$ cd ~/.rbenv/plugins/ruby-build/
$ git pull
...

2.4.2をビルドする

$ rbenv install 2.4.2
Downloading ruby-2.4.2.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.bz2
...

デフォルトで使うrubyのバージョンを変更する

現状確認

$ cd ~
$ rbenv versions
  system
* 2.4.1 (set by /home/mastodon/.rbenv/version)
  2.4.2
$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

デフォルトに2.4.2と設定する

$ rbenv global 2.4.2
確認
$ rbenv versions
  system
  2.4.1
* 2.4.2 (set by /home/mastodon/live/.ruby-version)
$ ruby -v
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux]

mastodonを更新

普通に更新する場合は

$ cd ~mastodon/live/
$ git fetch
$ git checkout $(git tag | tail -n 1)
$ RAILS_ENV=production bundle exec rails db:migrate
$ yarn install
$ RAILS_ENV=production bundle exec rails assets:precompile

$ sudo systemctl restart mastodon-*.service

なのですが、git checkoutでcommitしろとかmergeしろとかでます。修正してますからcommitしてからcheckoutします。

mastodonのrubyのディフォルトを確認

$ cat ~/live/.ruby-version
2.4.2

これが2.4.1だとruby2.4.2では動かないです。

bundleすると、ないといってくるので2.4.2版がないということですからそのほかのものもアップグレードします。

$ gem install bundler
$ bundle install
$ yarn install

yarnもバージョンを上げないておかないと出来ないのであらかじめyum等でアップグレードします。
また、必要なライブラリをインストールしないとだめな場合があります。
私の環境では、以下のライブラリパッケージを追加でいれないといけませんでしたのでyumでパッケージをインストールしました。

libicu-devel
libidn-devel
protobuf-devel

そして

$ RAILS_ENV=production bundle exec rails db:migrate

を実行すると大抵の場合は

Migrating to AddForeignKeysForAccounts (20170604144747)
== 20170604144747 AddForeignKeysForAccounts: migrating ========================
-- add_foreign_key(:statuses, :accounts, {:on_delete=>:cascade})
   -> 0.0232s
-- add_foreign_key(:statuses, :accounts, {:column=>:in_reply_to_account_id, :on_delete=>:nullify})
   -> 0.0254s
-- add_foreign_key(:statuses, :statuses, {:column=>:in_reply_to_id, :on_delete=>:nullify})
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::ForeignKeyViolation: ERROR:  insert or update on table "statuses" violates foreign key constraint "fk_rails_94a6f70399"
DETAIL:  Key (in_reply_to_id)=(881) is not present in table "statuses".
: ALTER TABLE "statuses" ADD CONSTRAINT "fk_rails_94a6f70399"
FOREIGN KEY ("in_reply_to_id")
  REFERENCES "statuses" ("id")
 ON DELETE SET NULL
....以下略

DBの更新で失敗します。フォーリンキーがどうしたこうしたとなるので

$ RAILS_ENV=production bundle exec rails mastodon:maintenance:prepare_for_foreign_keys

を実行してから再度やります。

$ RAILS_ENV=production bundle exec rails db:migrate
$ yarn install
$ RAILS_ENV=production bundle exec rails assets:precompile

サービスを再起動して完了です。

$ sudo systemctl restart mastodon-*.service

こちらもチェック!

つぶやき

Facebookのコメント

この記事へのコメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です