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.

  1. 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 
  2. Wis oude sleutelhanger sockets

    rm -rf ~/.cache/keyring-* 
  3. 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 
  4. 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).

  5. 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

  • Op CentOS 7.3 / gnome-keyring 3.14 was er niets gerelateerd aan de sleutelhanger in ~/.cache/, dus die stappen konden worden overgeslagen; gewoon doden en het opnieuw starten van setsid was voldoende. Volgende ssh login vroeg me om mijn wachtwoord correct en gecached zoals verwacht.
  • Inderdaad ik ' heb er geen meer sleutelhangersbestanden sinds juli 2015 die lijken te corresponderen met mijn upgrade van Debian 7 / Wheezy naar 8 / Jessie. Ik ben al eerder gestopt met het vertrouwen op de keyring-daemon, dus ik weet niet ' zelfs niet hoe het ' s nu zou moeten werken.

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!

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *