appstreamcli зависает со 100% загрузкой процессора во время обновления

76

appstreamcliперегревает мой ноутбук, постоянно используя 100% ядра. Мое единственное решение - убить его. Вот скриншот top:

вывод top, показывающий appstreamcli со 100% использованием процессора

Я могу убить appstreamcliс помощью или . Но как только я это сделаю , процесс снова возвращается и зависает обновление. Если я затем убью его, я получу следующий вывод:sudo kill pidsudo killall appstreamclisudo apt updateappstreamcli

Reading package lists... Done
E: Problem executing scripts APT::Update::Post-Invoke-Success
'if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli;
 then appstreamcli refresh > /dev/null;
 fi'
E: Sub-process returned an error code

Что это за процесс и почему он использует так много процессора?

nazar2sfive
источник
2
Это ошибка. Смотрите этот вопрос: askubuntu.com/questions/774918/…
Alwaysask
9
68 градусов - это хорошая температура для приготовления яйца, но вам понадобится гораздо более высокая температура для приготовления ноутбука.
Майкл Хэмптон
@MichaelHampton Мой ноутбук готовится, когда какой-то тупой процесс ядра занимает все время процессора; довольно легко доходит до 100 градусов по Цельсию. Затем он выключается.
кошка
@ Cat Right, 100 - это волшебное число, на котором готовит ваш ноутбук. Возможно, стоит почистить его вентилятор и переделать термопасту на его CPU.
Майкл Хэмптон
@MichaelHampton 100 - это магическое число, при котором процессор говорит: «Я выключаю, иначе я остановлюсь и загорюсь !!!» , Вентилятор чистый и термопаста новая, просто старая.
кошка

Ответы:

78

Это вызвано ошибкой https://bugs.launchpad.net/ubuntu/+source/appstream/+bug/1579712
Рабочее решение (только что попробовал сам):

Сначала убить appstreamcli, либо вручную, либо с помощью

sudo kill -KILL $(pgrep appstreamcli)

или же

sudo pkill -KILL appstreamcli

Затем:

wget -P /tmp https://launchpad.net/ubuntu/+archive/primary/+files/appstream_0.9.4-1ubuntu1_amd64.deb https://launchpad.net/ubuntu/+archive/primary/+files/libappstream3_0.9.4-1ubuntu1_amd64.deb
sudo dpkg -i /tmp/appstream_0.9.4-1ubuntu1_amd64.deb /tmp/libappstream3_0.9.4-1ubuntu1_amd64.deb

После этого вы сможете продолжить обновление apt-get как обычно

sam50
источник
12
Именно моя проблема, но что кстати appstreamcli?
Чарльз-Антуан Фурнел
17
Будьте осторожны, это работает на 64-битной системе; на 32-бит, вы должны изменить , amd64чтобы i386в ссылках.
Rmano
1
Чтобы выполнить после sudo kill {pid}передачи ошибка « База данных статуса dpkg заблокирована другим процессом ».
Андреа
Проблема в том, что appstreamcli запускается от имени пользователя root, поэтому чтобы обойти блокировку базы данных, просто выполните: sudo killall appstreamcli
wasp
2
Так как эта ошибка проявляется в очень редких случаях (согласно описанию), исправление должно быть проверено с помощью контрольного примера. Запуск sudo appstreamcli refresh --forceбез зависания подтвердит, что исправление работает. Это сработало для меня. Спасибо за решение!
nolexa
2

В качестве альтернативы по какой-либо причине, если вы не хотите устанавливать пакет вне репозитория и просто ждать обновления, вы можете полностью удалить его.

Это приведет к удалению Discover на KDE: Plasma, поэтому я предполагаю, что оно также удалит программное обеспечение Gnome или все, что добавляет ваш Ubuntu Flavor. Если это так, вы можете просто использовать Muon на Kubuntu или Synaptic на DE на основе GTK.

Перед запуском убедитесь, что вы проверяете удаляемые пакеты, чтобы убедиться, что с вами все в порядке.

Вы можете выяснить, что-то, запустив

apt show appstream

удалить appstream запустить

sudo apt remove appstream
Годдард
источник