来自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 

上述错误仍然存​​在。

在评论之后,为我解决这个问题的是:

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

一切似乎都很好。


还应该添加我从xenial/back-ports安装的版本0.10.6

在遇到相同的更新问题后,我构建了一个短期解决方案,有助于修复这种情况,直到开发人员调整有问题的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&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直接从终端调用它。 然后,只要有bug,你可以在运行sudo apt-get update && sudo apt-get -y dist-upgrade之前调用bugfix.sh

我发现你问题中描述的错误是由/var/cache/app-info/xmls/fwupd.xml的拼写引起的。

我的修复程序:

  1. 使用命令sudo gedit /var/cache/app-info/xmls/fwupd.xml在终端上打开此文件。 我在这里使用gedit文本编辑器。 您可以使用任何您熟悉的文本编辑器。
  2. 转到第265行,其中3ef2bdee8aca2a45b9f53b4d4cce9722523f57f8 。 我所做的就是纠正错误是为了纠正错误SF30&SN30SF30&SN30 。 这是符号&应该改为&
  3. 最后,保存文件并退出。

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

补充说明:

  1. 有时,Ubuntu会通知我可用于安装的新软件包,并会要求我允许安装这些新软件包。 安装这些新软件包后,我在sudo apt update期间遇到了相同的错误消息。 为了避免这个错误,我只是重做上面提到的程序。 希望开发人员能够快速修复这个bug。
  2. 我遇到过删除文件fwupd.xml50appstream 。 但是,我注意到这些文件包含用于某些目的的说明。 因此,我的修复过程没有删除这些文件。 如果你想删除它们,我建议你先备份它们。