Minha instalação do dconf / gsettings está interrompida. Como posso corrigi-lo sem a reinstalação do Ubuntu?

24

Eu executo o Ubuntu 12.04.1 LTS x64 no VirtualBox. Depois de um infeliz clique incorreto (redefinir o estado salvo em vez de carregar o estado salvo), tive um problema muito irritante.

Quase todos os aplicativos (unity, synaptic, gedit, etc.) são impressos no início:

Using the 'memory' GSettings backend.  Your settings will not be saved or shared with other applications.

E todas as configurações da GUI são redefinidas após a reinicialização.

Outro sintoma:

$ GSETTINGS_BACKEND=dconf dconf-editor
(dconf-editor:2353): GLib-GIO-WARNING **: Can't find module 'dconf' specified in GSETTINGS_BACKEND
GLib-GIO-Message: Using the 'memory' GSettings backend.  Your settings will not be saved or shared with other applications

Mas /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.soestá presente.


O que eu tentei (e não ajudou):

  • sudo apt-get install -f --reinstall dconf-tools libdconf0 libdconf-dbus-1-0 dconf-service
  • Desenvolver dconf-0.5 a partir de fontes e make installque
  • Crie um perfil de usuário vazio e inicie programas lá

Eu tenho que manter a instalação atual do Ubuntu para que uma reinstalação completa não seja uma opção para mim.

Como posso corrigir isso?

Dmitry
fonte
1
Encontrei a mesma GLib-GIO-Message ao tentar usar gsettings para definir a posição do Launcher. Eu procurei nas postagens do fórum e tentei as sugestões aqui, incluindo redefinir a configuração do vinculador dinâmico usando o ldconfig. No entanto, nem tudo foi possível resolver o problema. Então, o post de Dmitry me fez pensar em usar o ldd para verificar as dependências de objetos compartilhados 'gsettings', o que me levou a descobrir que o executável que eu estava usando veio daquele na instalação do Anaconda. Usando a versão em / usr / bin, o problema foi resolvido.
panna

Respostas:

23

Isso também pode acontecer se você tiver PATHconflitos com um gerenciador de ambiente Python como o Anaconda.

Certifique-se de executar which gsettingsantes de ficar muito profundo. Se isso não for impresso /usr/bin/gsettingse, em vez disso, algo como /home/{username}/anaconda3/bin/gsettingsvocê provavelmente tem algo .profile/ .bashrc/ .zshrclike:

export PATH=$HOME/anaconda3/bin:$PATH

Altere para:
export PATH=$PATH:$HOME/anaconda3/bin

O encerramento do aplicativo em vez de pré- envio para a PATHvariável resolverá o problema, mas lembre-se de que qualquer coisa no sistema binou em outros PATHlocais substituirá o seu anaconda3/bin.

Outra opção seria alias /usr/bin/gsettings:

alias sys-gsettings=/usr/bin/gsettings
sys-gsettings get org.gnome.todo view
austince
fonte
3
A primeira parte (em execução which) é um excelente conselho. A segunda parte, nem tanto. Você geralmente deseja que seu ambiente seja executado usando sua própria configuração. Uma solução melhor, ou pelo menos alternativa, pode ser executar explicitamente em /usr/bin/gsettingsvez de mexer PATH.
Mad Físico
Sim, concordo totalmente com você! Eu acho que, em geral, você deve estar ciente de como a PATHfonte é / aplicada.
austince
Resolveu meu problema no Ubuntu 18.04 resposta muito boa +1
Opt
Como isso está recebendo alguma força, acho que outra boa maneira seria manter a anaconda fora do seu caminho, se você estiver tendo conflitos e executando comandos python -m [command] [...args].
austince
Eu tive que atualizar isso no meu .bashrc também (.profile).
Barun 31/03
11

Eu encontrei a solução. Parece que obtive várias bibliotecas personalizadas /usr/local/libnessas bibliotecas de sistema "sombreadas" /usr/lib/x86_64-linux-gnu/.

Eu o descobri verificando bibliotecas dinâmicas carregadas por libdconfsettings.so:

ldd /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so

...
<  several dynamic libraries from /usr/local/lib >
...

Isso aconteceu devido à ordem dos caminhos de pesquisa para bibliotecas dinâmicas (definidas em /etc/ld.so.conf.d/). O pedido foi o seguinte:

  1. / lib / i386-linux-gnu
  2. / usr / lib / i386-linux-gnu
  3. / lib / i686-linux-gnu
  4. / usr / lib / i686-linux-gnu
  5. / usr / local / lib
  6. / lib / x86_64-linux-gnu
  7. / usr / lib / x86_64-linux-gnu

Assim, se por exemplo, você colocar o seu próprio libc.sopara /usr/local/libele será carregado em vez de padrão libc.sode /lib/x86_64-linux-gnu.

O conserto:

sudo mv /etc/ld.so.conf.d/libc.conf /etc/ld.so.conf.d/xuserlocal.conf
sudo ldconfig
sudo reboot
Dmitry
fonte
2
Obrigado, eu também tive esse problema, porque tentei desenvolver um patch para glib e executado sudo make install. sudo make uninstallresolveu o problema removendo as bibliotecas em/usr/local/lib/
mxmlnkn 26/04/16
1
+1. Realmente resolvido um problema semelhante surgiu após a instalação do Glib2.
111
2
O Linux Mint continuava voltando às configurações padrão e não respeitava as alterações que fiz e fiz o check-in duplo dconf-editor. Descobri que eu havia construído um pouco da fonte e sudo make installque eu não tinha ideia não me deixaria mudar meu plano de fundo, relógio ou outras configurações de canela. Estava me deixando louco. Link: forums.linuxmint.com/viewtopic.php?t=244360&start=20
RyanNerd
eu recebo esse erro! mv: não é possível stat '/etc/ld.so.conf.d/libc.conf': Esse arquivo ou diretório não existe e não tenho bibliotecas no meu / usr / loca / lib, exceto nos ambientes python que tenho no Anaconda. mas todo o problema começou quando instalei um novo pacote. e isso não acontece quando executo meu código no jupyter-notebook em vez do IDE!
Amir
@Amir A saída ldd é igual à descrição do problema? Provavelmente você tem outro problema.
Dmitry
7

Primeiro verifique se este comando retorna true:

gsettings writable com.canonical.Unity.Launcher favorites

Caso contrário, instale o back-end com:

sudo apt-get install dconf-gsettings-backend 

Se isso também não ajudar, redefina seu perfil com:

rm -rf ~/.gnome ~/.gnome2 ~/.gconf ~/.gconfd ~/.metacity .config/dconf/*

Depois reinicie.

Frantique
fonte
1
o primeiro comando retorna 'true' (junto com "using 'memory' backend"). Em relação à remoção da configuração do usuário: já tentei criar um perfil vazio e o problema persiste mesmo com a conta do usuário vazia.
Dmitry
Você tem o dconf-gsettings-backend instalado?
Frantique
Sim, o dconf-gsettings-backend está instalado (e reinstalado várias vezes).
Dmitry
Você mencionou um clique errado. Onde aconteceu isso?
Frantique
1
Obrigado pela sua resposta. Eu encontrei a solução (postado como uma resposta)
Dmitry
2

Só queria adicionar minha experiência pessoal nisso com o ubuntu 16.10. O meu parou de funcionar depois de usar o ambiente de área de trabalho GNOME por um tempo e depois mudar para o Unity para mostrar a um amigo como era desagradável (IMO: D) e voltar ao GNOME. Então comecei a obter o "... usando backend de memória ...".

Fazendo

rm -rf ~/.gnome ~/.gnome2 ~/.gconf ~/.gconfd ~/.metacity .config/dconf/*
sudo ldconfig
sudo reboot

Corrigido para mim.

Gavin Ridley
fonte
1
Observe que isso limpa toda a configuração da sua área de trabalho.
moorepants
1

Eu experimentei a mesma coisa no Debian Jessie. Mas a solução do questionador (ele falhou) foi adequada para o meu caso:

 sudo apt-get install -f --reinstall  dconf-tools libdconf0 libdconf-dbus-1-0 dconf-service

Esse problema estava me matando, mas você salvou minha vida, obrigado: D

user410988
fonte
0

Verifique se você possui o módulo que salva (libdconfsettings.so em / usr / lib / x86_64-linux-gnu / gio / modules / ou / usr / lib / gio / modules / ou onde quer que você armazene seus módulos GIO). No Ubuntu, esse arquivo é fornecido pelo pacote dconf-gsettings-backend; reinstalar esse deve ser suficiente ( sudo aptitude reinstall dconf-gsettings-backend).

RJVB
fonte
0

Isso funcionou para mim (e parece o mesmo problema do Python Anaconda levantado por Dmitry).

$ export GIO_EXTRA_MODULES=/usr/lib/x86_64-linux-gnu/gio/modules/

(Isso estava me impedindo de alterar as configurações do gsettings - principalmente as configurações da impressora para o Gedit.)

Fonte:

https://github.com/conda-forge/glib-feedstock/issues/19

marcação
fonte