Moja instalacja dconf / gsettings jest zepsuta. Jak mogę to naprawić bez ponownej instalacji Ubuntu?

24

Korzystam z Ubuntu 12.04.1 LTS x64 w VirtualBox. Po jednym bardzo niefortunnym błędnym kliknięciu (zresetowanie stanu zapisanego zamiast ładowania stanu zapisanego) mam bardzo irytujący problem.

Prawie wszystkie aplikacje (jedność, synaptic, gedit itp.) Drukują przy starcie:

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

Wszystkie ustawienia GUI resetują się po ponownym uruchomieniu.

Kolejny objaw:

$ 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

Ale /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.sojest obecny.


Co próbowałem (i to nie pomogło):

  • sudo apt-get install -f --reinstall dconf-tools libdconf0 libdconf-dbus-1-0 dconf-service
  • Zbuduj dconf-0.5 ze źródeł i make installto
  • Utwórz pusty profil użytkownika i uruchom tam programy

Muszę zachować bieżącą instalację systemu Ubuntu, więc pełna reinstalacja nie jest dla mnie opcją.

Jak mogę to naprawić?

Dmitry
źródło
1
Napotkałem ten sam komunikat GLib-GIO podczas próby użycia ustawień gset do ustawienia pozycji Launchera. Przeszukałem posty na forum i wypróbowałem tutaj sugestie, w tym zresetowałem konfigurację dynamicznego linkera za pomocą ldconfig. Jednak wszystko nie mogło rozwiązać problemu. Potem post Dmitry'ego skłonił mnie do użycia ldd do sprawdzenia zależności współdzielonych obiektów „gsettings”, co spowodowało, że dowiedziałem się, że plik wykonywalny, którego używałem, pochodzi z instalacji Anacondy. Za pomocą wersji w / usr / bin rozwiązano problem.
panna

Odpowiedzi:

23

Może się to również zdarzyć, jeśli masz PATHkonflikty z menedżerem środowiska Python, takim jak Anaconda.

Upewnij się, że biegniesz, which gsettingszanim przejdziesz zbyt głęboko. Jeśli to nie zostanie wydrukowane, /usr/bin/gsettingsa zamiast tego coś takiego /home/{username}/anaconda3/bin/gsettings, prawdopodobnie masz coś .profile/ .bashrc/ .zshrclike:

export PATH=$HOME/anaconda3/bin:$PATH

Zmień na:
export PATH=$PATH:$HOME/anaconda3/bin

Aplikacja kończąca się przed wstępnym wprowadzeniem do PATHzmiennej rozwiąże problem, ale pamiętaj, że wszystko w twoim systemie binlub w innych PATHlokalizacjach zastąpi twój anaconda3/bin.

Inną opcją może być alias /usr/bin/gsettings:

alias sys-gsettings=/usr/bin/gsettings
sys-gsettings get org.gnome.todo view
austince
źródło
3
Pierwsza część (bieganie which) to doskonała rada. Druga część, nie tyle. Zasadniczo chcesz, aby twoje środowisko działało przy użyciu własnej konfiguracji. Lepszym, a przynajmniej alternatywnym rozwiązaniem może być jawne uruchomienie /usr/bin/gsettingszamiast bałagania się PATH.
Mad Physicist
Tak, całkowicie się z tobą zgadzam! Myślę, że ogólnie powinieneś ogólnie wiedzieć, w jaki sposób PATHjest to źródło / zastosowanie.
austince,
To rozwiązało mój problem w Ubuntu 18.04 bardzo ładna odpowiedź +1
Opt
Ponieważ zyskuje to na pewnej przyczepności, myślę, że innym dobrym sposobem może być trzymanie anakondy na swojej drodze, jeśli masz konflikty i python -m [command] [...args]zamiast tego uruchamiasz polecenia .
austince
Musiałem również zaktualizować to w moim .bashrc (.profile).
Barun
11

Znalazłem rozwiązanie. Wygląda na to, że dostałem kilka niestandardowych bibliotek z /usr/local/lib„ukrytych” bibliotek systemowych /usr/lib/x86_64-linux-gnu/.

Odkryłem to, sprawdzając biblioteki dynamiczne ładowane przez libdconfsettings.so:

ldd /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings.so

...
<  several dynamic libraries from /usr/local/lib >
...

Stało się tak z powodu kolejności ścieżek wyszukiwania bibliotek dynamicznych (zdefiniowanych w /etc/ld.so.conf.d/). Kolejność była następująca:

  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

Więc jeśli na przykład umieścić własne libc.sona /usr/local/libzostanie on załadowany zamiast domyślnie libc.sood /lib/x86_64-linux-gnu.

Poprawka:

sudo mv /etc/ld.so.conf.d/libc.conf /etc/ld.so.conf.d/xuserlocal.conf
sudo ldconfig
sudo reboot
Dmitry
źródło
2
Dzięki, miałem również ten problem, ponieważ próbowałem opracować łatkę dla glib i wykonać sudo make install. sudo make uninstallrozwiązał problem, usuwając te biblioteki z/usr/local/lib/
mxmlnkn
1
+1. Naprawdę rozwiązany podobny problem pojawił się po instalacji Glib2.
111
2
Linux Mint wracał do ustawień domyślnych i nie przestrzegał żadnych zmian, które wprowadziłem i dwukrotnie się zalogowałem dconf-editor. Okazało się, że zbudowałem glib ze źródła i sudo make installnie miałem pojęcia, że ​​nie pozwoli mi zmienić tła, zegara ani innych ustawień cynamonu. Doprowadzał mnie do szału. Powrót link: forums.linuxmint.com/viewtopic.php?t=244360&start=20
RyanNerd
dostaję ten błąd! mv: nie można stat '/etc/ld.so.conf.d/libc.conf': Nie ma takiego pliku ani katalogu i nie mam żadnych bibliotek w moim / usr / loca / lib z wyjątkiem środowisk pythonowych, które mam na Anaconda. ale cały problem zaczął się, gdy zainstalowałem nowy pakiet. i nie dzieje się tak, gdy uruchamiam mój kod na jupyter-notebook zamiast IDE!
Amir
@Amir Czy wyjście ldd jest takie samo jak w opisie problemu? Prawdopodobnie masz inny problem.
Dmitry
7

Najpierw sprawdź, czy to polecenie zwraca true:

gsettings writable com.canonical.Unity.Launcher favorites

Jeśli nie, zainstaluj backend z:

sudo apt-get install dconf-gsettings-backend 

Jeśli to nie pomoże, zresetuj swój profil za pomocą:

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

Następnie uruchom ponownie komputer.

Frantique
źródło
1
pierwsze polecenie zwraca „prawda” (wraz z „używaniem backendu pamięci”). Jeśli chodzi o usunięcie konfiguracji użytkownika: próbowałem już utworzyć pusty profil, a problem nie ustępuje nawet przy pustym koncie użytkownika.
Dmitry,
Czy masz zainstalowany program dconf-gsettings-backend?
Frantique,
Tak, dconf-gsettings-backend jest zainstalowany (i kilkakrotnie instalowany).
Dmitry
Wspomniałeś o błędnym kliknięciu. Gdzie to się stało?
Frantique,
1
Dzięki za odpowiedź. Znalazłem rozwiązanie (opublikowane jako odpowiedź)
Dmitry
2

Chciałem tylko dodać do tego moje osobiste doświadczenia z Ubuntu 16.10. Mój przestał działać po pewnym czasie korzystania ze środowiska graficznego GNOME, a następnie przejściu do Unity, aby pokazać znajomemu, jak okropnie wyglądało (IMO: D), i wrócił do GNOME. Potem zacząłem otrzymywać „… za pomocą backendu pamięci…”.

Robić

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

Naprawiłem to dla mnie.

Gavin Ridley
źródło
1
Pamiętaj, że spowoduje to wyczyszczenie całej konfiguracji pulpitu.
moorepants
1

Tego samego doświadczyłem w Debian Jessie. Ale rozwiązanie pytającego (z nim się nie udało) było właściwe w mojej sprawie:

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

Ten problem mnie zabijał, ale uratowałeś mi życie, Dzięki: D

użytkownik410988
źródło
0

Upewnij się, że masz moduł zapisujący (libdconfsettings.so w / usr / lib / x86_64-linux-gnu / gio / modules / lub / usr / lib / gio / modules / lub gdziekolwiek przechowujesz moduły GIO). W Ubuntu plik ten jest dostarczany przez pakiet dconf-gsettings-backend; ponowna instalacja tego powinna wystarczyć ( sudo aptitude reinstall dconf-gsettings-backend).

RJVB
źródło
0

To zadziałało dla mnie (i wygląda na ten sam problem Python Anaconda podniesiony przez Dmitry'ego).

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

(Powodowało to, że nie mogłem zmienić ustawień ustawień - szczególnie ustawień drukarki dla Gedit.)

Źródło:

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

markling
źródło