När gnome-shell kraschar på Linux Mint 12 kommer det vanligtvis upp igen inom några sekunder. När det inte fungerar verkar det som om det tar nyckelringdemonen med sig, för efter att ha startat om med

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

ber den om nyckellösenfrasen varje gång jag kör kommandon som git pull. Hur startar jag om nyckelringdemon (om det här är problemet här) när jag startar om gnome-shell?

Svar

UPPDATERING: Dessa instruktioner kan vara föråldrade. Det verkar på senaste system att gnome-nyckelringuttagen flyttas från en slumpmässig katalog i ~/.cache/ till /run/user/<ID>/keyring/ minst på Debian Jessie), så en enkel omstart borde vara tillräcklig.

Det är lite knepigt eftersom gnome-keyring-daemon ställer in unika miljöparametrar innan din session startar och den här miljön används för att komma åt daemon-tråget ett uttag. Miljön kopieras till varje applikation så det finns inget sätt att återställa alla miljövariabler. Det finns en sätt som innebär att man startar om demonen manuellt, att länka den gamla dir till den nya (så att den gamla miljön fortfarande fungerar) och sedan starta de enskilda tjänsterna.

  1. Se till att det inte finns något gnome- nyckelring-daemon körs (det här kommandot ska inte returnera något pid, om det behöver du döda det)

    pgrep -f gnome-keyring-daemon 
  2. Rensa gammal nyckelring sockets

    rm -rf ~/.cache/keyring-* 
  3. Starta demonprocessen – vi använder setsid och omdirigerar SDTIN, OUT & ERR så det finns ingen koppling till vårt skal / tty. Detta skapar en ny katalog med kontrolluttag i ~ / .cache /.

    setsid /usr/bin/gnome-keyring-daemon </dev/null >/dev/null 2>&1 
  4. Symlink the new socket directory to the old en (helst ersätta jokertecknet med den faktiska katalogen, men eftersom vi tog bort dem alla tidigare borde det bara finnas en):

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

    OBS: Jag har inte ditt gnome-shell-problem, men om du inte har dessa variabler exporterade från var du startar gnome-shell så många måste skicka följande miljövariabler manuellt till gnome-shell: GPG_AGENT_INFO GNOME_KEYRING_CONTROL SSH_AUTH_SOCK. Du borde kunna härleda värdet från sökvägen som raderats i # 2 (om du har flera kataloger måste du leta efter den senaste).

  5. Starta den andra gnomen- nyckelringstjänster (de ansluter till demonen med uttaget och aktiverar tjänsterna på den om allt gick bra hittills):

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

    Dessa sista kommandon skrivs ut miljövariabler … du kan ignorera dem, se bara till att det inte finns några anslutningsfel för socklar.

Om du vill rensa gamla sockets kan du också lägga till en @reboot cron-post som gör en rensning:

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

Kommentarer

  • På CentOS 7.3 / gnome-keyring 3.14 fanns det ingenting relaterat till nyckelringen i ~/.cache/ så att dessa steg kunde hoppas över; bara dödande och setsid omstart var tillräckligt. Nästa ssh inloggning frågade mig om mitt lösenord ordentligt och cachade som förväntat.
  • Jag har faktiskt inte ' fler nyckelringsfiler sedan juli 2015 som tycks motsvara min uppgradering från Debian 7 / Wheezy till 8 / Jessie. Jag slutade förlita mig på nyckelringdemonen redan innan det, så jag vet inte ' inte ens hur den ' ska fungera nu.

Svar

Detta ska göra en ren omstart av demon:

gnome-keyring-daemon -r -d 

Källa: ArchLinux

Kommentarer

  • Fungerade perfekt på Mint 18 (Sarah). Tack!
  • Fungerade i Ubuntu 18.04, tack!

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *