Моя установка 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, поэтому полная переустановка не вариант для меня.

Как я могу это исправить?

7 ответов

Решение

Я нашел решение. Похоже, я получил несколько пользовательских библиотек в /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. / Библиотека /i386-Linux-гну
  2. / USR / Библиотека /i386-Linux-гну
  3. / Библиотека / i686-Linux-гну
  4. / USR / Библиотека / i686-Linux-гну
  5. / USR / местные / Библиотека
  6. / Библиотека / x86_64-Linux-гну
  7. / USR / Библиотека / x86_64-Linux-гну

Так что если, например, вы положили свой собственный 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

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

Не забудьте запустить which gsettings прежде чем стать слишком глубоким. Если это не печатает /usr/bin/gsettings и вместо этого что-то вроде /home/{username}/anaconda3/bin/gsettings у тебя наверное что то есть .profile лайк:

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

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

gsettings writable com.canonical.Unity.Launcher favorites

Если нет, установите бэкэнд с:

sudo apt-get install dconf-gsettings-backend 

Если это тоже не поможет, сбросьте свой профиль с помощью:

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

После перезагрузки.

Просто хотел добавить свой личный опыт в этом с Ubuntu 16.10. Мой перестал работать после использования среды рабочего стола GNOME на некоторое время, а затем переключился на Unity, чтобы показать другу, как это неприятно выглядело (IMO:D), и вернулся к GNOME. Затем я начал получать "... используя память...".

дела

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

Исправил это для меня.

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

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

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

Это сработало для меня (и похоже на ту же проблему с Python Anaconda, которую поднял Дмитрий).

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

(Это приводило к тому, что я не мог изменить настройки - особенно настройки принтера для Gedit.)

Источник:

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

Убедитесь, что у вас есть модуль, который выполняет сохранение (libdconfsettings.so в /usr/lib/x86_64-linux-gnu/gio/modules/ или / usr / lib / gio / modules / или где бы вы ни хранили свои модули GIO). В Ubuntu этот файл предоставляется пакетом dconf-gsettings-backend; переустановить что то должно хватить (sudo aptitude reinstall dconf-gsettings-backend).

Другие вопросы по тегам