Firefox зависает, потому что отсутствует первая директория сортировки каталогов

Я недавно обновился с xubuntu 14.04 до xubuntu 16.04. Процесс завершился, но не прошел гладко (не помню почему).

Сейчас в firefox когда я открываю файл (Файл -> Открыть файл), процесс падает со следующей ошибкой:

... GLib-GIO-ERROR **: Settings schema 'org.gtk.Settings.FileChooser' does not contain a key named 'sort-directories-first'

Я искал в Интернете и не нашел ничего актуального. Переустановка firefox, gsettings-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 

2 ответа

Решение

Файл /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 где-то в вашей системе, и этот файл не содержит желаемый ключ.

В качестве обходного пути я бы предложил вам искать файлы с именем 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-скриптом, но информация, которую я нашел, кажется устаревшей.

Ваша проблема может быть связана с этой ошибкой, Google ведет меня по этой ссылке при поиске в сети о вашей проблеме.

Просто немного предыстории:

glib-compile-schemas компилирует все файлы XML-схемы GSettings в DIRECTORY в двоичный файл с именем gschemas.compiled которые могут быть использованы GSettings. Файлы схемы XML должны иметь расширение имени файла .gschema.xml, Подробное описание формата файла XML см. В документации GSettings.

Во время выполнения GSettings ищет схемы в glib-2.0/schemas подкаталоги всех каталогов, указанных в XDG_DATA_DIRS переменная окружения. Обычное место для установки файлов схемы /usr/share/glib-2.0/schemas,

В дополнение к файлам схемы, glib-compile-schemas читает файлы 'vendor override', которые являются ключевыми файлами, которые могут переопределять значения по умолчанию для ключей в схемах. Имена групп в файлах ключей являются идентификатором схемы, а значения записываются в сериализованной форме GVariant. Файлы переопределения поставщиков должны иметь расширение имени файла .gschema.override,

По соглашению файлы переопределения поставщиков начинаются с nn_ где nn это число от 00 до 99. Файлы с более высокими номерами имеют более высокий приоритет (например: если такое же переопределение сделано в файле с номером 10, а затем снова в файле с номером 20, переопределение от 20 будет иметь приоритет).

Если я правильно читаю ваши настройки, у вас есть .xml файлы в:

/usr/share/glib/schemas

а не в:

/usr/share/glib-2.0/schemas

где они должны быть.

Если я прочитал это неправильно, пожалуйста, дайте мне знать, и я удалю этот ответ. Я не использую FireFox, поэтому не смог проверить ответ, как обычно.

Другие вопросы по тегам