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


24

我在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安装,因此完全重新安装对我来说不是一个选择。

我该如何解决?


1
尝试使用gsettings设置启动器位置时,我遇到了相同的GLib-GIO-Message。我在论坛的帖子中进行了搜索,并尝试了此处的建议,包括使用ldconfig重置动态链接器配置。但是,所有人都无法解决问题。然后,Dmitry的帖子让我开始考虑使用ldd检查“ gsettings”共享对象的依赖性,这使我发现我正在使用的可执行文件来自Anaconda安装中的可执行文件。通过使用/ usr / bin中的版本解决了该问题。
panna'8

Answers:


23

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

确保运行which gsettings之前不要太深。如果那没有打印出来/usr/bin/gsettings,而是类似/home/{username}/anaconda3/bin/gsettings您可能有的东西.profile/ .bashrc/.zshrc这样的:

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

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

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

另一种选择是别名/usr/bin/gsettings

alias sys-gsettings=/usr/bin/gsettings
sys-gsettings get org.gnome.todo view

3
第一部分(运行which)是出色的建议。第二部分,没有那么多。通常,您希望您的环境使用其自己的设置运行。更好的(至少是替代方法)解决方案可能是显式运行/usr/bin/gsettings而不是弄乱PATH
疯狂物理学家

是的,完全同意您的看法!我认为总体而言,您通常应该了解PATH来源/应用方式。
奥斯汀

它解决了我在Ubuntu 18.04中的问题,非常好回答+1
Opt

既然这引起了一定的吸引力,我认为另一种好方法可能是在遇到冲突并运行命令时将anaconda挡在道路之外python -m [command] [...args]
奥斯汀

我也必须在.bashrc(.profile)中进行更新。
巴伦

11

我找到了解决方案。看来在的/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

因此,例如,如果您将自己的文件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

2
谢谢,我也遇到了这个问题,因为我试图为glib开发一个补丁并执行了sudo make installsudo make uninstall通过在/usr/local/lib/
mxmlnkn '16

1
+1。真正解决了安装Glib2之后出现的类似问题。
111

2
Linux Mint一直返回到默认设置,并且不尊重我所做的任何更改并再次检入dconf-editor。原来,我是从源代码构建的glib sudo make install,我不知道不会让我更改背景或时钟或其他肉桂设置。让我发疯。反向链接:forums.linuxmint.com/viewtopic.php?t=244360&start=20
RyanNerd

我得到这个错误!mv:无法统计'/etc/ld.so.conf.d/libc.conf':没有这样的文件或目录,除了我在Anaconda上使用的python环境之外,/ usr / loca / lib中没有任何库。但是当我安装一个新的软件包时,整个问题就开始了。当我在jupyter-notebook而不是IDE上运行代码时,它不会发生!
阿米尔(Amir)

@Amir ldd输出与问题描述中的输出相同吗?可能您还有另一个问题。
德米特里(Dmitry)

7

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

gsettings writable com.canonical.Unity.Launcher favorites

如果不是,请使用以下命令安装后端:

sudo apt-get install dconf-gsettings-backend 

如果这也无济于事,请使用以下方法重置您的个人资料:

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

之后重新启动。


1
第一条命令返回“ true”(以及“使用'memory'后端”)。关于删除用户配置:我已经尝试创建一个空的配置文件,即使用户帐户为空,问题仍然存在。
德米特里(Dmitry)

您是否已安装dconf-gsettings-backend?
Frantique 2014年

是的,dconf-gsettings-backend已安装(并重新安装了几次)。
德米特里(Dmitry)2014年

您提到了误点击。哪里发生的
Frantique 2014年

1
感谢您的回答。我找到了解决方案(作为答案发布)
德米特里(Dmitry

2

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

在做

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

为我修复。


1
请注意,这会擦除桌面的所有配置。
moorepants

1

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

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

这个问题一直在杀死我,但您救了我的命,谢谢:D


0

确保您具有进行保存的模块(/ usr / lib / x86_64-linux-gnu / gio / modules /或/ usr / lib / gio / modules /中的libdconfsettings.so或存储GIO模块的任何位置)。在Ubuntu上,该文件由dconf-gsettings-backend软件包提供;重新安装一个就足够了(sudo aptitude reinstall dconf-gsettings-backend)。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.