適切なアップデートを実行するときのAppstreamcliの問題

適切なアップデートを実行するときのAppstreamcliの問題

今日apt updateを実行したときにDebianテストで問題が発生し、次の結果が返されました。

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

答え1

インターネット検索後にappstreamパッケージを削除すると、問題が解決する可能性があると言う人がいることがわかりました。

この回避策は効果的ですが、ほとんどの場合、この方法を使用すると、削除したくないパッケージが削除されます。

別の解決策は、次のようにファイルの最後の3行をコメントアウトすることです/etc/apt/apt.conf.d/50appstream

...
#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 | true; fi";
#};

その後、ファイルを保存してやり直しapt-get updateてください。

システムアップグレードを実行した後、パッケージappstreamにこのエラーを修正するアップグレードがあり、次のメッセージが表示されることがあります。

Configuration file '/etc/apt/apt.conf.d/50appstream'
  ==> Modified (by yourself or by a script) since the installation.
  ==> The package distributor has released an updated version.
    What do you want to do? Your options are:
     Y or I: install the version of the maintainer package
     N or O: keep the currently installed version
       D: Show differences between versions
       Z: start a shell to examine the situation

変更したファイルをアップグレードするには、Yを選択する必要があります。

このエラーを検索する他の人を助けるためにこの記事を投稿してください。

答え2

apt-get clean

適切なキャッシュをクリアすると、私の問題も解決するようです。だから私は走ることができます

apt-get update

質問や警告はありません。

編集:おそらく私は速すぎるようです。キャッシュを削除した後、エラーが消えて再び表示されました。

答え3

失敗したUbuntu 20.04アップデートからの修復中に同じ問題が発生しました。他の場所からの回答に基づいて、appstreamcliを別の場所に移動しました。

sudo mv /usr/bin/appstreamcli /root

以来、

sudo apt update

タスクに問題はありません。

それから私はそうでした。

sudo apt upgrade

ついに

sudo apt install --reinstall appstream
sudo rm /root/appstreamcli

これにより難局が解決される。その後、手動で処理する必要があるいくつかの「予約済み」パッケージがありますが、これは簡単です(やや退屈ですが)。

答え4

grep -Rnw '/etc/apt/apt.conf.d/' -e '通話成功後'

/etc/apt/apt.conf.d/15update-stamp:1:APT::Update::Post-Invoke-Success {"touch /var/lib/apt/periodic/update-success-stamp 2>/dev/null || true";};
/etc/apt/apt.conf.d/50command-not-found:14:APT::Update::Post-Invoke-Success {
/etc/apt/apt.conf.d/20packagekit:11:APT::Update::Post-Invoke-Success {
/etc/apt/apt.conf.d/99update-notifier:2:APT::Update::Post-Invoke-Success {"/usr/lib/update-notifier/update-motd-updates-available 2>/dev/null || true";};

私が知っている限り、そうです50command-not-found

したがって、それに応じてファイルを編集します。

関連情報