26

I run Ubuntu 12.04.1 LTS x64 in VirtualBox. After one very unfortunate misclick (reset saved state instead of load saved state) I got a very annoying problem.

Almost all applications (unity, synaptic, gedit, etc.) print on start:

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

And all GUI settings reset after reboot.

Another symptom:

$ 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

But /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so is present.


What I tried (and it didn't help):

  • sudo apt-get install -f --reinstall dconf-tools libdconf0 libdconf-dbus-1-0 dconf-service
  • Build dconf-0.5 from sources and make install it
  • Create empty user profile and start programs there

I have to keep current Ubuntu installation so a complete reinstall is not an option for me.

How can I fix it?

muru
  • 197,895
  • 55
  • 485
  • 740
Dmitry
  • 2,209
  • 1
    I encountered the same GLib-GIO-Message when trying to use gsettings to set the Launcher position. I searched thru the forum's posts and tried the suggestions here including resetting dynamic linker configuration using ldconfig. However, all could not fix the problem. Then Dmitry's post got me thinking to use ldd to check 'gsettings' shared object dependencies, which caused me to find out the executable I was using came from that in Anaconda's installation. By using the version in /usr/bin resolved the issue. – panna Aug 07 '17 at 04:56

7 Answers7

34

This can also happen if you have PATH conflicts with a Python enviroment manager like Anaconda.

Make sure to run which gsettings before getting too deep. If that doesn't print /usr/bin/gsettings and instead something like /home/{username}/anaconda3/bin/gsettings you probably have something .profile/.bashrc/.zshrc like:

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

Change it to:
export PATH=$PATH:$HOME/anaconda3/bin

Appending instead of preprending to the PATH variable will solve your issue, but be aware that anything in your system bin, or other PATH locations, will supersede your anaconda3/bin.

Another option would be to alias /usr/bin/gsettings:

alias sys-gsettings=/usr/bin/gsettings
sys-gsettings get org.gnome.todo view
austin_ce
  • 441
  • 1
  • 4
  • 7
  • 7
    The first part (running which) is excellent advice. The second part, not so much. You generally want your environment to run using its own setup. A better, or at least alternative, solution might be to explicitly run /usr/bin/gsettings instead of messing with PATH. – Mad Physicist May 14 '18 at 18:20
  • Yup, totally agree with you! I think overall, you should generally be aware of how the PATH is source/applied. – austin_ce Jul 09 '18 at 15:31
  • It solved my problem in Ubuntu 18.04 very nice answer +1 – rasul Sep 26 '18 at 03:56
  • Since this is getting some traction, I think another good way might be to keep anaconda out of your path if you are having conflicts and run commands with python -m [command] [...args] instead. – austin_ce Oct 02 '18 at 14:19
  • I had to update this in my .bashrc as well (.profile). – Barun Mar 31 '19 at 07:31
11

I've found the solution. It appears that I got several custom-built libraries in /usr/local/lib that "shadowed" system libraries from /usr/lib/x86_64-linux-gnu/.

I discovered it by checking dynamic libraries loaded by libdconfsettings.so:

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

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

It happened because of the order of search paths for dynamic libraries (defined in /etc/ld.so.conf.d/). The order was the following:

  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

So if for example you put your own libc.so into /usr/local/lib it will be loaded instead of default libc.so from /lib/x86_64-linux-gnu.

The fix:

sudo mv /etc/ld.so.conf.d/libc.conf /etc/ld.so.conf.d/xuserlocal.conf
sudo ldconfig
sudo reboot
Dmitry
  • 2,209
  • 2
    Thanks, I also had this problem, because I tried to develop a patch for glib and executed sudo make install. sudo make uninstall solved the problem by removing those libraries at /usr/local/lib/ – mxmlnkn Apr 26 '16 at 11:11
  • 1
    +1. Really solved a similar problem came up after installation of Glib2. – 111 Oct 05 '16 at 22:55
  • 2
    Linux Mint kept going back to default settings and not respecting any changes I made and double checked in dconf-editor. Turned out that I had built glib from source and sudo make install which I had no idea would not let me change my background or clock, or other cinnamon settings. Was driving me nuts. Back link: https://forums.linuxmint.com/viewtopic.php?t=244360&start=20 – RyanNerd Jun 08 '17 at 02:06
  • i get this error! mv: cannot stat '/etc/ld.so.conf.d/libc.conf': No such file or directory and i do not have any libraries in my /usr/loca/lib except the python environments i have on Anaconda. but the whole problem started when i installed a new package. and it does not happen when i run my code on jupyter-notebook instead of IDE! – Amir Jul 20 '17 at 21:53
  • @Amir Does ldd output is the same as in issue description? Probably you have another issue. – Dmitry Jul 21 '17 at 11:38
  • @mxmlnkn you should post your answer as the correct answer as that worked for me and was quite simple. If you could explain what happened when I did a sudo make install of the most current glib library why it messed everything up?... – flyingdrifter Jan 21 '18 at 17:04
7

First check if this command returns true:

gsettings writable com.canonical.Unity.Launcher favorites

If not, install the backend with:

sudo apt-get install dconf-gsettings-backend 

If this doesn't help either, reset your profile with:

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

Afterwards reboot.

Frantique
  • 8,493
2

Just wanted to add my personal experience on this with ubuntu 16.10. Mine stopped working after using GNOME desktop environment for a while, and then switching to Unity to show a friend how nasty it looked (IMO :D), and back to GNOME. I then started getting the "...using memory backend...".

Doing

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

Fixed it for me.

1

I experienced same thing in Debian Jessie. But questioner's solution (he had failed with it) was proper for my case:

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

This problem had been killing me, but you saved my life, Thanks :D

Zanna
  • 70,465
0

Make sure you have the module that does the saving (libdconfsettings.so in /usr/lib/x86_64-linux-gnu/gio/modules/ or /usr/lib/gio/modules/ or wherever you store your GIO modules). On Ubuntu that file is provided by the dconf-gsettings-backend package; reinstalling that one should suffice (sudo aptitude reinstall dconf-gsettings-backend).

RJVB
  • 211
  • 2
  • 10
0

This worked for me (and it does look like the same Python Anaconda issue raised by Dmitry).

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

(It was causing me to be unable to change gsettings - particularly printer settings for Gedit.)

Source:

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

markling
  • 582
  • 8
  • 34