My dconf/gsettings installation is broken. How can I fix it without Ubuntu reinstall?
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
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:
- /lib/i386-linux-gnu
- /usr/lib/i386-linux-gnu
- /lib/i686-linux-gnu
- /usr/lib/i686-linux-gnu
- /usr/local/lib
- /lib/x86_64-linux-gnu
- /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
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.