来自 fwupd.xml 的 APT 更新错误

来自 fwupd.xml 的 APT 更新错误

Ubuntu 16.04

我收到此apt update错误:

AppStream system cache was updated, but problems were found: 
Metadata files have errors: /var/cache/app-info/xmls/fwupd.xml

我之前已经运行过:

sudo apt install appstream/xenial-backports
sudo apt update
sudo apt upgrade

上述错误仍然存​​在。

答案1

根据评论,为我解决这个问题的是:

# rm /var/cache/app-info/xmls/fwupd.xml
# appstreamcli refresh --force
AppStream cache update completed successfully.
# apt update

现在一切似乎都很好。


还应该补充一下,我已经0.10.6安装了版本xenial/back-ports

答案2

我发现您问题中描述的错误是由于 中的拼写错误造成的/var/cache/app-info/xmls/fwupd.xml

我的修复程序:

  1. 使用命令在终端上打开此文件sudo gedit /var/cache/app-info/xmls/fwupd.xml。我在这里使用gedit文本编辑器。您可以使用任何您熟悉的文本编辑器。
  2. 转到第 265 行,上面写着<checksum filename="Firmware_SF30&SN30_Pro_V1.26.dat" target="content" type="sha1">3ef2bdee8aca2a45b9f53b4d4cce9722523f57f8</checksum>。我所做的就是将拼写错误更正为SF30&SN30SF30&amp;SN30也就是说,符号&应该改为&amp;
  3. 最后,保存文件并退出。

要检查是否成功,请在终端上运行sudo apt update。错误不应该存在。但如果仍然存在,我运行命令appstreamcli refresh --force然后sudo apt update。到这个阶段,我不再在同一个登录会话中遇到错误。

补充笔记:

  1. 有时,Ubuntu 会通知我有哪些新软件包可供安装,并会要求我授予安装这些新软件包的权限。安装这些新软件包后,我在安装过程中遇到了与你问题中相同的错误消息sudo apt update。为了避免该错误,我只是重新执行了上述步骤。希望开发人员能够尽快修复此错误。
  2. 我曾遇到过删除文件fwupd.xml和的 建议50appstream。但是,我注意到这些文件包含用于某些目的的指令。因此,我的修复过程并未删除这些文件。如果您想删除它们,我建议您先备份它们。

答案3

在遇到相同的更新问题后,我建立了一个短期解决方案,有助于修复这种情况,直到开发人员调整有问题的 XML 文件中的语法错误。

建议的短期解决方案:bugfix.sh

#! /bin/bash
# bugfix.sh
#
# DESCRIPTION
#   Temporary fix for Ubuntu firmware update issues
#   Created by h8rt3rmin8r on 20180804
#
# BUG INFORMATION 
#   File location:  /var/cache/app-info/xmls/fwupd.xml
#   Line number:    265

SRC_STRING=$(sudo cat /var/cache/app-info/xmls/fwupd.xml)
OLD_SUBSTRING='Firmware_SF30&SN30_Pro_V1'
NEW_SUBSTRING='Firmware_SF30&amp;SN30_Pro_V1'

touch /dev/shm/bugfix.xml
echo ${SRC_STRING/$OLD_SUBSTRING/$NEW_SUBSTRING} > /dev/shm/bugfix.xml

sudo mv /dev/shm/bugfix.xml /var/cache/app-info/xmls/fwupd.xml

bugfix.sh 使用说明:

要运行 bugfix.sh,只需将上述代码复制到新文件中(使用 gedit 等文本编辑器),然后将该文件保存为“bugfix.sh”并保存在方便的位置。

当位于与 bugfix.sh 脚本相同的目录中时,使用以下命令启用脚本执行:sudo chmod +x bugfix.sh

使用以下命令运行错误修复脚本:./bugfix.sh

补充笔记:

运行此脚本将暂时解决当前的问题。如果稍后再次出现该错误,则只需再次运行该脚本即可。

为了方便访问,你甚至可以将此脚本存储在 中,/usr/local/bin以便你可以直接从终端使用 调用它bugfix.sh。然后,只要错误存在,你就可以bugfix.sh在运行 之前调用它sudo apt-get update && sudo apt-get -y dist-upgrade

相关内容