Gentooのworldを更新したらncaq-overlayのmikutterが起動しなくなった問題を解決しました
Gentooのworldを更新しました.
するとmikutter 3.7.1を起動しようとすると以下のエラーが出るようになりました.
/usr/share/mikutter/core/mui/gtk_form_dsl_select.rb:4:in `<top (required)>': uninitialized constant Gtk (NameError)
ruby-gtk2はインストールするようにしているからおかしいなと思って, とりあえず当該ファイルに
require 'gtk2'
を書き加えます.
するとGemfileが存在しないというエラーが出ます.
とりあえず古いからかもしれないと思って3.7.2のebuildを作成します.
Gemfileが存在しないというエラーが出たので,
これまでmikutter.rb
とcore
だけをインストールしていた所,
全てインストールするようにしました.
すると以下のエラーが出ます.
/usr/share/mikutter/vendor/twitter-text/extractor.rb:2:in `require': libruby.so.2.5: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません - /usr/share/mikutter/vendor/idn.so (LoadError)
/usr/share/mikutter/vendor/idn.so
は確実に存在するのでおかしいなと思ったのですが,
どうやら存在しないのはlibruby.so.2.5
の方のようです.
% ll /usr/lib64/libruby*
lrwxrwxrwx 1 root root 18 6月 18 02:11 /usr/lib64/libruby24.so -> libruby24.so.2.4.4*
lrwxrwxrwx 1 root root 18 6月 18 02:11 /usr/lib64/libruby24.so.2.4 -> libruby24.so.2.4.4*
-rwxr-xr-x 1 root root 2.7M 6月 18 02:11 /usr/lib64/libruby24.so.2.4.4*
lrwxrwxrwx 1 root root 18 7月 8 17:01 /usr/lib64/libruby25.so -> libruby25.so.2.5.1*
lrwxrwxrwx 1 root root 18 7月 8 17:01 /usr/lib64/libruby25.so.2.5 -> libruby25.so.2.5.1*
-rwxr-xr-x 1 root root 2.8M 7月 8 17:01 /usr/lib64/libruby25.so.2.5.1*
似たような問題に既にぶつかっていた方が居たようですね.
OSパッチ更新でmikutter3.6が起動しなくなった件 - やっつけ不定記
参考にしてlibruby.so.2.5
にシンボリックリンクを貼ってみます.
するとlibidn.soの期待するファイルが存在しないというエラーが出ます.
このままでは延々シンボリックリンクを貼り続けることになってしまいます.
mikutterのRedmineを見直してみると, 以下のチケットと似た症状であることがわかりました.
バグ #1270: GEM_HOMEにライブラリをインストールしてもvendor/にあるライブラリが読み込まれる - mikutter - やること
よってGemfileはインストールしてvendorはインストールしないようにebuildを以下のように書き換えます.
each_ruby_install() {
exeinto /usr/share/mikutter
insinto /usr/share/mikutter
doins -r mikutter/core
doins -r mikutter/data
doins mikutter/*
newbin "${FILESDIR}"/mikutter mikutter
dodoc mikutter/README
make_desktop_entry mikutter Mikutter /usr/share/mikutter/core/skin/data/icon.png
}
これにて起動するようになりました.
ncaq-overlay/mikutter-3.7.2.ebuild at 89b3d35d8bd2598a54ca670cb2c05f7782bd79e2 · ncaq/ncaq-overlay
しかし直したのは良いけれど原因が今ひとつわかりません. mikutter関連のパッケージはアップデートしてないはずなので… gem周りのパッケージがアップデートされたのですかね?
原因判明
Gentoo公式のdev-ruby/ruby-glib2が3.2.7を提供するようになったのですが, ruby-gtk2などの他のパッケージには3.2.7が提供されていないのが原因でした.
ruby-atkはバージョン固定で依存関係を解決しようとするため, glib2 3.2.5を要求して3.2.7がしかないためエラーになります.
他のパッケージの3.2.7を追加して完了です.
Gentoo公式にPull Requestを投げていればこんな問題は生じていなかったのですが, ドタバタでちゃんと上流に還元できていません. ちゃんとしないと…