升级时没有足够的可用磁盘空间

当我尝试进行每日更新时,我在软件更新程序中出现错误。 它说:

The upgrade needs a total of 25.3 M free space on disk `/boot`. Please free at least an additional 25.3 M of disk space on `/boot`. Empty your trash and remove temporary packages of former installations using `sudo apt-get clean`. 

我尝试在终端输入sudo apt-get clean ,但我仍然收到消息。 我读过的所有页面似乎都是有经验的Ubuntuers。 我正在运行Ubuntu 12.10。 我想升级到13.04,但我知道我必须先完成这些。

这是在cat /etc/fstab键入终端的输出:

 # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # #       /dev/mapper/ubuntu-root / ext4 errors=remount-ro 0 1 # /boot was on /dev/sda1 during installation UUID=fa55c082-112d-4b10-bcf3-e7ffec6cebbc /boot ext2 defaults 0 2 /dev/mapper/ubuntu-swap_1 none swap sw 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0 matty@matty-G41M-ES2L:~$ 

输出df -h

 Filesystem Size Used Avail Use% Mounted on /dev/mapper/ubuntu-root 915G 27G 842G 4% / udev 984M 4.0K 984M 1% /dev tmpfs 397M 1.1M 396M 1% /run none 5.0M 0 5.0M 0% /run/lock none 992M 1.8M 990M 1% /run/shm none 100M 52K 100M 1% /run/user /dev/sda1 228M 222M 0 100% /boot matty@matty-G41M-ES2L:~$ 

dpkg -l | grep linux-image dpkg -l | grep linux-image给出:

 ii linux-image-3.5.0-17-generic 3.5.0-17.28 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP ii linux-image-3.5.0-18-generic 3.5.0-18.29 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP ii linux-image-3.5.0-19-generic 3.5.0-19.30 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP ii linux-image-3.5.0-21-generic 3.5.0-21.32 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP ii linux-image-3.5.0-22-generic 3.5.0-22.34 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP ii linux-image-3.5.0-23-generic 3.5.0-23.35 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP ii linux-image-3.5.0-24-generic 3.5.0-24.37 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP ii linux-image-3.5.0-25-generic 3.5.0-25.39 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP ii linux-image-3.5.0-26-generic 3.5.0-26.42 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP iF linux-image-3.5.0-28-generic 3.5.0-28.48 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP 

注意:这个答案更多的是“解释”,而不是提供删除旧内核的最佳/最简单的方法。 有关删除旧内核的最佳/最简单方法,请查看其他答案。

好的,所以从你发布的/etc/fstab的输出来看,似乎你的/boot安装在一个单独的分区上,并且从df -h的输出,该分区已满。 这是因为安装了不需要的旧内核; 你可以通过查看dpkg -l | grep linux-image的输出来判断 您发布的dpkg -l | grep linux-image ,您可以在其中看到不同版本的多个“ linux-image ”。 我们需要删除旧版本。

首先,我希望您在终端中运行命令uname -r ,这将显示您当前使用的内核版本。 我们永远不想删除该内核版本。 该命令将说明类似于3.5.0- 26 -generic 。 记下这个数字, 26 ! 以下命令将假定您正在运行的内核。

删除旧内核版本的命令是:

 sudo apt-get purge linux-image-xxx-xx-generic 

…其中x个字符是数字。 因此,在您的情况下,因为您有许多旧版本(17,18,19等…),我们必须为每个版本运行此命令,如下所示:

  • sudo apt-get purge linux-image-3.5.0-17-generic
  • sudo apt-get purge linux-image-3.5.0-18-generic
  • sudo apt-get purge linux-image-3.5.0-19-generic

…等等。 但是,有一种方法可以通过一个命令完成所有这些。 命令是这样的( 不要运行命令!阅读以下内容。 ):

 sudo apt-get purge linux-image-3.5.0-{17,18,19,21,22,23,24}-generic 

此命令将删除括号中提到的版本。 由于以下原因,我没有包含版本25,26和28:

  • 显然没有包含26,因为那是您当前运行的内核版本! 这是我们从命令uname -r获得的版本,还记得吗? 我们永远不想删除它!
  • 没有包括28,因为那是你升级试图升级到的那个(你可以从iF状态告诉它,这意味着它是“半配置”)。
  • 没有包括25,因为保留至少一个旧版本通常是一种好习惯。 因此,由于你运行26,我们将保持25,所以我们不会在上面的命令中包含它。

因此,如果uname -r的最后一个数字是26(或28,甚至25),则运行上述命令是安全的。 出现提示时输入密码,并在询问时键入y 。 这将显示一堆行,并最终将返回到命令提示符(在您的情况下, matty@matty-G41M-ES2L:~$ ),希望没有错误。 完成后,执行df -h并查看最后一行,即以/dev/sda1开头的行。 您应该会发现它现在有更多的空间,并且使用的百分比小于100%,就像以前一样。 您现在可以再次继续更新。

您可以安装Ubuntu-Tweak。要按照以下步骤安装:

打开终端。 使用以下命令添加所需的存储库:

 sudo add-apt-repository ppa:tualatrix/ppa 

使用以下命令更新软件列表:

 sudo apt-get update 

最后,使用以下命令安装Ubuntu Teak:

 sudo apt-get install ubuntu-tweak 

之后,打开破折号并输入“ubuntu tweak”。

然后转到janitor选项卡并选择AppsPersonalSystem复选框,然后单击右下角的clean按钮。

删除所有未使用的内核和标头(不包括当前运行的内核)的快速方法已由@Lekensteyn在回答问题的答案中指出如何在/ boot中释放更多空间? :

 sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[az]+//')") 

这应该释放足够的空间供您升级。

这里有关于这个问题的错误报告: https : //bugs.launchpad.net/ubuntu/+source/update-manager/+bug/1183692

随意告诉“这个bug是否也会影响你”,以便它可以得到更多的关注。

在我的家庭Ubuntu系统上,我遵循与发布的类似的方法,但它更简单一点,并清除更多空间包含内核头文件等。

  1. 我检查我正在使用的正在运行的内核,因为必须不干扰它。

     uname -a 
  2. 然后,我查看/ boot,目的是删除与运行内核直接关系的所有内核相关文件。 这给了我一个我要删除的所有内核版本的列表,例如:3.5.0-17,3.5.0-18

     ls -l /boot 
  3. 现在我在清除列表中获取第一个内核版本,并找到与之相关的所有软件包。

     dpkg -l | grep 3.5.0-17 
  4. 从系统中清除它们

     sudo apt-get purge  
  5. 返回3并在清除列表中选择下一个内核版本。

  6. 完成

我得到了这个错误,这篇文章有所帮助。

我使用df -h来识别引导已满, uname -r用于版本,然后使用上面列出的purge字符串来删除旧内核。 单核清除工作,多没有(对我来说)。

我找到了windows中的文件; 我无法删除它们,不得不使用终端,但它确实向我展示了我在那里的旧版本。

我不知道为什么/ boot(sda2)完全被分区,为什么它如此之小。 但现在我可以再次使用Ubuntu更新程序。

我确实在sudo apt-get updatesudo apt-get upgradesudo apt-get clean ,还试过免费软件Bleachbit方面取得了一些小小的成功。 使用清除字符串,但不使用当前版本。 希望这有助于某人。

您是否安装了未使用的旧内核映像包? 那些可以占用/ boot的空间。 我建议使用如下命令查看已安装的内核包集:

 dpkg -l "linux-image*" | grep "^i" 

这应该提供已安装的内核映像包集的概述。 对于那些未被使用且不希望用于恢复目的的linux映像包 – 例如,我喜欢在安装的活动版本后面保留至少一个内核版本,以便进行恢复 – 否则,您可以使用自己喜欢的包装工具(如aptitude)删除任何此类未使用的包。

我还建议您查看相关的inux-headerslinux-image-extras (如果适用), linux-sourcelinux-tools软件包,这些软件包可以与任何未使用的linux-image软件包一起安装。

我怀疑很多人,如果有的话,会遇到这个问题,但我会把它放在这里以备文件,以防有人需要它。

我的问题是我正在编译不同的自定义内核,直到我用完了空间。 我必须清理空间的方法是进入我一直在工作的每个内核目录并运行一个sudo make clean

  • $ cd /usr/src内核源代码所在的目录
  • $ cd linux-image-custom_kernel_name
  • $ sudo make clean

marianoju的答案确实有帮助,除了我使用apt purge出错。 我找不到强制选项。

结合较低级别的dpkg允许我继续:

 sudo dpkg -r $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' \ | grep -ve "$(uname -r | sed -r 's/-[az]+//')")