Моя установка dconf / gsettings порушена. Як я можу це виправити без перевстановлення Ubuntu?


24

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

Практично всі програми (юнит, синаптичність, gedit тощо) друкують при запуску:

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

І всі налаштування GUI скидаються після перезавантаження.

Ще один симптом:

$ 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-повідомленням, коли намагався використовувати gsettings для встановлення позиції Launcher. Я шукав по публікаціях форуму і спробував тут пропозиції, включаючи скидання конфігурації динамічного лінкера за допомогою ldconfig. Однак усунути проблему все не вдалося. Тоді повідомлення Дмитра змусило мене задуматися використовувати ldd для перевірки залежностей від спільного об'єкта 'gsettings', що змусило мене дізнатись, який виконуваний файл я використовував. За допомогою версії в / 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

3
Перша частина (біг which) - відмінна порада. Друга частина, не так вже й багато. Ви, як правило, хочете, щоб ваше середовище працювало за допомогою власних налаштувань. Кращим або, принаймні, альтернативним рішенням може бути явний запуск, /usr/bin/gsettingsа не возитися PATH.
Божевільний фізик

Так, повністю з вами згоден! Я думаю, що в цілому, ви, як правило, повинні бути обізнані про те, як використовується PATHджерело / застосовано.
austince

Це вирішило мою проблему в Ubuntu 18.04, дуже приємна відповідь +1
Opt

Оскільки це отримує деяку тягу, я думаю, що ще одним хорошим способом може бути те, щоб анаконда не була на шляху, якщо у вас виникають конфлікти та виконуються команди python -m [command] [...args]замість цього.
austince

Мені довелося це оновити і в моєму .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. / 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

2
Дякую, у мене теж була ця проблема, тому що я намагався розробити патч для glib та виконаний sudo make install. sudo make uninstallвирішили проблему, видаливши ці бібліотеки на/usr/local/lib/
mxmlnkn

1
+1. Дійсно вирішена аналогічна проблема, яка виникла після встановлення Glib2.
111

2
Linux Mint постійно повертався до налаштувань за замовчуванням і не поважав жодних змін, які я вніс і двічі зареєстрував dconf-editor. Виявилося, що я створив гліб із джерела, і sudo make installщо я не мав уявлення, він не дозволить мені змінити тло, годинник чи інші налаштування кориці. Загнав мене горіхом. Заднє посилання: forums.linuxmint.com/viewtopic.php?t=244360&start=20
RyanNerd

я отримую цю помилку! mv. але вся проблема почалася, коли я встановив новий пакет. і це не відбувається, коли я запускаю свій код на ноутбук jupyter замість 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/*

Після цього перезавантажте.


1
перша команда повертає "true" (разом із "використанням" пам'яті "backkend"). Щодо видалення конфігурації користувача: я вже намагався створити порожній профіль, і проблема не зникає навіть із порожнім обліковим записом користувача.
Дмитро

У вас встановлений dconf-gsettings-backkend?
Франтик

Так, dconf-gsettings-backkend встановлюється (і перевстановлюється кілька разів).
Дмитро

Ви згадали про помилку. Де це сталося?
Франтик

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

Я пережив те ж саме у Дебіана Джессі. Але рішення запитувача (він не вдався до цього) було правильним для моєї справи:

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

Ця проблема мене вбивала, але ти врятував мені життя, Дякую: D


0

Переконайтеся, що у вас є модуль, який виконує збереження (libdconfsettings.so в / usr / lib / x86_64-linux-gnu / gio / module / або / usr / lib / gio / module / або де б ви не зберігали свої GIO модулі). На Ubuntu цей файл надається пакетом dconf-gsettings-backkend; перевстановлення цього має вистачити ( sudo aptitude reinstall dconf-gsettings-backend).


0

Це працювало для мене (і це схоже на ту саму проблему з Анатондою Python, яку підняв Дмитро).

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

(Це змусило мене не в змозі змінити gsettings - особливо налаштування принтера для Gedit.)

Джерело:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.