gnome-shellクラッシュ後にキーリングデーモンを起動するには?

gnome-shellクラッシュ後にキーリングデーモンを起動するには?

Linux Mint 12 がクラッシュすると、通常はgnome-shell数秒で再起動します。そうでない場合は、再起動後にキーリングデーモンを削除するようです。

while true; do DISPLAY=:0 gnome-shell --replace; done &

このようなコマンドを実行するたびに、キーパスワードを入力してくださいgit pull。再起動時にキーリングデーモンを再起動します(問題の場合)gnome-shell

答え1

これにより、デーモンを完全に再起動する必要があります。

gnome-keyring-daemon -r -d

源泉:アーチLinux

答え2

更新:この手順は最新の情報ではない可能性があります。最近のシステムでは、gnome-keyringソケットが任意のディレクトリ~/.cache//run/user/<ID>/keyring/少なくともDebian Jessieでは)から移動しているように見えるため、単純な再起動で十分です。

gnome-keyring-daemonはセッションが開始される前に唯一の環境パラメータを設定し、その環境はソケットを介してデーモンにアクセスするために使用されるため、ややトリッキーです。環境は各アプリケーションにコピーされるため、すべての環境変数をリセットすることはできません。デーモンを手動で再起動し、古いディレクトリを新しいディレクトリにシンボリックリンクしてから(以前の環境がまだ有効)、個々のサービスを起動する方法があります。

  1. 実行中のgnome-keyring-daemonがないことを確認してください(このコマンドはpidを返さないでください。必要に応じて終了する必要があります)。

    pgrep -f gnome-keyring-daemon
    
  2. 古いキーホルダーソケットをクリア

    rm -rf ~/.cache/keyring-*
    
  3. デーモンの起動 - setidを使用してSDTIN、OUT、およびERRをリダイレクトするため、シェル/ ttyに接続されません。これにより、 ~/.cache/ に制御ソケットを持つ新しいディレクトリが作成されます。

    setsid /usr/bin/gnome-keyring-daemon </dev/null >/dev/null 2>&1
    
  4. 新しいソケットディレクトリを既存のソケットディレクトリにシンボリックリンクします(ワイルドカードを実際のディレクトリに置き換えるのは理想的ですが、以前にすべて削除したため、1つだけが必要です)。

    ln -s ~/.cache/keyring-* $GNOME_KEYRING_CONTROL
    

    気づく:gnome-shellに問題はありませんが、gnome-shellを起動した場所からこれらの変数をエクスポートしていない場合は、次の環境変数をgnome-shellに手動で渡す必要がありますGPG_AGENT_INFO GNOME_KEYRING_CONTROL SSH_AUTH_SOCK。 #2から削除したパスから値を取得できる必要があります(複数のディレクトリがある場合は、最新のディレクトリを見つける必要があります)。

  5. 別のgnome-keyringサービスを開始します(これまですべてが順調に進むと、ソケットを使用してデーモンに接続してサービスを有効にします)。

    /usr/bin/gnome-keyring-daemon --start --components=pkcs11
    /usr/bin/gnome-keyring-daemon --start --components=gpg
    /usr/bin/gnome-keyring-daemon --start --components=ssh
    

    最後に、このコマンドは環境変数を印刷します。これを無視してソケット接続エラーがないことを確認してください。

また、古いソケットをクリーンアップするには、@rebootcronエントリを追加してクリーンアップできます。

find ~/.cache/ -maxdepth 1 -type l -name 'keyring-*' -delete

関連情報