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-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
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, поэтому не смог проверить ответ, как обычно.