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.
-
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
-
Cancella il vecchio portachiavi socket
rm -rf ~/.cache/keyring-*
-
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
-
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). -
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
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!
~/.cache/
quindi quei passaggi potevano essere saltati; solo uccidere e ilsetsid
rilancio è stato sufficiente. Successivamentessh
login mi ha chiesto la password correttamente e memorizzato nella cache come previsto.