来自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
的拼写引起的。
我的修复程序:
- 使用命令
sudo gedit /var/cache/app-info/xmls/fwupd.xml
在终端上打开此文件。 我在这里使用gedit
文本编辑器。 您可以使用任何您熟悉的文本编辑器。 - 转到第265行,其中
。 我所做的就是纠正错误是为了纠正错误3ef2bdee8aca2a45b9f53b4d4cce9722523f57f8 SF30&SN30
到SF30&SN30
。 这是符号&
应该改为&
。 - 最后,保存文件并退出。
要检查是否成功,请在终端sudo apt update
上运行。 错误不应该存在。 但如果它仍然存在,我运行命令appstreamcli refresh --force
然后sudo apt update
。 在此阶段,我在同一登录会话期间不再遇到错误。
补充说明:
- 有时,Ubuntu会通知我可用于安装的新软件包,并会要求我允许安装这些新软件包。 安装这些新软件包后,我在
sudo apt update
期间遇到了相同的错误消息。 为了避免这个错误,我只是重做上面提到的程序。 希望开发人员能够快速修复这个bug。 - 我遇到过删除文件
fwupd.xml
和50appstream
。 但是,我注意到这些文件包含用于某些目的的说明。 因此,我的修复过程没有删除这些文件。 如果你想删除它们,我建议你先备份它们。