我目前正在清理几台服务器。
我注意到一些奇怪的行为:
当我进行apt-get autoremove它会列出几个标题,当我继续时,它会将文件/文件夹留在/usr/src ,有时它们会被删除。
任何原因,为什么,或者我可以开始search? 谷歌没有多less。
即使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
如果我的假设是正确的,不知何故,你的头被标记为手动安装,这可以防止你的系统删除这些包。 例如,你已经直接安装了软件包,即要求安装内核头文件包的确切版本。 上面的命令尝试将所有这些包标记为自动安装,并使事情按预期工作。
如果有的话,软件包已经被删除,但文件夹仍然存在,只剩下一些剩菜,这意味着这些文件不属于软件包。 这可以防止在卸载linux-headers*包时删除顶层目录。 在这种情况下,您应该手动删除文件。
琐事 :apt的autoremovefunction仅适用于自动安装的软件包。 这意味着包必须从字面上标记为“自动安装”,并且不应该有依赖它的包。 在Linux内核及其头文件中,我们有这种常见的情况:
linux-generic , linux-image-generic和linux-headers-generic linux-image-4.8.0-45-generic和meta-packages一样的“真正”的软件包,它们依赖于一些这样的软件包; 这些通常被标记为“自动安装” 那么你看到94没有升级? 这就是问题,我有类似的问题,我手动升级所有项目(这是没有升级apt-get升级,这些文件存有依赖关系)。 之后,我使用apt-get autoremove,它工作。 在使用apt-get升级进行升级时,在详细文本结尾处可以看到未升级文件的列表。 把他们一个接一个(不要担心一些升级会升级一半的名单)。 希望这有助于,欢呼队友。
PS升级之前,请确保您的系统工作正常。