apt autoremove가 모든 이전 커널 패키지를 즉시 제거하지 않는 이유는 무엇입니까?

apt autoremove가 모든 이전 커널 패키지를 즉시 제거하지 않는 이유는 무엇입니까?

나는 Meltdown 패치를 출시한 이후 Ubuntu 서버의 커널을 업그레이드해 왔습니다. 나는 거의 모든 서버에서 apt autoremove시스템에 아직 존재하는 오래된 커널을 정리하기 위해 재부팅 후 이 프로그램을 두 번 실행해야 한다는 것을 알았습니다 .

처음으로 실행하면 먼저 두 가지 이전 버전의 커널이 제거됩니다.

% sudo apt autoremove
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-4.4.0-103 linux-headers-4.4.0-103-generic linux-headers-4.4.0-104 linux-headers-4.4.0-104-generic linux-image-4.4.0-103-generic linux-image-4.4.0-104-generic
  linux-image-extra-4.4.0-103-generic linux-image-extra-4.4.0-104-generic
0 upgraded, 0 newly installed, 8 to remove and 2 not upgraded.
After this operation, 596 MB disk space will be freed.

그러나 작업이 완료된 후 apt autoremove다시 실행하면 이전 버전이 제거됩니다.

% sudo apt autoremove
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-4.4.0-96 linux-headers-4.4.0-96-generic linux-image-4.4.0-96-generic linux-image-extra-4.4.0-96-generic
0 upgraded, 0 newly installed, 4 to remove and 2 not upgraded.
After this operation, 298 MB disk space will be freed.

왜 한 번에 할 수 없는지 궁금합니다.

답변1

특히, 커널의 유지 관리자 스크립트는 /etc/kernel/postinst.d/apt-auto-removal커널 목록을 작성하여 이를 APT 구성으로 유지하고 저장합니다 /etc/apt/apt.conf.d/01autoremove-kernels. 이 프로세스는 현재 실행 중인 커널, 구성 중인 커널 및 가장 최근에 설치된 두 개의 커널을 유지합니다.

아마도 첫 번째 정리 전에 스크립트가 마지막으로 실행되었을 때 -96이러한 범주 중 하나에 속했기 때문에 결국 보호되었습니다. 첫 번째 정리 후에는 더 이상 작동하지 않으며 삭제 후보가 됩니다. 당신이 그것을 알아내고 싶다면, 이 01autoremove-kernels파일에는 디버깅 정보가 포함되어 있습니다. 첫 번째 정리 전후에 다시 살펴보면 다른 커널 버전이 보호되는 이유를 알 수 있습니다.

커널 자동 제거는 의도적으로 보수적이고 지나치게 조심스럽습니다. ;를 사용하면 자동으로 (결국) 이를 처리할 수 있습니다 unattended-upgrades. 바라보다우분투 위키더 알아보기.

관련 정보