我的dconf / gsettings安装已损坏。 如何在没有Ubuntu重新安装的情况下修复它?

我在VirtualBox中运行Ubuntu 12.04.1 LTS x64。 经过一次非常不幸的错误点击(重置保存状态而不是加载保存状态)后,我遇到了一个非常烦人的问题。

几乎所有应用程序(统一,突触,gedit等)都在打印时打印:

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

重启后重置所有GUI设置。

另一个症状:

 $ 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 

/usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so存在。


我尝试了什么(并没有帮助):

  • sudo apt-get install -f --reinstall dconf-tools libdconf0 libdconf-dbus-1-0 dconf-service
  • 从源代码构建dconf-0.5并make install
  • 创建空用户配置文件并在那里启动程序

我必须保持当前的Ubuntu安装,所以完全重新安装不是我的选择。

我该如何解决?

我找到了解决方案。 看来我在/usr/local/lib中有几个自定义库,它们从/usr/lib/x86_64-linux-gnu/ “隐藏”了系统库。

我通过检查libdconfsettings.so加载的动态库来发现它:

 ldd /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so ... < several dynamic libraries from /usr/local/lib > ... 

这是因为动态库的搜索路径顺序(在/etc/ld.so.conf.d/定义)。 订单如下:

  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

因此,例如,如果您将自己的libc.so放入/usr/local/lib ,则将从/lib/x86_64-linux-gnu加载而不是默认的libc.so

修复:

 sudo mv /etc/ld.so.conf.d/libc.conf /etc/ld.so.conf.d/xuserlocal.conf sudo ldconfig sudo reboot 

如果您与像Anaconda这样的Python环境管理器发生PATH冲突,也会发生这种情况。

确保在变得太深之前运行which gsettings 。 如果那不打印/usr/bin/gsettings而是像/home/{username}/anaconda3/bin/gsettings你可能有一些.profile类的:

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

将其更改为:
export PATH=$PATH:$HOME/anaconda3/bin

应用程序结束而不是预先添加到PATH变量将解决您的问题,但请注意,系统bin或其他PATH位置中的任何内容都将取代您的anaconda3/bin

首先检查此命令是否返回true

 gsettings writable com.canonical.Unity.Launcher favorites 

如果没有,请安装后端:

 sudo apt-get install dconf-gsettings-backend 

如果这也没有帮助,请重置您的个人资料:

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

然后重启。

只是想用ubuntu 16.10添加我的个人经验。 在使用GNOME桌面环境一段时间后,我停止工作,然后切换到Unity向朋友展示它看起来多么讨厌(IMO:D),然后回到GNOME。 然后我开始得到“……使用内存后端…”。

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

为我修好了。

我在Debian Jessie经历过同样的事情。 但提问者的解决方案(他已经失败了)适合我的情况:

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

这个问题一直在扼杀我,但是你救了我的命,谢谢:D