UPDATE: Estas instruções podem ser obsoletas. Aparece em sistemas recentes os sockets do gnome-keyring movidos de um diretório aleatório em ~/.cache/
to /run/user/<ID>/keyring/
(pelo menos no Debian Jessie), então uma simples reinicialização deve ser suficiente.
É um pouco complicado, já que o gnome-keyring-daemon define parâmetros de ambiente exclusivos antes que sua sessão inicie e esse ambiente é usado para acessar o daemon através de um soquete. O ambiente é copiado para cada aplicativo, portanto, não há como redefinir todas as variáveis de ambiente. Existe uma maneira que envolve reiniciar manualmente o daemon, ligar simbolicamente o diretório antigo ao novo (assim o ambiente antigo ainda funciona) e então iniciar os serviços individuais.
-
Assegure-se de que não exista nenhum daemon do gnome-keyring em execução (este comando deve retornar nenhum pid, se precisar, é necessário matá-lo)
pgrep -f gnome-keyring-daemon
-
Limpar soquetes antigos de chaveiro
rm -rf ~/.cache/keyring-*
-
Iniciar o processo do daemon - usamos o setsid e redirecionamos SDTIN, OUT & ERR, portanto, não há associação com nosso shell / tty. Isto irá criar um novo diretório com socket de controle em ~ / .cache /.
setsid /usr/bin/gnome-keyring-daemon </dev/null >/dev/null 2>&1
-
Faça um link simbólico do novo diretório de soquete para o antigo (de preferência substitua o caractere curinga pelo diretório atual, mas, como os removemos anteriormente, deve haver apenas um):
ln -s ~/.cache/keyring-* $GNOME_KEYRING_CONTROL
NB: Eu não tenho seu problema com o gnome-shell, mas se você não tiver essas variáveis exportadas de onde você inicia o gnome-shell, você precisará passar manualmente as seguintes variáveis de ambiente para o shell do gnome:
GPG_AGENT_INFO GNOME_KEYRING_CONTROL SSH_AUTH_SOCK
. Você deve ser capaz de derivar o valor do caminho excluído em # 2 (se você tiver vários diretórios, precisará procurar o mais recente). -
Inicie os outros serviços do gnome-keyring (eles se conectarão ao daemon usando o soquete e ativarão os serviços nele, se tudo correu bem até agora):
/usr/bin/gnome-keyring-daemon --start --components=pkcs11 /usr/bin/gnome-keyring-daemon --start --components=gpg /usr/bin/gnome-keyring-daemon --start --components=ssh
Estes últimos comandos imprimirão variáveis de ambiente ... você pode ignorá-los, apenas certifique-se de que não haja erros de conexão de soquete.
Além disso, se você quiser limpar sockets antigos, pode adicionar uma entrada @reboot
cron que faz uma limpeza:
find ~/.cache/ -maxdepth 1 -type l -name 'keyring-*' -delete