あひるの勉強部屋

つらつらつら~と不定期にカキコするブログ

久々にmikutter install battleした話

Apple SiliconのMacBook Airを買いました。

???「買うとどうなる」
あひる「知らんのか。mikutterInstallBattleが始まる。」

というわけで?mikutterInstallBattleをやっていきしたので記録です。
とはいえ久々なので、まずは過去の誰かの記録を見て思い出すことから。

mikutterinstallbattle [検索]

GitHub - Na0ki/mikutterInstallBattle: mikutterInstallBattle の覚書

はい、パーソナライズのせいな気もしますが私のGitHubリポジトリが出てきました。
過去の私えらい。

ざっと見て思い出したような出さないような。
とりあえず今回の目標は起動するところまでとします。
日本語入力?nanisore oishiino?

バトル環境

名称 バージョン
ハード MacBook Air M2 2022
OS Sonoma (14.2.1)
ruby 3.3.0
mikutter eadafa50 (2024/02/24時点の最新のmaster)

バトル開始

リポジトリのクローン

なぜか既にされていた。mikutterユーザーは新しいマシンを買ったら無意識のうちにmikutterをgit cloneしてしまうものだし仕方がないね。

依存のインストール

以前から必要な依存が変わってるかもしれないので、一旦homebrewでは色々と入れずbundleを走らせてみます。
他の環境構築の過程で必要な依存入れてたらごめんって感じ。

$ bundle
  1. gobject-introspection

     An error occurred while installing gobject-introspection (4.1.7), and Bundler cannot continue.
    
     In Gemfile:
       gtk3 was resolved to 4.1.7, which depends on
         gdk3 was resolved to 4.1.7, which depends on
           gdk_pixbuf2 was resolved to 4.1.7, which depends on
             gio2 was resolved to 4.1.7, which depends on
               gobject-introspection
    

    怒られたので追加

     $ brew install gobject-introspection
    
  2. pango

     An error occurred while installing pango (4.1.7), and Bundler cannot continue.
    
     In Gemfile:
       gtk3 was resolved to 4.1.7, which depends on
         gdk3 was resolved to 4.1.7, which depends on
           pango
    

    怒られたので追加

     $ brew install pango
    

これで完走しました。(たしか)
なんだか拍子抜け。

起動

いざ起動

bundle exec ruby mikutter.rb --debug

ruby 3.3.0 環境で実行しているせいか、依存gemでstandard libraryからロードしてるやつがdefault gemになるからGemfileとかに書いとけよってwarningがちょいちょい出てるっぽい(チケットにしろそれはそう)

warning: observer was loaded from the standard library, but will no longer be part of the default gems since Ruby 3.4.0. Add observer to your Gemfile or gemspec.
warning: mutex_m was loaded from the standard library, but will no longer be part of the default gems since Ruby 3.4.0. Add mutex_m to your Gemfile or gemspec. Also contact author of httpclient-2.8.3 to add mutex_m into its gemspec.

途中再現性のないゴタつきはあったものの、起動自体はできてしまいました。
詰まるところがなさすぎでは?

mastodonアカウント追加

流石に起動して終わりは終わってるのでmastodonのアカウントでも追加しようと思います。
私は social.mikutter.hachune.net にいるので、アカウント追加からmikutterを選んで連携すれば終わりです。

ここでOpenSSL 3.0の問題を引きました。
今mikutterで一番ホットかもしれない気がしなくもない話題です。知らんけど。

(mikutter.rb:17126): Gtk-WARNING **: 20:48:38.827: Couldn't export handle, unsupported windowing system
notice: {MIKUTTER_DIR}/core/serialthread.rb:48:in `force_exit!': all Serial Thread Group jobs canceled.
notice: mikutter.rb:91:in `boot!': raise mainloop exception `OpenSSL::Cipher::CipherError'
notice: mikutter.rb:96:in `error_handling!': catch OpenSSL::Cipher::CipherError
/Users/ahiru/ghq/mikutter/mikutter/plugin/world/keep.rb:125:in `initialize': unsupported (Global default library context, Algorithm (BF-ECB : 0), Properties ()) (OpenSSL::Cipher::CipherError)
        from /Users/ahiru/ghq/mikutter/mikutter/plugin/world/keep.rb:125:in `new'
        from /Users/ahiru/ghq/mikutter/mikutter/plugin/world/keep.rb:125:in `encrypt'
        from /Users/ahiru/ghq/mikutter/mikutter/plugin/world/keep.rb:120:in `block in account_write'
        from /Users/ahiru/ghq/mikutter/mikutter/plugin/world/keep.rb:119:in `open'
        from /Users/ahiru/ghq/mikutter/mikutter/plugin/world/keep.rb:119:in `account_write'
        from /Users/ahiru/ghq/mikutter/mikutter/plugin/world/keep.rb:75:in `block in account_register'
        from /Users/ahiru/ghq/mikutter/mikutter/plugin/world/keep.rb:73:in `synchronize'
        from /Users/ahiru/ghq/mikutter/mikutter/plugin/world/keep.rb:73:in `account_register'
        from /Users/ahiru/ghq/mikutter/mikutter/plugin/world/world.rb:84:in `block (3 levels) in <top (required)>'
        from /Users/ahiru/ghq/mikutter/mikutter/vendor/bundle/ruby/3.3.0/gems/pluggaloid-1.7.0/lib/pluggaloid/listener.rb:25:in `call'
        from /Users/ahiru/ghq/mikutter/mikutter/vendor/bundle/ruby/3.3.0/gems/pluggaloid-1.7.0/lib/pluggaloid/event.rb:241:in `block (2 levels) in call_all_listeners'
        from /Users/ahiru/ghq/mikutter/mikutter/vendor/bundle/ruby/3.3.0/gems/pluggaloid-1.7.0/lib/pluggaloid/event.rb:240:in `each'
        from /Users/ahiru/ghq/mikutter/mikutter/vendor/bundle/ruby/3.3.0/gems/pluggaloid-1.7.0/lib/pluggaloid/event.rb:240:in `block in call_all_listeners'
        from /Users/ahiru/ghq/mikutter/mikutter/vendor/bundle/ruby/3.3.0/gems/pluggaloid-1.7.0/lib/pluggaloid/event.rb:239:in `catch'
        from /Users/ahiru/ghq/mikutter/mikutter/vendor/bundle/ruby/3.3.0/gems/pluggaloid-1.7.0/lib/pluggaloid/event.rb:239:in `call_all_listeners'
        from /Users/ahiru/ghq/mikutter/mikutter/vendor/bundle/ruby/3.3.0/gems/pluggaloid-1.7.0/lib/pluggaloid/event.rb:62:in `block in call'
        from /Users/ahiru/ghq/mikutter/mikutter/vendor/bundle/ruby/3.3.0/gems/delayer-1.2.1/lib/delayer/procedure.rb:26:in `run'
        from /Users/ahiru/ghq/mikutter/mikutter/vendor/bundle/ruby/3.3.0/gems/delayer-1.2.1/lib/delayer/extend.rb:126:in `run_once_without_pop_reserve'
        from /Users/ahiru/ghq/mikutter/mikutter/vendor/bundle/ruby/3.3.0/gems/delayer-1.2.1/lib/delayer/extend.rb:117:in `run_once'
        from /Users/ahiru/ghq/mikutter/mikutter/vendor/bundle/ruby/3.3.0/gems/delayer-1.2.1/lib/delayer.rb:38:in `method_missing'
        from /Users/ahiru/ghq/mikutter/mikutter/plugin/gtk3/mainloop.rb:23:in `block (2 levels) in mainloop'
        from <internal:kernel>:187:in `loop'
        from /Users/ahiru/ghq/mikutter/mikutter/plugin/gtk3/mainloop.rb:12:in `block in mainloop'
        from /Users/ahiru/ghq/mikutter/mikutter/plugin/gtk3/mainloop.rb:10:in `catch'
        from /Users/ahiru/ghq/mikutter/mikutter/plugin/gtk3/mainloop.rb:10:in `mainloop'
        from mikutter.rb:79:in `boot!'
        from mikutter.rb:115:in `<main>'

これは既にチケット化されており、以下で議論がされているっぽいです。
tsutsuii さんありがとう。

バグ #1585: OpenSSL 3.x 環境 (ubuntu 22.04 等) で mikutter が起動しない - mikutter - やること

私の環境はruby 3.3.0であり、これにバンドルされているopenssl gemのバージョンは3.2.0のため、レガシープロバイダをロードする方法が楽にできます。
というわけで、雑対応。(チケット内の対応をぶっ飛ばしてすんません)

diff --git a/plugin/world/keep.rb b/plugin/world/keep.rb
index c4ae7d3b..ea120a22 100644
--- a/plugin/world/keep.rb
+++ b/plugin/world/keep.rb
@@ -122,12 +122,14 @@ module Plugin::World
       account_data end
 
     def encrypt(str)
+      OpenSSL::Provider.load("legacy")
       cipher = OpenSSL::Cipher.new('bf-ecb').encrypt
       cipher.key_len = ACCOUNT_CRYPT_KEY_LEN
       cipher.key = key
       cipher.update(str) << cipher.final end
 
     def decrypt(binary_data)
+      OpenSSL::Provider.load("legacy")
       cipher = OpenSSL::Cipher.new('bf-ecb').decrypt
       cipher.key = key
       str = cipher.update(binary_data) << cipher.final

これでなんかアカウント追加できたし、再起動してもmastodonのアカウント読み込みできたし大丈夫なはず。

というわけで日本語が打てないmikutter環境が作れたので、これにてバトル終了です。
taisen arigatou gozaimashita. 39.39 :mikuslime: