清除旧的Linux映像后,是否可以安全删除/usr/src/linux-headers目录?

我正在使用Ubuntu 12.04版本,有两个活跃的Linux内核镜像3.2.0-37和3.2.0-36。在/usr/src/目录下,我找到了以下文件:
linux-headers-3.2.0-23    
linux-headers-3.2.0-23-generic    
linux-headers-3.2.0-26    
linux-headers-3.2.0-26-generic
linux-headers-3.2.0-29    
linux-headers-3.2.0-29-generic
linux-headers-3.2.0-31    
linux-headers-3.2.0-31-generic    
linux-headers-3.2.0-32    
linux-headers-3.2.0-32-generic    
linux-headers-3.2.0-33    
linux-headers-3.2.0-33-generic    
linux-headers-3.2.0-34    
linux-headers-3.2.0-34-generic    
linux-headers-3.2.0-35    
linux-headers-3.2.0-35-generic    
linux-headers-3.2.0-36    
linux-headers-3.2.0-36-generic     
linux-headers-3.2.0-37     
linux-headers-3.2.0-37-generic

今天我执行了sudo apt-get purge linux-image-x.x.x.x-generic *34和*35。
我必须补充一下,/boot目录中只有*36和*37。
除了*37和*36之外,删除所有这些是否安全?提前感谢您。

https://stackoverflow.com/questions/60248189/linux-headers-are-consuming-a-lot-of-disk-space-on-the-ec2-machine-is-it-safe-t - martinho
4个回答

这些头文件包含在linux-headers-*linux-headers-*-generic软件包中。通过apt-get删除它们应该是安全的。也许apt-get autoremove已经建议你这样做了。请不要手动删除它们!

7apt-get autoremove没有为我删除头文件。 - user12345
11除了有时候由于“磁盘空间不足”错误而无法运行“apt-get autoremove”之外,这部分是由于在小型驱动器上占用2G空间的“/usr/src/linux*”。 - Mark Stosberg
4是的。有时候问题不在于磁盘空间,而是已经没有可用的索引节点(inodes)了 -> 如果df -i显示使用率为100%,实际上就是没有剩余空间了。唯一的解决办法是删除一些/usr/src/linux*相关的内容,以使apt能够再次正常工作。 - Christian Ulbrich
3尝试使用sudo apt autoremove而不是apt-get命令。 - jaybrau
@jaybrau 也不起作用。 - Andreï V. Kostyrka
10说实话,apt-get autoremove对我很有效——在我的8GB AWS实例上释放了3.3GB的空间。谢谢! - Jeff McMahan
1在我这种情况下,apt-get autoremove 最开始并没有起作用。为了使其正常工作,我不得不运行 sudo apt-get -f install 命令。这个命令最初也失败了,因为它需要一些空闲的inode。我找到了一个可安全删除的文件夹。然后,我能够运行上述两个命令,将我的inode使用量从99%降低到33%。 - Daniel Waltrip
1如果我不想编译任何东西(包括设备驱动程序、内核和我的愚蠢的C代码),我能手动清除它们以节省我2GB的SD卡空间吗? - Chameleon
如果以上方法都不起作用,那么首先直接登录到root用户来运行它们 -- sudo -i。这样可以让你访问一些为root用户保留的磁盘空间,而sudo无法访问。 - Barrett Conrad

我刚遇到这个问题,使用"apt-get autoremove"命令并没有解决我的问题。
我通过以下方式解决了这个问题:
sudo apt-get purge linux-headers-3.2.0-23

在位于/usr/src的Linux头文件上。我没有删除与当前正在使用的内核对应的头文件。
成功重新启动了服务器。

6一个一行代码就能自动化这个过程:https://ubuntugenius.wordpress.com/2011/01/08/ubuntu-cleanup-how-to-remove-all-unused-linux-kernel-headers-images-and-modules/。非常好用。(我稍微根据我的情况进行了修改。) - Reinier Post

对于那些通过Google搜索多年后来到这里的人:您也可以在Synaptic软件包管理器中卸载旧内核。只需在终端中键入'uname -a'来确认您当前正在使用的内核即可。

4你的回答应该具体解释如何做到这一点。 - Elijah Lynn
如果我已经在命令行中发出一个命令来确定我正在使用的内核版本,那么我也可以发出非常简单的apt-get autoremove命令。 - ephsmith

这个非常相似,但比Reinier Post在user12345的回答中提供的有用评论更易读。
apt list --installed linux-*5* | grep -v $(uname -r) | xargs sudo apt -y purge 它错过了一个没有标准编号的开发头文件包,但也没有捕捉到Alsa的linux-sound-base,这可能是需要的。您可以通过删除xargs管道来进行比较,像这样:dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/(.*)-([^0-9]+)/1/")"'/d;s/^[^ ]* [^ ]* ([^ ]*).*/1/;/[0-9]/!d'