最近、xubuntu 14.04からxubuntu 16.04にアップグレードしました。プロセスは終了しましたが、スムーズに進みませんでした(理由は覚えていません)。
これでfirefox
でファイルを開くと(File-> Open File)、プロセスは次のエラーでクラッシュします。
... GLib-GIO-ERROR **: Settings schema 'org.gtk.Settings.FileChooser' does not contain a key named 'sort-directories-first'
Webを検索したところ、関連するものは見つかりませんでした。 firefox
、gsettings-desktop-schemas
、およびgsettings-ubuntu-schemas
(apt-get install --reinstall ...
を使用)を再インストールしても何も変わりませんでした。スキーマの再構築も試みましたが、エラーは常に同じです。
Sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
(そうではない)面白いことは、キーが存在するということです!
grep sort-directories-first /usr/share/glib-2.0/schemas/*
Binary file /usr/share/glib-2.0/schemas/gschemas.compiled matches
/usr/share/glib-2.0/schemas/org.gnome.nautilus.gschema.xml: <key type="b" name="sort-directories-first">
/usr/share/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml: <key type="b" name="sort-directories-first">
最後に、手動でキーを作成してみました。 gsettings
では、キーが存在しないと文句を言います。
gsettings set org.gtk.Settings.FileChooser sort-directories-first false
Not such key 'sort-directories-first'
dconf
を使用すると、そのキーを作成できますが、何も変更されません。
dconf write /org/gtk/settings/file-chooser/sort-directories-first false
ファイル/usr/share/glib-2.0/schemas/org.gtk.Settings.FileChooser.gschema.xml
が存在し、目的のキーsort-directories-first
が含まれています。
WinEunuuchs2Unixの回答から、システムはXDG_DATA_DIRS
環境変数の値に応じた場所でファイルを検索することがわかります。
それでは、システムが別の場所でorg.gtk.Settings.FileChooser.gschema.xml
を探すとどうなりますか?
エラーメッセージは、システムがファイルを見つけられないことを教えてくれません。メッセージは、システムがファイル内のキーを見つけられないことを教えてくれます。これにより、システムのどこかにorg.gtk.Settings.FileChooser.gschema.xml
という名前の2番目のファイルがあり、このファイルに目的のキーが含まれていないことを確認できます。
回避策として、org.gtk.Settings.FileChooser.gschema.xml
という名前のファイルを検索することをお勧めします。複数のファイルが見つかるはずです。目的のキーが含まれている場合は別の場所にあるそのファイルの内容を確認しますが、含まれていません。
からコピー
/usr/share/glib-2.0/schema/org.gtk.Settings.FileChooser.gschema.xml
ターミナルのXDG_DATA_DIRS
でecho $XDG_DATA_DIRS
の値を確認できます。これにより、ファイルを検索する場所がわかります。
XDG_DATA_DIRS
の値を設定する方法を見つけることができませんでした。値は起動時にbashスクリプトによって設定されますが、見つかった情報は古くなっているように見えました。
あなたの問題は this バグに関連している可能性があります。Googleはあなたの問題についてネットを検索しながらこのリンクに私を導きます。
ほんの少しの背景:
glib-compile-schemasDIRECTORY
内のすべてのGSettings XMLスキーマファイルを、GSettingsで使用できるgschemas.compiled
という名前のバイナリファイルにコンパイルします。 XMLスキーマファイルには、ファイル名拡張子.gschema.xml
が必要です。 XMLファイル形式の詳細な説明については、GSettingsのドキュメントを参照してください。
実行時に、GSettingsはglib-2.0/schemas
環境変数で指定されたすべてのディレクトリのXDG_DATA_DIRS
サブディレクトリでスキーマを探します。スキーマファイルをインストールする通常の場所は/usr/share/glib-2.0/schemas
です。
スキーマファイルに加えて、glib-compile-schemasは「ベンダーオーバーライド」ファイルを読み取ります。これは、スキーマ内のキーのデフォルト値をオーバーライドできるキーファイルです。キーファイルのグループ名はスキーマIDであり、値はシリアル化されたGVariant形式で書き込まれます。ベンダーオーバーライドファイルには、ファイル名拡張子.gschema.override
が必要です。
慣例により、ベンダーオーバーライドファイルはnn_
で始まります。ここで、nn
は00から99までの数字です。数字の大きいファイルほど優先順位が高くなります(例:数字の10のファイルで同じオーバーライドが行われる場合) 20番のファイルでは、20からのオーバーライドが優先されます)。
セットアップを正しく読んでいる場合は、.xml
ファイルが次の場所にあります。
/usr/share/glib/schemas
ではなく:
/usr/share/glib-2.0/schemas
予想される場所。
間違って読んだ場合はお知らせください。この回答を削除します。私はFireFoxを使用していないため、通常のように答えをテストできませんでした。