오늘 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
.
따라서 그에 따라 파일을 편집하십시오.