Назад | Перейти на главную страницу

apt-get имеет несоответствия для автоудаления

Сейчас я чищу несколько серверов.
Заметил странное поведение:

Когда я делаю apt-get autoremove он перечисляет несколько заголовков, которые будут автоматически удалены, когда я продолжу, иногда он оставляет файлы / папки в /usr/src, иногда они удаляются.

Есть ли причина относительно того, почему, или где я могу начать поиск? Google не очень много появлялся.

Машина, на которой заголовки все еще остаются, хотя autoremove дает «0 для удаления»

ubuntu@acc-ws-website-1:~$ sudo apt-get autoremove
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 65 not upgraded.

ubuntu@acc-ws-website-1:~$ ls -lart /usr/src
total 108
drwxr-xr-x 10 root   root   4096 Apr 16  2014 ..
drwxr-xr-x 24 root   root   4096 Jul  8  2014 linux-headers-3.13.0-24
drwxr-xr-x  7 root   root   4096 Jul  8  2014 linux-headers-3.13.0-24-generic
drwxr-xr-x  3 ubuntu ubuntu 4096 Apr 17  2015 ixgbevf-2.14.2
drwxr-xr-x 24 root   root   4096 Oct  6  2015 linux-headers-3.13.0-65
drwxr-xr-x  7 root   root   4096 Oct  6  2015 linux-headers-3.13.0-65-generic
drwxr-xr-x 24 root   root   4096 Oct 20  2015 linux-headers-3.13.0-66
drwxr-xr-x  7 root   root   4096 Oct 20  2015 linux-headers-3.13.0-66-generic
drwxr-xr-x 24 root   root   4096 Nov  5  2015 linux-headers-3.13.0-67
drwxr-xr-x  7 root   root   4096 Nov  5  2015 linux-headers-3.13.0-67-generic
drwxr-xr-x 24 root   root   4096 Nov 10  2015 linux-headers-3.13.0-68
drwxr-xr-x  7 root   root   4096 Nov 10  2015 linux-headers-3.13.0-68-generic
drwxr-xr-x 24 root   root   4096 Dec  1  2015 linux-headers-3.13.0-70
drwxr-xr-x  7 root   root   4096 Dec  1  2015 linux-headers-3.13.0-70-generic
drwxr-xr-x 24 root   root   4096 Dec  2  2015 linux-headers-3.13.0-71
drwxr-xr-x  7 root   root   4096 Dec  2  2015 linux-headers-3.13.0-71-generic
drwxr-xr-x 24 root   root   4096 Dec 17  2015 linux-headers-3.13.0-73
drwxr-xr-x  7 root   root   4096 Dec 17  2015 linux-headers-3.13.0-73-generic
drwxr-xr-x 24 root   root   4096 Dec 19  2015 linux-headers-3.13.0-74
drwxr-xr-x  7 root   root   4096 Dec 19  2015 linux-headers-3.13.0-74-generic
drwxr-xr-x 24 root   root   4096 Feb  2  2016 linux-headers-3.13.0-77
drwxr-xr-x  7 root   root   4096 Feb  2  2016 linux-headers-3.13.0-77-generic
drwxr-xr-x 24 root   root   4096 Feb 23  2016 linux-headers-3.13.0-79
drwxr-xr-x  7 root   root   4096 Feb 23  2016 linux-headers-3.13.0-79-generic
drwxr-xr-x 24 root   root   4096 Mar 30 06:50 linux-headers-3.13.0-115
drwxr-xr-x  7 root   root   4096 Mar 30 06:50 linux-headers-3.13.0-115-generic
drwxr-xr-x 27 root   root   4096 Mar 30 06:52 .

ubuntu@acc-ws-website-1:~$ uname -r
3.13.0-112-generic

В то время как я ожидал чего-то вроде этого:

ubuntu@tools-jenkins:~$ sudo apt-get autoremove
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 94 not upgraded.

ubuntu@tools-jenkins:~$ ls -lart /usr/src
total 32
drwxr-xr-x 10 root root 4096 Mar 25  2015 ..
drwxr-xr-x 24 root root 4096 Dec  6 06:39 linux-headers-3.13.0-105
drwxr-xr-x  7 root root 4096 Dec  6 06:39 linux-headers-3.13.0-105-generic
drwxr-xr-x 24 root root 4096 Mar  8 06:44 linux-headers-3.13.0-112
drwxr-xr-x  7 root root 4096 Mar  8 06:44 linux-headers-3.13.0-112-generic
drwxr-xr-x 24 root root 4096 Mar 30 06:26 linux-headers-3.13.0-115
drwxr-xr-x  7 root root 4096 Mar 30 06:26 linux-headers-3.13.0-115-generic
drwxr-xr-x  8 root root 4096 Apr  3 10:50 .

ubuntu@tools-jenkins:~$ uname -r
3.13.0-105-generic

Если у вас еще много linux-headers* пакетов, установленных в вашей системе, вы можете попробовать этот простой подход для удаления старых заголовков:

dpkg-query -f '${binary:Package}\n' -W linux-headers\*|xargs apt-mark auto
apt-mark manual linux-headers-generic
apt-get -f autoremove

Если мое предположение верно, то каким-то образом ваши заголовки помечены как установленные вручную, и это не позволяет вашей системе удалить эти пакеты. Например, вы напрямую установили пакеты, т.е. попросили установить точную версию пакета заголовков ядра. Команды выше пытаются пометить все эти пакеты как установленные автоматически и заставить все работать должным образом.

Если по какой-то причине пакеты уже удалены, но папки все еще сохраняются и имеют только некоторые остатки внутри, это означает, что эти файлы не принадлежат пакету. Это предотвращает удаление верхнего каталога apt при деинсталляции. linux-headers* пакет. В этом случае вам следует удалить файлы вручную.

МелочиФункция автоудаления: apt работает только для пакетов, которые были установлены автоматически. Это означает, что пакет должен быть буквально помечен как «установленный автоматически» и не должно быть пакетов, зависящих от него. В случае ядра linux и его заголовков у нас есть такой общий сценарий:

  • есть один или несколько мета-пакетов вроде linux-generic, linux-image-generic и linux-headers-generic которые обычно помечаются как установленные вручную
  • есть много «настоящих» пакетов с файлами внутри вроде linux-image-4.8.0-45-generic и метапакеты зависят от некоторых из таких пакетов; они обычно помечаются как «устанавливается автоматически»
  • при обновлении метапакета обычно требуются более новые версии «настоящего» пакета, и поэтому устанавливаются новые версии
  • пакеты, помеченные как `` установленные автоматически '', могут быть автоматически удалены только в том случае, если нет установленных вручную пакетов, зависящих от них, поэтому при установке новых пакетов старые могут быть автоматически удалены позже, потому что от этих пакетов больше никто не зависит

Ну вы видите, что 94 не модернизированы? В этом проблема, у меня была аналогичная проблема, и я вручную обновил все элементы (которые не были обновлены с помощью обновления apt-get, эти файлы содержат эти зависимости). И после этого я использовал apt-get autoremove, и это сработало. При обновлении с помощью apt-get upgrade в конце подробного текста вы можете увидеть список не обновленных файлов. возьмите их по одному (не волнуйтесь, некоторые обновления улучшат половину этого списка). Надеюсь, это поможет, дружище.

P.S. Перед обновлением убедитесь, что u создала резервную копию образа рабочей системы, если что-то пойдет не так.