Сейчас я чищу несколько серверов.
Заметил странное поведение:
Когда я делаю 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 создала резервную копию образа рабочей системы, если что-то пойдет не так.