升级时可用磁盘空间不足

升级时可用磁盘空间不足

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

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,但仍然收到消息。我读到的所有页面似乎都是为经验丰富的 Ubuntu 用户准备的。我正在运行 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).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/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给出:

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

答案1

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

好的,从输出来看/etc/fstab你发帖说,看来你的/boot安装在单独的分区上,并且从输出df -h,该分区已满。这是因为安装了不需要的旧内核;您可以通过查看dpkg -l | grep linux-image您发布的内容,您可以看到多个“Linux 映像“具有不同的版本。我们需要删除旧版本。

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

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

sudo apt-get purge linux-image-x.x.x-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%,就像以前一样。您现在可以继续更新。

答案2

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

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

sudo add-apt-repository ppa:tualatrix/ppa

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

sudo apt-get update

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

sudo apt-get install ubuntu-tweak

之后,打开 dash 并输入“ubuntu tweak”。

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

答案3

@Lekensteyn 在他的文章中指出了一种快速删除所有未使用的内核和头文件(不包括当前正在运行的内核)的方法回答针对这个问题如何在 /boot 中释放更多空间?

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

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

答案4

在我家的 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 <list of packages separated by spaces>
    
  5. 返回 3 并在我的清除列表中选择下一个内核版本。

  6. 完毕

相关内容