{{tag> mastodon gentoo}} # gem の再ビルド システムのアップデート(うちの場合は gentoo なので `emerge -uDN world`)で mastodon がうまく起動しなくなってしまった時の雑な対処法。 ## エラーメッセージを読んでみる 今回はうどんワールドで libicu のアップデートが走ってました。そして puma の起動時にコケました。 ``` [2563] Puma starting in cluster mode... [2563] * Version 3.11.0 (ruby 2.5.0-p0), codename: Love Song [2563] * Min threads: 5, max threads: 5 [2563] * Environment: production [2563] * Process workers: 2 [2563] * Preloading application [2563] ! Unable to load application: LoadError: libicudata.so.58: cannot open shared object file: No such file or directory - /home/mastodon/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/charlock_holmes-0.7.5/lib/charlock_holmes/charlock_holmes.so bundler: failed to load command: puma (/home/mastodon/.rbenv/versions/2.5.0/bin/puma) LoadError: libicudata.so.58: cannot open shared object file: No such file or directory - /home/mastodon/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/charlock_holmes-0.7.5/lib/charlock_holmes/charlock_holmes.so : : ``` charlock_holmes という gem が使用する libicudata.so.58 がロードできないよ、と言っているようです。 ## 調べてみる bundler が使用する Gemfile を見てみます。 ``` # cd /home/mastodon/live # grep 'charlock' Gemfile gem 'charlock_holmes', '~> 0.7.5' ``` こいつですね。ちなみに libicudata.so の方はアップデートで 58 から 60 に更新されていました。 ``` # ls -l /usr/lib/libicudata* lrwxrwxrwx. 1 root root 18 Feb 6 17:21 /usr/lib/libicudata.so -> libicudata.so.60.2 lrwxrwxrwx. 1 root root 18 Feb 6 17:21 /usr/lib/libicudata.so.60 -> libicudata.so.60.2 -rwxr-xr-x. 1 root root 26904120 Feb 6 17:21 /usr/lib/libicudata.so.60.2 ``` なので charlock_holmes が libicudata.so.60 を使うようにすればおっけーです。 ## gem をビルドしなおす もう少しまともなやり方もあると思うんですが、いつも雑に対処しています。 ``` # gem uninstall charlock_holmes Successfully uninstalled charlock_holmes-0.7.5 # bundle install ``` 要は、該当の gem を消してしまえば bundler が勝手に再ビルド、再インストールしてくれます。