今日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
。
したがって、それに応じてファイルを編集します。