apt-get을 사용하여 패키지 및 설치된 종속성을 제거하십시오.

apt-get을 사용하여 패키지 및 설치된 종속성을 제거하십시오.

그래서 패키지를 설치했습니다.

apt-get install mypackage

apt-get은 종속성이 있는 패키지를 설치하고 내 디스크에 10MB가 설치되어 있다고 보고합니다.

하지만 마음이 바뀌어서 떠났어요

apt-get remove mypackage

apt-get은 166KB를 확보할 것이라고 발표했습니다.

남은 음식을 디스크에 버리고 싶지 않아서 시도해 보았습니다.

apt-get autoremove mypackage

이제 apt-get은 내 디스크에서 166MB를 제거하려고 합니다.

마지막 설치 작업을 취소하려면 어떻게 해야 할까요? 아니면 단일 패키지만 제거하고모두종속성?

또는 설치 작업을 대략적으로 완료하고 실행 취소할 수 있는 원자적 작업으로 처리하는 다른 패키지 관리 도구(다른 배포판에서도)를 사용할 수 있습니까?

답변1

APT는 패키지 변경 사항을 트랜잭션으로 관리하지 않으므로 패키지 설치(또는 기타 패키지 작업)를 실행 취소하는 기본 제공 작업이 없습니다. 그러나 수행하는 모든 작업을 최종 사용자 요청별로 그룹화하여 기록합니다. 를 보면 설치와 함께 자동으로 설치된 다른 모든 패키지 목록과 함께 설치를 /var/log/apt/history.log찾을 수 있습니다 . mypackage이를 사용하여 설치를 수동으로 취소할 수 있습니다.

aptitude일반 패키지 관리에도 사용할 수 있습니다 . autoremove실제로는 기본적으로 작동합니다. 하지만 지금은 apt autoremove.

지적한대로저우 웨이쥔, 특정 상황에서 실행 취소할 수 있는 단위로 패키지 변경 사항을 관리합니다 yum. 내역에 저장된 거래가 나열되며 내역을 롤백하거나 특정 거래를 취소하는 데 사용될 수 있습니다(가능한 경우). 대신 Debian 기반 시스템에서 APT를 올바르게 사용할 수 있는지 잘 모르겠습니다 . 모든 패키지 관리에 이러한 도구를 사용하려면 Fedora, RHEL 또는 CentOS로 전환해야 할 수도 있습니다.dnfdnf historydnf history rollbackdnf history undoyumdnf

답변2

덧붙여서:

설치 작업을 "실행 취소"하는 가장 신뢰할 수 있는 방법은 apt 로그를 보고 이 작업으로 설치된 모든 패키지를 제거하는 것입니다.

그래서 나는내 문제를 해결해줘. 적절한 로그 및 복구 작업을 구문 분석하는 데 도움이 됩니다.

이것이 내가 사용하는 방법입니다:

최신 apt작업 나열:

apt-history 
96 /usr/bin/unattended-upgrade
97 apt-get install adb
98 apt-get dist-upgrade
99 /usr/bin/unattended-upgrade
100 apt-get install qemu-system

작업 #100(마지막 패키지)으로 설치된 모든 패키지의 세부 정보 표시

sudo apt-history 100 Install
seabios:amd64 (1.10.2-1, automatic), ipxe-qemu:amd64 (1.0.0+git-20161027.b991c67-1, automatic), qemu-system-mips:amd64 (1:2.8+dfsg-6+deb9u3, automatic), openbios-sparc:amd64 (1.1.git20161120-2, automatic), qemu-system-misc:amd64 (1:2.8+dfsg-6+deb9u3, automatic), qemu-system-ppc:amd64 (1:2.8+dfsg-6+deb9u3, automatic), libvdeplug2:amd64 (2.3.2+r586-2.1, automatic), qemu-system-x86:amd64 (1:2.8+dfsg-6+deb9u3, automatic), openhackware:amd64 (0.4.1+git-20140423.c559da7c-4, automatic), libspice-server1:amd64 (0.12.8-2.1+deb9u1, automatic), libxenstore3.0:amd64 (4.8.3+xsa262+shim4.10.0+comet3-1+deb9u6, automatic), qemu-utils:amd64 (1:2.8+dfsg-6+deb9u3, automatic), qemu-efi:amd64 (0~20161202.7bbe0b3e-1, automatic), qemu-system-sparc:amd64 (1:2.8+dfsg-6+deb9u3, automatic), libxen-4.8:amd64 (4.8.3+xsa262+shim4.10.0+comet3-1+deb9u6, automatic), libfdt1:amd64 (1.4.2-1, automatic), qemu-slof:amd64 (20161019+dfsg-1, automatic), qemu-system-arm:amd64 (1:2.8+dfsg-6+deb9u3, automatic), qemu-system-common:amd64 (1:2.8+dfsg-6+deb9u3, automatic), openbios-ppc:amd64 (1.1.git20161120-2, automatic), qemu-system:amd64 (1:2.8+dfsg-6+deb9u3)

이러한 패키지와 해당 구성을 제거합니다.

sudo apt-get remove --purge `apt-history 100 Install --as-apt-arguments`

경고: 안전을 위해 마지막 설치 명령에 대해서만 이 작업을 수행하고 한 번에 하나의 명령을 롤백하십시오.

답변3

Stephen의 답변에서 영감을 받아

UNINSTALL_THIS=cockpit
cat /var/log/apt/history.log | grep -Po "Install: \K.*$UNINSTALL_THIS.*" | sed -E 's/:[^\)]*\),*//g'

cockpit사용을 위해 제거할 패키지의 복사-붙여넣기 목록을 인쇄합니다.sudo apt remove <paste>

grep 명령에 대한 지침은 다음을 참조하세요.grep -Po '...\K...'는 무엇을 합니까? 그러한 효과를 얻을 수 있는 다른 방법이 있습니까?

관련 정보