web-dev-qa-db-fra.com

Ubuntu 16.04: erreur appstreamcli lors de la mise à jour

J'essaie d'activer le WiFi. J'ai essayé Sudo apt-get update. Mais je reçois cette erreur:

The AppStream system cache was updated, but some errors were detected, which might lead to missing metadata. Refer to the verbose log for more information.
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-cache > /dev/null; fi'
E: Sub-process returned an error code

Comment compléter Sudo apt-get update et activer le Wifi dans Ubuntu-16.04?

10
Nidhi Mehta

J'ai eu le même problème et le problème était qu'il y avait (dans mon cas) un caractère échappé de manière inappropriée dans le fichier /var/cache/app-info/xmls/fwupd.xml à la ligne 265 qui a cassé le code XML, d'où l'erreur. Sur la ligne <checksum filename="Firmware_SF30&SN30_Pro_V1.26.dat" target="content" type="sha1">3ef2bdee8aca2a45b9f53b4d4cce9722523f57f8</checksum>, le symbole & doit être encodé &amp; pour que ce soit un xml valide.

11
Nikola

Un bug similaire a été signalé ici

Cette réponse a suggéré ce qui suit pour le résoudre (quelques personnes ont dit que cela les aidait):

Supprimer /usr/bin/appstreamcli convient si vous installez le package corrigé ultérieurement.

Pour installer ceci manuellement, veuillez faire (pour AMD64, ajuster les URL pour les autres architectures):

cd /tmp && mkdir asfix
cd asfix
wget https://launchpad.net/ubuntu/+archive/primary/+files/appstream_0.9.4-1ubuntu1_AMD64.deb
wget https://launchpad.net/ubuntu/+archive/primary/+files/libappstream3_0.9.4-1ubuntu1_AMD64.deb
Sudo dpkg -i *.deb
4
Yaron

Bien que cela ne soit pas rétroporté à xenial, on peut mettre à niveau libappstream-glib8 vers la version dans bionic et le configurer pour recevoir les mises à niveau de ce paquet (mais pas le reste) de bionic.

Procédure

Si vous vous trouvez dans l'un des cas marqués ABORT, annulez simplement toutes les étapes que vous avez effectuées jusqu'à présent et exécutez Sudo apt update à la fin (je ne m'attends pas à ce que cela se produise, elles ne sont là que pour des raisons de sécurité).

  1. enregistrer un fichier appelé (par exemple) future.list dans le répertoire /etc/apt/sources.list.d (vous aurez besoin de Sudo) avec le contenu suivant:

    deb mirror://mirrors.ubuntu.com/mirrors.txt bionic main
    deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-updates main
    deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-security main
    
  2. enregistrer un fichier appelé (par exemple) future.pref dans le répertoire /etc/apt/preferences.d (vous aurez de nouveau besoin de Sudo) avec le contenu suivant:

    Package: *
    Pin: release a=bionic*
    Pin-Priority: 50
    
  3. Sudo apt update

  4. apt list -u et confirmez qu'il renvoie niquement "Listing ... Done". Si cela retourne plus de choses, ABORT (voir ci-dessus).
  5. Sudo apt install -assume-no -t=bionic libappstream-glib8. Si, à ce stade, apt affirme qu'il faut plus pour satisfaire les dépendances que de remplacer l'ancienne version par la nouvelle, ABORT (voir ci-dessus).
  6. Sudo mv /var/cache/app-info/xmls/fwupd.xml ~/fwupd.xml.bck
  7. redémarrer (j'ai trouvé que c'était nécessaire, probablement pour charger la nouvelle version de la bibliothèque partagée, peut-être redémarrer un service)
  8. Sudo fwupdmgr refresh
  9. Sudo appstreamcli refresh
0
ricab