Wanneer gnome-shell
crasht op Linux Mint 12, verschijnt het meestal binnen een paar seconden weer. Als dit niet het geval is, lijkt het erop dat het de keyring-daemon meeneemt, want na het herstarten met
while true; do DISPLAY=:0 gnome-shell --replace; done &
wordt elke keer dat ik start om het sleutelwachtwoord gevraagd commandos zoals git pull
. Hoe herstart ik de keyring daemon (als dat het probleem is hier) bij het herstarten van gnome-shell
?
Antwoord
UPDATE: deze instructies zijn mogelijk verouderd. Het verschijnt op recente systemen dat de gnome-keyring sockets zijn verplaatst van een willekeurige directory in ~/.cache/
naar /run/user/<ID>/keyring/
(op minst op Debian Jessie), dus een simpele herstart zou voldoende moeten zijn.
Het is een beetje lastig aangezien gnome-keyring-daemon unieke omgevingsparameters instelt voordat je sessie start en deze omgeving wordt gebruikt om toegang te krijgen tot de daemon via een socket. De omgeving wordt naar elke toepassing gekopieerd, dus er is geen manier om alle omgevingsvariabelen opnieuw in te stellen. Er is een manier die inhoudt dat de daemon handmatig opnieuw wordt opgestart, de oude map symboliseert naar de nieuwe (zodat de oude omgeving nog steeds werkt) en vervolgens de afzonderlijke services start.
-
Zorg ervoor dat er geen kabouter- keyring-daemon actief (dit commando zou geen pid moeten teruggeven, als dat het geval is, moet je het doden)
pgrep -f gnome-keyring-daemon
-
Wis oude sleutelhanger sockets
rm -rf ~/.cache/keyring-*
-
Start het daemon-proces – we gebruiken setsid en omleiden SDTIN, OUT & ERR dus er is geen associatie met onze shell / tty. Dit zal een nieuwe directory aanmaken met control socket in ~ / .cache /.
setsid /usr/bin/gnome-keyring-daemon </dev/null >/dev/null 2>&1
-
Symlink de nieuwe socket directory naar de oude one (vervang het jokerteken idealiter door de daadwerkelijke map, maar aangezien we ze allemaal eerder hebben verwijderd, zou er er maar één moeten zijn):
ln -s ~/.cache/keyring-* $GNOME_KEYRING_CONTROL
NB: Ik heb je probleem met de gnome-shell niet, maar als je deze variabelen niet hebt geëxporteerd van waaruit je gnome-shell start, heb je veel moeten de volgende omgevingsvariabelen handmatig doorgeven aan gnome-shell:
GPG_AGENT_INFO GNOME_KEYRING_CONTROL SSH_AUTH_SOCK
. Je zou de waarde moeten kunnen afleiden uit het pad verwijderd in # 2 (als je meerdere mappen hebt, moet je de meest recente zoeken). -
Start de andere gnome- keyring-services (ze zullen verbinding maken met de daemon met behulp van de socket en de services erop inschakelen als alles goed is gegaan tot nu toe):
/usr/bin/gnome-keyring-daemon --start --components=pkcs11 /usr/bin/gnome-keyring-daemon --start --components=gpg /usr/bin/gnome-keyring-daemon --start --components=ssh
Deze laatste commandos worden afgedrukt omgevingsvariabelen … je kunt ze negeren, zorg er alleen voor dat er geen socketverbindingsfouten zijn.
Als je oude sockets wilt opschonen, kun je een @reboot
cron-item dat een opruimactie uitvoert:
find ~/.cache/ -maxdepth 1 -type l -name "keyring-*" -delete
Reacties
Answer
Dit zou een schone herstart van de daemon moeten uitvoeren:
gnome-keyring-daemon -r -d
Bron: ArchLinux
Reacties
- Werkte perfect op Mint 18 (Sarah). Bedankt!
- Gewerkt in ubuntu 18.04, bedankt!
~/.cache/
, dus die stappen konden worden overgeslagen; gewoon doden en het opnieuw starten vansetsid
was voldoende. Volgendessh
login vroeg me om mijn wachtwoord correct en gecached zoals verwacht.