Моя установка dconf/gsettings сломана. Как это исправить без переустановки Ubuntu?

Моя установка dconf/gsettings сломана. Как это исправить без переустановки Ubuntu?

Я запускаю Ubuntu 12.04.1 LTS x64 в VirtualBox. После одного очень неудачного щелчка (сброс сохраненного состояния вместо загрузки сохраненного состояния) у меня возникла очень раздражающая проблема.

Почти все приложения (Unity, Synaptic, Gedit и т. д.) при запуске выводят:

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

И все настройки графического интерфейса сбрасываются после перезагрузки.

Еще один симптом:

$ 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

Это также может произойти, если у вас возникли PATHконфликты с менеджером среды Python, например Anaconda.

Убедитесь, что вы запустили 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

решение2

Я нашел решение. Похоже, что я получил несколько специально созданных библиотек в /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он будет загружен вместо файла по умолчанию 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

решение3

Сначала проверьте, возвращает ли эта команда true:

gsettings writable com.canonical.Unity.Launcher favorites

Если нет, установите бэкэнд с помощью:

sudo apt-get install dconf-gsettings-backend 

Если это не поможет, сбросьте настройки профиля:

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

После этого перезагрузите компьютер.

решение4

Я столкнулся с тем же в Debian Jessie. Но решение спрашивающего (у него с этим не получилось) было правильным для моего случая:

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

Эта проблема убивала меня, но ты спас мне жизнь. Спасибо :D

Связанный контент