Când gnome-shell se blochează pe Linux Mint 12, de obicei apare din nou în câteva secunde. Când nu este, se pare că ia daemon-ul cu chei, pentru că după repornirea cu

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

solicită expresia de acces cheie de fiecare dată când rulez comenzi precum git pull. Cum pot reporni daemon-ul cu chei (dacă asta este problema aici) la repornirea gnome-shell?

Răspuns

ACTUALIZARE: Aceste instrucțiuni pot fi învechite. Apare pe sistemele recente mufele gnome-keyring mutate formează un director aleatoriu în ~/.cache/ în /run/user/<ID>/keyring/ (la cel puțin pe Debian Jessie), deci o repornire simplă ar trebui să fie suficientă.

Este „puțin dificil, deoarece gnome-keyring-daemon stabilește parametri de mediu unici înainte ca sesiunea dvs. să înceapă și acest mediu este utilizat pentru a accesa canalul de daemon un socket. Mediul este copiat în fiecare aplicație, deci nu există nicio modalitate de a restabili toate variabilele de mediu mod care implică repornirea manuală a daemonului, legarea simbolică a vechiului dir la cel nou (deci vechiul mediu funcționează în continuare) și apoi pornirea serviciilor individuale.

  1. Asigurați-vă că nu există gnome- keyring-daemon rulează (această comandă nu ar trebui să returneze niciun pid, dacă este nevoie să o omori)

    pgrep -f gnome-keyring-daemon 
  2. Ștergeți cheia veche sockets

    rm -rf ~/.cache/keyring-* 
  3. Porniți procesul daemon – folosim setsid și redirecționăm SDTIN, OUT & ERR, deci nu există nicio asociere la shell / tty. Aceasta va crea un nou director cu socketul de control în ~ / .cache /.

    setsid /usr/bin/gnome-keyring-daemon </dev/null >/dev/null 2>&1 
  4. Asociați noul director socket la vechiul unul (în mod ideal, înlocuiți wildcard-ul cu directorul real, dar din moment ce le-am eliminat mai devreme ar trebui să existe doar unul):

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

    NB: Nu am problema dvs. cu gnome-shell, dar dacă nu aveți aceste variabile exportate de unde porniți gnome-shell vă mulți trebuie să treceți manual următoarele variabile de mediu către gnome-shell: GPG_AGENT_INFO GNOME_KEYRING_CONTROL SSH_AUTH_SOCK. Ar trebui să puteți obține valoarea din calea ștearsă în # 2 (dacă aveți mai multe directoare, trebuie să le căutați pe cele mai recente).

  5. Porniți celălalt gnome- servicii keyring (se vor conecta la daemon folosind soclul și vor activa serviciile de pe acesta dacă totul a mers bine până acum):

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

    Aceste ultime comenzi vor fi tipărite variabile de mediu … le puteți ignora, asigurați-vă că nu există erori de conexiune la socket.

De asemenea, dacă doriți să curățați socket-urile vechi, puteți adăuga un @reboot intrare cron care face o curățare:

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

Comentarii

  • Pe CentOS 7.3 / gnome-keyring 3.14, nu a existat nimic legat de keyring în ~/.cache/, astfel încât acești pași să poată fi omiți; doar uciderea și setsid relansarea au fost suficiente. Următorul login ssh mi-a cerut parola corect și a fost stocată în cache, așa cum era de așteptat.
  • Într-adevăr, nu am ' mai multe fișiere de chei – din iulie 2015, care par să corespundă actualizării mele de la Debian 7 / Wheezy la 8 / Jessie. Am încetat să mă mai bazez pe demonul cu chei chiar înainte de asta, așa că nu ' nici măcar nu știu cum ar trebui să funcționeze acum ' / li>

Răspuns

Aceasta ar trebui să efectueze o repornire curată a demonului:

gnome-keyring-daemon -r -d 

Sursă: ArchLinux

Comentarii

  • A funcționat perfect pe Mint 18 (Sarah). Mulțumesc!
  • Ați lucrat în Ubuntu 18.04, mulțumesc!

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *