web-dev-qa-db-ja.com

sort-directories-first設定がないためにFirefoxがハングします

最近、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を検索したところ、関連するものは見つかりませんでした。 firefoxgsettings-desktop-schemas、およびgsettings-ubuntu-schemasapt-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 
7
ntd

ファイル/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_DIRSecho $XDG_DATA_DIRSの値を確認できます。これにより、ファイルを検索する場所がわかります。

XDG_DATA_DIRSの値を設定する方法を見つけることができませんでした。値は起動時にbashスクリプトによって設定されますが、見つかった情報は古くなっているように見えました。

あなたの問題は this バグに関連している可能性があります。Googleはあなたの問題についてネットを検索しながらこのリンクに私を導きます。

2
mook765

ほんの少しの背景:

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を使用していないため、通常のように答えをテストできませんでした。

1