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

24

Я запускаю 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
Я столкнулся с тем же GLib-GIO-Message, когда пытался использовать gsettings для установки положения Launcher. Я просмотрел сообщения на форуме и попробовал предложения, в том числе сброс настроек динамического компоновщика с помощью ldconfig. Однако все не смогли решить проблему. Затем сообщение Дмитрия заставило меня задуматься о том, чтобы использовать ldd для проверки зависимостей общего объекта 'gsettings', из-за чего я узнал, что используемый мной исполняемый файл получен в результате установки Anaconda. Использование версии в / usr / bin решило проблему.
Панна

Ответы:

23

Это также может произойти, если у вас есть 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
austince
источник
3
Первая часть (бег which) это отличный совет. Вторая часть не такая уж и большая. Как правило, вы хотите, чтобы ваша среда работала с собственной установкой. Лучшим или, по крайней мере, альтернативным решением может быть явное выполнение /usr/bin/gsettingsвместо того, чтобы связываться с ним PATH.
Безумный физик
Да, полностью согласен с вами! В целом, я думаю, вы должны знать, как PATHисточник / применяется.
августа
Это решило мою проблему в Ubuntu 18.04, очень хороший ответ +1
Опт
Так как это набирает обороты, я думаю, что другим хорошим способом может быть предотвращение анаконды, если у вас возникают конфликты и 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. / Библиотека / 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
Дмитрий
источник
2
Спасибо, у меня тоже была эта проблема, потому что я попытался разработать патч для glib и выполнил sudo make install. sudo make uninstallрешил проблему, удалив эти библиотеки в/usr/local/lib/
mxmlnkn
1
+1. Реально решилась подобная проблема, возникшая после установки Glib2.
111
2
Linux Mint продолжал возвращаться к настройкам по умолчанию и не соблюдая каких - либо изменений , которые я сделал и перепроверили в dconf-editor. Оказалось, что я построил glib из исходного кода, и sudo make installя понятия не имел, что не позволит мне изменить фон, часы или другие настройки корицы. Сводил меня с ума. Обратная ссылка: forums.linuxmint.com/viewtopic.php?t=244360&start=20
RyanNerd
я получаю эту ошибку! mv: not stat '/etc/ld.so.conf.d/libc.conf': нет такого файла или каталога, и у меня нет никаких библиотек в моем / usr / loca / lib, кроме тех сред python, которые есть в Anaconda. но вся проблема началась, когда я установил новый пакет. и это не происходит, когда я запускаю свой код на jupyter-notebook вместо IDE!
Амир,
@Amir Вывод ldd такой же, как в описании проблемы? Вероятно, у вас есть другая проблема.
Дмитрий
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/*

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

Frantique
источник
1
первая команда возвращает true (наряду с «использованием« backend памяти »). Что касается удаления пользовательской конфигурации: я уже пытался создать пустой профиль, и проблема сохраняется даже при пустой учетной записи пользователя.
Дмитрий
У вас установлен dconf-gsettings-backend?
Frantique
Да, dconf-gsettings-backend установлен (и переустановлен несколько раз).
Дмитрий
Вы упомянули ошибку. Где это случилось?
Frantique
1
Спасибо за Ваш ответ. Я нашел решение (опубликовано как ответ)
Дмитрий
2

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

дела

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

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

Гэвин Ридли
источник
1
Обратите внимание, что это стирает всю конфигурацию для вашего рабочего стола.
морепанты
1

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

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

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

user410988
источник
0

Убедитесь, что у вас есть модуль, который выполняет сохранение (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).

RJVB
источник
0

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

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

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

Источник:

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

markling
источник