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

Modified on: Thu, 14 Jun 2018 06:12:53 +0800

我在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 it
  • 创建空用户个人资料并在那里启动程序

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

我该如何解决?

作者:muru,Dmitry

最佳答案

我找到了解决方案。看来我在/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 /本地/ lib中强>
  6. / LIB / x86_64的-Linux的GNU 强>
  7. / usr / lib中/ x86_64的-Linux的GNU
  8. 醇>

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

    修复:

    sudo mv /etc/ld.so.conf.d/libc.conf /etc/ld.so.conf.d/xuserlocal.conf
    sudo ldconfig
    sudo reboot
    
作者:Dmitry

相关问答

添加新评论