web-dev-qa-db-ja.com

dconf / gsettingsのインストールが壊れています。 Ubuntuを再インストールせずに修正するにはどうすればよいですか?

VirtualBoxでUbuntu 12.04.1 LTS x64を実行しています。非常に不幸なミスクリック(保存された状態をロードする代わりに保存された状態をリセットする)の後、非常に厄介な問題が発生しました。

ほぼすべてのアプリケーション(ユニティ、シナプス、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 it
  • 空のユーザープロファイルを作成し、そこでプログラムを開始します

現在のUbuntuのインストールを維持する必要があるため、完全な再インストールは選択肢ではありません。

どうすれば修正できますか?

22
Dmitry

私は解決策を見つけました。 /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-gn
  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
11
Dmitry

これは、AnacondaのようなPython環境マネージャーとPATHの競合がある場合にも発生する可能性があります。

深くなりすぎる前に、必ずwhich gsettingsを実行してください。 /usr/bin/gsettingsが表示されず、代わりに/home/{username}/anaconda3/bin/gsettingsのようなものが表示されない場合は、おそらく.profileのようなものがあります。

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

次のように変更します。
export PATH=$PATH:$HOME/anaconda3/bin

Appの代わりに終了prePATH変数にペンディングすると問題が解決しますが、システム内の何かbin、または他のPATH場所は、anaconda3/binに優先します。

別のオプションは、/usr/bin/gsettingsをエイリアスすることです。

alias sys-gsettings=/usr/bin/gsettings
sys-gsettings get org.gnome.todo view
18
austince

最初に、このコマンドがtrueを返すかどうかを確認します。

gsettings writable com.canonical.Unity.Launcher favorites

そうでない場合は、次を使用してバックエンドをインストールします。

Sudo apt-get install dconf-gsettings-backend 

これでも解決しない場合は、次を使用してプロファイルをリセットします。

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

その後、再起動します。

7
Frantique

Ubuntu 16.10でこれに関する個人的な経験を追加したかっただけです。私はしばらくGNOMEデスクトップ環境を使用して動作を停止し、Unityに切り替えて、友人に見た目がいかに悪いか(IMO:D)を表示し、GNOMEに戻りました。その後、「...メモリバックエンドを使用...」の取得を開始しました。

やること

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

私のためにそれを修正しました。

2
Gavin Ridley

Debian Jessieでも同じことを経験しました。しかし、質問者の解決策(彼はそれで失敗しました)は私の場合には適切でした:

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

この問題は私を殺していたが、あなたは私の命を救った、ありがとう:D

1
user410988

これは私にとってはうまくいきました(そして、Dmitryが提起したPython Anacondaの問題と同じように見えます)。

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

(これにより、gsettings-特にGeditのプリンター設定を変更できなくなりました。)

ソース:

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

0
markling

保存するモジュールがあることを確認してください(/ usr/lib/x86_64-linux-gnu/gio/modules /または/ usr/lib/gio/modules /のlibdconfsettings.soまたはGIOモジュールを保存する場所)。 Ubuntuでは、このファイルはdconf-gsettings-backendパッケージによって提供されます。再インストールすれば十分です(Sudo aptitude reinstall dconf-gsettings-backend)。

0
RJVB