Вопрос или проблема
(appstreamcli:13767): GLib-CRITICAL **: 08:57:18.126: g_variant_builder_end: утверждение '!GVSB(builder)->uniform_item_types || GVSB(builder)->prev_item_type != NULL || g_variant_type_is_definite (GVSB(builder)->type)' не выполнено
(appstreamcli:13767): GLib-CRITICAL **: 08:57:18.126: g_variant_new_variant: утверждение 'value != NULL' не выполнено
(appstreamcli:13767): GLib-ERROR **: 08:57:18.126: g_variant_new_parsed: 11-13: недопустимая строка формата GVariant
Точка останова/ловушка (дамп памяти)
Чтение списков пакетов... Готово
E: Проблема при выполнении скриптов APT::Update::Post-Invoke-Success 'если /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; тогда appstreamcli refresh-cache > /dev/null; fi'
E: Подпроцесс вернул код ошибки
Следующее сработало для меня:
apt-get install --reinstall libappstream4
Проверьте эту тему для подробностей: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=906538
sudo apt reinstall appstream libglib2.0-0
следующая команда сработала для меня
У меня была точно такая же проблема, как указано выше. Мое решение было простым: перейдите в /etc/apt/
и проверьте файл sources.list
. Убедитесь, что в нем нет репозиториев, которые являются “экспериментальными”. Также перейдите в /etc/apt/sources.list.d
и посмотрите, нет ли там файлов с расширением .list
. Убедитесь, что они тоже не содержат “экспериментальные” или “бета” репозитории.
Моя проблема конкретно была вызвана этой записью в репозитории в файле unstable.list
под /etc/apt/sources.list.d
deb http://deb.debian.org/debian/ unstable main
Я просто закомментировал это и снова запустил apt-get update
. Нет необходимости переустанавливать что-либо, если проблема заключается конкретно в ваших источниках apt. Очень опасно выполнять команду purge и remove, указанную в предыдущем комментарии.
Это вывод из моей первоначальной проблемы.
root@localhost:~# apt-get update
Hit:1 http://security.debian.org/debian-security stretch/updates InRelease
Hit:2 http://deb.debian.org/debian unstable InRelease
Игнор:3 http://ftp.us.debian.org/debian stretch InRelease
Hit:4 http://ftp.us.debian.org/debian stretch-updates InRelease
Hit:5 http://ftp.us.debian.org/debian stretch Release
Игнор:6 http://httpredir.debian.org/debian stretch InRelease
Hit:7 http://httpredir.debian.org/debian stretch Release
(appstreamcli:10995): GLib-CRITICAL **: g_variant_builder_end: утверждение '!GVSB(builder)->uniform_item_types || GVSB(builder)->prev_item_type != NULL || g_variant_type_is_definite (GVSB(builder)->type)' не выполнено
(appstreamcli:10995): GLib-CRITICAL **: g_variant_new_variant: утверждение 'value != NULL' не выполнено
(appstreamcli:10995): GLib-ERROR **: g_variant_new_parsed: 11-13: недопустимая строка формата GVariant
Точка останова/ловушка
Чтение списков пакетов... Готово
E: Проблема при выполнении скриптов APT::Update::Post-Invoke-Success 'если /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; тогда appstreamcli refresh-cache > /dev/null; fi'
E: Подпроцесс вернул код ошибки
У меня была та же проблема в debian buster, и я нашел, что это работает: это
-
Удалите пакеты appstream и gnome (для безопасности сделайте список пакетов для последующей переустановки):
# apt-get remove --purge appstream gnome*
Вы можете использовать команду tasksel --list-tasks
, чтобы увидеть доступные варианты рабочего стола для установки.
Ответ или решение
Ошибка GLib при использовании команды apt-get update
может быть вызвана несколькими факторами, включая несовместимость пакетов, проблему с источниками репозиториев или коррумпированные данные в кэше. В этой статье мы рассмотрим, как диагностировать и устранить эту проблему, основываясь на предоставленной информации.
Что такое ошибка GLib?
Ошибки GLib часто возникают в средах, использующих библиотеку GLib, которая является частью Gnome и обеспечивает базовые службы для приложений. Ошибка, упомянутая вами, может указывать на неправильное использование GVariant, структуры данных GLib для хранения значений.
Анализ проблемы
Данная ошибка имеет следующую логику:
(appstreamcli:13767): GLib-CRITICAL **: ... failed
E: Problem executing scripts APT::Update::Post-Invoke-Success ...
E: Sub-process returned an error code
Причины возникновения
-
Проблемы с пакетом
appstreamcli
: приложениеappstreamcli
отвечает за кэширование метаданных о пакете. Если оно повреждено, то командаapt-get update
может завершаться с ошибкой. -
Неправильные репозитории: наличие "экспериментальных" или "бета" репозиториев в
sources.list
или в каталогах/etc/apt/sources.list.d
может привести к несовместимостям, особенно с пакетами GNOME. -
Кэш: поврежденный кэш пакетов также может стать источником проблем.
Шаги по устранению проблемы
1. Проверка источников репозиториев
Первым делом вам следует проверить файл /etc/apt/sources.list
и возможности в /etc/apt/sources.list.d
. Убедитесь, что там нет ссылок на «экспериментальные» репозитории. Для этого выполните:
sudo nano /etc/apt/sources.list
sudo nano /etc/apt/sources.list.d/*.list
Если найдете строки, которые указывают на «unstable» или «experimental», закомментируйте их, добавив символ #
в начале строки, и затем перезапустите apt-get update
.
2. Переустановка пакетов
Если ошибка не исчезла, испробуйте переустановить пакеты appstream
и libglib2.0-0
. Для этого выполните:
sudo apt-get install --reinstall appstream libglib2.0-0
Если это не сработает, можно попробовать полностью удалить и потом заново установить пакет appstream
:
sudo apt-get remove --purge appstream
sudo apt-get install appstream
3. Очистка кэша
Кроме того, возможно, имеет смысл очистить кэш apt:
sudo apt-get clean
sudo apt-get autoclean
4. Использование дополнительных инструментов
В некоторых случаях может быть полезно использовать инструмент tasksel
, позволяющий установить недостающие зависимости для рабочего окружения:
sudo tasksel --list-tasks
5. Проверка на наличие ошибок
Если ни один из вышеперечисленных шагов не помог, проверьте существование ошибок с помощью:
sudo journalctl -xe
Это позволит вам увидеть системные журналы и возможные подсказки о том, почему возникают ошибки.
Заключение
Ошибки GLib при использовании apt-get update
часто связаны с несовместимыми или поврежденными пакетами, неправильными источниками репозиториев или поврежденным кэшем. Используя предложенные шаги по диагностике и устранению, вы сможете эффективно справиться с данной проблемой и обеспечить стабильность вашей системы. Если ситуации будут повторяться, стоит обратиться к более подробному анализу или сообществу разработчиков для получения дополнительной помощи.