적절한 업데이트 실행 시 Appstreamcli 문제

적절한 업데이트 실행 시 Appstreamcli 문제

오늘 apt update를 실행했을 때 데비안 테스트에서 문제가 발생했고 다음 결과가 반환되었습니다.

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 패키지를 제거하면 문제가 해결될 수 있다고 말하는 사람들이 있는 것을 발견했습니다.

이 해결 방법은 효과가 있지만 대부분의 경우 이 방법을 사용하면 제거하고 싶지 않은 패키지가 제거됩니다.

또 다른 해결책은 다음과 같이 파일의 마지막 세 줄을 주석 처리하는 것입니다 /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.

따라서 그에 따라 파일을 편집하십시오.

관련 정보