Firefox зависает потому что sort-directories-first, устанавливающий пропавших без вести

Я недавно обновил от 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-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
задан 7 September 2016 в 00:59

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

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

3
ответ дан 23 November 2019 в 06:47

Просто немного фона:

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

1
ответ дан 23 November 2019 в 06:47

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

Похожие вопросы: