Я недавно обновил от xubuntu 14.04 до xubuntu 16.04. Законченный процесс, но не пошел гладкий (я не помню почему).
Теперь в firefox
когда я открываю файл (Файл-> Открывают File), катастрофические отказы процесса со следующей ошибкой:
... 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
Файл /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
, значение будет установлено во время запуска сценарием удара, но информация, которую я нашел, казалось, устарела.
Ваша проблема могла бы быть связана с этой ошибкой, Google приводит меня к этой ссылке при поиске сети о проблеме.
Просто немного фона:
бойкие схемы компиляции компиляции все файлы схемы 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
.
В дополнение к файлам схемы, бойкие схемы компиляции читают 'файлы' переопределения поставщика, которые являются файлами ключей, которые могут переопределить значения по умолчанию для ключей в схемах. Названия группы в файлах ключей являются идентификатором схемы, и значения записаны в сериализированной форме GVariant. Файлы переопределения поставщика должны иметь расширение файла .gschema.override
.
Условно, файлы переопределения поставщика начинаются nn_
, где nn
число от 00 до 99. Выше пронумерованные файлы имеют более высокий приоритет (например: если то же переопределение будет сделано в файле, пронумерованном 10, и с другой стороны в файле пронумеровал 20, то переопределение от 20 будет иметь приоритет).
, Если я читаю Вашу установку правильно, у Вас есть Ваш .xml
файлы в:
/usr/share/glib/schemas
а не в:
/usr/share/glib-2.0/schemas
, где они, как ожидают, будут.
, Если я читал, это неправильно сообщило мне, и я удалю этот ответ. Я не использую FireFox, так не мог протестировать ответ как я обычно, чтобы сделать.