Quando gnome-shell va in crash su Linux Mint 12, di solito si ripresenta entro un paio di secondi. Quando non funziona, sembra che prenda il demone del portachiavi con sé, perché dopo il riavvio con

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

chiede la passphrase della chiave ogni volta che eseguo comandi come git pull. Come faccio a riavviare il daemon del portachiavi (se questo è il problema qui) quando riavvio gnome-shell?

Risposta

AGGIORNAMENTO: queste istruzioni potrebbero essere obsolete. Sembra che sui sistemi recenti i socket gnome-keyring spostati da una directory casuale da ~/.cache/ a /run/user/<ID>/keyring/ (allindirizzo almeno su Debian Jessie), quindi un semplice riavvio dovrebbe essere sufficiente.

È un po complicato poiché gnome-keyring-daemon imposta parametri di ambiente univoci prima dellavvio della sessione e questo ambiente viene utilizzato per accedere al daemon tramite un socket. Lambiente viene copiato in ogni applicazione, quindi non cè modo di reimpostare tutte le variabili di ambiente. “sa modo che comporta il riavvio manuale del demone, il collegamento simbolico della vecchia directory a quella nuova (quindi il vecchio ambiente funziona ancora) e quindi lavvio dei singoli servizi.

  1. Assicurati che non ci siano gnome- keyring-daemon in esecuzione (questo comando non dovrebbe restituire alcun pid, se è necessario ucciderlo)

    pgrep -f gnome-keyring-daemon 
  2. Cancella il vecchio portachiavi socket

    rm -rf ~/.cache/keyring-* 
  3. Avvia il processo daemon: usiamo setsid e reindirizziamo SDTIN, OUT & ERR quindi non cè alcuna associazione alla nostra shell / tty. Questo creerà una nuova directory con il socket di controllo in ~ / .cache /.

    setsid /usr/bin/gnome-keyring-daemon </dev/null >/dev/null 2>&1 
  4. Collega simbolicamente la nuova directory del socket alla vecchia uno (idealmente sostituire il carattere jolly con la directory effettiva, ma poiché li abbiamo rimossi tutti in precedenza, dovrebbe essercene solo uno):

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

    NB: Non ho il tuo problema con gnome-shell, ma se non hai queste variabili esportate da dove avvii gnome-shell, molti è necessario passare manualmente le seguenti variabili di ambiente a gnome-shell: GPG_AGENT_INFO GNOME_KEYRING_CONTROL SSH_AUTH_SOCK. Dovresti essere in grado di ricavare il valore dal percorso cancellato in # 2 (se hai più directory devi cercare la più recente).

  5. Avvia laltro gnome- servizi portachiavi (si connetteranno al demone usando il socket e abiliteranno i servizi su di esso se tutto è andato bene finora):

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

    Questi ultimi comandi verranno stampati variabili dambiente … puoi ignorarle, assicurati che non ci siano errori di connessione socket.

Inoltre, se vuoi pulire vecchi socket puoi aggiungere un @reboot voce cron che esegue una pulizia:

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

Commenti

  • Su CentOS 7.3 / gnome-keyring 3.14, non cera nulla relativo al portachiavi in ~/.cache/ quindi quei passaggi potevano essere saltati; solo uccidere e il setsid rilancio è stato sufficiente. Successivamente ssh login mi ha chiesto la password correttamente e memorizzato nella cache come previsto.
  • In effetti, ' non ne ho più file di portachiavi da luglio 2015 che sembrano corrispondere al mio aggiornamento da Debian 7 / Wheezy a 8 / Jessie. Ho smesso di fare affidamento sul demone portachiavi anche prima, quindi ' non so nemmeno come ' dovrebbe funzionare ora.

Risposta

Questo dovrebbe eseguire un riavvio pulito del demone:

gnome-keyring-daemon -r -d 

Fonte: ArchLinux

Commenti

  • Ha funzionato perfettamente su Mint 18 (Sarah). Grazie!
  • Ha funzionato in Ubuntu 18.04, grazie!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *