답변에 대한 의견에서 언급했듯이Debian 9.1: apt-get autoremove는 종속성을 제거하지 않습니다., /etc/apt/apt.conf에 이 줄을 추가하고 Apt::AutoRemove::SuggestsImportant "false";
Debian Fast Track에서 VirtualBox를 설치할 때 자동으로 설치된 g++를 제거할 수 있었습니다. (저는 Debian 12를 사용하고 있으므로 설명하기 때문에 코드명 Bullseye를 bookworm으로 바꿔야 했습니다.https://fasttrack.debian.net/업데이트 없음).
그러나 apt autoremove
libasan8과 같이 더 이상 필요하지 않은 자동으로 설치된 다른 패키지는 여전히 제거되지 않습니다. 이유를 아시나요? 자동으로 삭제하는 솔루션이 있나요?
다음을 실행하여 설치된 모든 패키지는 다음과 같습니다 sudo apt install virtualbox
.
build-essential dkms dpkg-dev g++ g++-12 gcc gcc-12 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan8 libc-dev-bin libc-devtools libc6-dev libcc1-0 libcrypt-dev libgcc-12-dev
libgsoap-2.8.124 libitm1 liblsan0 liblzf1 libnsl-dev libstdc++-12-dev libtirpc-dev libtsan2 libubsan1 libvncserver1 linux-compiler-gcc-12-x86 linux-headers-6.1.0-18-amd64 linux-headers-6.1.0-18-common
linux-headers-amd64 linux-kbuild-6.1 linux-libc-dev make manpages-dev patch rpcsvc-proto virtualbox virtualbox-dkms virtualbox-qt
다음을 실행하여 제거된 패키지는 다음과 같습니다 sudo apt purge virtualbox
.
virtualbox* virtualbox-qt*
다음 명령을 실행하여 이러한 추가 기능 패키지를 제거하십시오 sudo apt autoremove --purge
.
dkms* libgsoap-2.8.124* liblzf1* libvncserver1* linux-headers-amd64* virtualbox-dkms*
/etc/apt/apt.conf를 추가한 후 동일한 명령을 실행하여 Apt::AutoRemove::SuggestsImportant "false";
이러한 패키지도 제거되었습니다 .
build-essential* dpkg-dev* g++* g++-12* gcc* libalgorithm-diff-perl* libalgorithm-diff-xs-perl* libalgorithm-merge-perl* libstdc++-12-dev* make* patch*
내 의견에 따라 요청한대로 출력은 다음과 같습니다 aptitude why libasan8
.
i aptitude Recommends libdpkg-perl
i A libdpkg-perl Suggests gcc | c-compiler
i A gcc-12 Provides c-compiler
i A gcc-12 Depends libgcc-12-dev (= 12.2.0-14)
i A libgcc-12-dev Depends libasan8 (>= 12.2.0-14)
답변1
내 대답의 목적Debian 9.1: apt-get autoremove는 종속성을 제거하지 않습니다.apt install
동작과 대칭을 만들기 위해 apt autoremove
전자는 기본적으로 "제안된" 종속성을 무시하고 대답은 후자도 이를 무시하도록 만드는 방법을 설명합니다.
귀하의 경우에는 에서 가져온 모든 패키지를 자동으로 제거하는 방법이 없다고 생각합니다 virtualbox
. 그 중 하나 linux-headers-6.1.0-18-amd64
는 보호된 커널 패키지( /etc/apt/apt.conf.d/01autoremove
시스템 참조)이기 때문입니다. 최소한 두 개의 최신 커널이 설치될 때까지는 자동 제거 대상이 아니므로 제거하려면 수동으로 제거해야 합니다.
sudo apt purge linux-headers-6.1.0-18-amd64
거기예해당 APT 옵션을 Apt::Protect-Kernels
비활성화할 수 있습니다. 그러나 최신 패키지 6.1.0-18과 일치하는 커널을 실행한다고 가정하면 헤더 패키지는 계속 보호됩니다.
패키지가 제거되면 C 컴파일러는 자동 제거 후보가 되어야 하며 나머지 apt autoremove
패키지 전체는 아니더라도 대부분을 제거해야 합니다.
그렇지 않은 경우 "권장" 종속성을 무시하도록 지시 autoremove
(또는 )해야 할 수도 있습니다.autopurge
sudo apt -o Apt::AutoRemove::RecommendsImportant=false autopurge
이 명령을 실행할 때 주의하세요. "권장 사항"을 충족하기 위해서만 남아 있는 모든 패키지가 제거되므로 통과하는 것보다 나을 가능성이 높습니다 virtualbox
.
설정하면 RecommendsImportant
패키지 false
설치의 대칭성이 깨지므로 apt
기본적으로 "권장" 설치를 비활성화하지 않는 한 구성에서 설정해서는 안 됩니다( Apt::Install-Recommends
). 일반적인 데스크톱 사용의 경우 이는 일반적으로 좋은 생각이 아닙니다.