GLib 2.70.0へのアップデートの結果GNOME Keyringが壊れたので復旧
何もしてないのにgnome-keyringが壊れた
今日PC立ち上げたらターミナルがなかなか起動しなかった。
eval "$(saml2aws --completion-script-bash)"
が終了しないらしい。
なんで?
ログを見てみると以下のようなgnome-keyringのエラーが表示されていました。
9月 26 14:13:39 strawberry gnome-keyring-daemon[1856]: couldn't access control socket: /run/user/1000/keyring/control: そのようなファイルやディレクトリはありません
9月 26 14:13:39 strawberry gnome-keyring-d[1856]: couldn't access control socket: /run/user/1000/keyring/control: そのようなファイルやディレクトリはありません
9月 26 14:13:39 strawberry gnome-keyring-daemon[1856]: couldn't connect to dbus session bus: setuid 時にメッセージバスを spawn できません
9月 26 14:13:39 strawberry gnome-keyring-d[1856]: couldn't connect to dbus session bus: setuid 時にメッセージバスを spawn できません
9月 26 14:13:39 strawberry gnome-keyring-daemon[1856]: couldn't connect to dbus session bus: setuid 時にメッセージバスを spawn できません
9月 26 14:13:39 strawberry gnome-keyring-daemon[1856]: couldn't connect to dbus session bus: setuid 時にメッセージバスを spawn できません
9月 26 14:13:39 strawberry gnome-keyring-d[1856]: couldn't connect to dbus session bus: setuid 時にメッセージバスを spawn できません
9月 26 14:13:39 strawberry gnome-keyring-d[1856]: couldn't connect to dbus session bus: setuid 時にメッセージバスを spawn できません
実際gnome-keyringは動いてなくて、これを使うlibsecretを使うgit pushなどが動きません。困りました。
原因はGLib 2.70.0-1でのセキュリティ強化
色々探してみた所、以下に情報がありました。
GLib 2.70.0にシステムがアップデートしたのは最近ですし、時間的理屈も通りますね。
ちょっとしか見てないしちゃんとこの周辺のシステムの理解もしてないのですが、どうもgnome-keyringのバグでsetcapをしてるのが悪いらしい。
Gentoo Linuxでの解決策
package.use
でcaps機能を無効化することで解決しました。
# [Bug#994961: glib2.0: gnome-keyring unable to unlock login keyring on some systems since GLib 2.70.0-1](https://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1820622.html)
gnome-base/gnome-keyring -caps -filecaps
これでちゃんとgit pushも動きます。
9月 26 14:13:39 strawberry gnome-keyring-daemon[1856]: couldn't access control socket: /run/user/1000/keyring/control: そのようなファイルやディレクトリはありません
の方のログは残ってるんですが、これは残っても動作に問題はないらしい。
上流に上げるべき?
このバグ報告Gentooのbugzillaに上げるべきなんでしょうか。なんか自分のような一部の環境限定ですが、 gnome-keyring自身にバグがあるから勝手に直されそう。英語書くの相当だるいので報告するのがだるい。