升级时可用磁盘空间不足

car*_*t95 153 upgrade apt

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

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`.
Run Code Online (Sandbox Code Playgroud)

我尝试在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:~$ 
Run Code Online (Sandbox Code Playgroud)

的输出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:~$ 
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

Ala*_*Ali 202

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

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

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

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

sudo apt-get purge linux-image-x.x.x-xx-generic
Run Code Online (Sandbox Code Playgroud)

...其中 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
Run Code Online (Sandbox Code Playgroud)

此命令将删除括号中提到的版本。由于以下原因,我没有包含版本 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%。您现在可以再次进行更新。

  • 我希望每次我回来参考它时都能对它进行投票……现在它已经有很多了。 (13认同)
  • 是的,再次回到这里引用相同的内容。你会认为我现在会记住它。 (4认同)
  • 别客气!对于另一个问题,创建另一个问题,我会回答它。这样,正在寻找该问题的人就可以找到它。 (3认同)
  • 清除所有旧内核的更简洁的命令是:`sudo apt-get autoremove --purge` (2认同)

αғs*_*нιη 42

您可以安装 Ubuntu-Tweak。安装步骤如下:

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

sudo add-apt-repository ppa:tualatrix/ppa
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get install ubuntu-tweak
Run Code Online (Sandbox Code Playgroud)

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

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

  • 比弄乱命令行并尝试删除所有内核但在它们甚至具有不同版本(不仅是最后的 -32)和 -extra 数据包时还不是最新的要好得多。Ubuntu 调整为我节省了 5 分钟,谢谢! (9认同)

mar*_*oju 19

一个快速的方法来删除所有未使用的内核和头(不包括当前正在运行的内核)已经指出的@Lekensteyn在他回答的问题我如何腾出/启动更多的空间?

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

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


alc*_*lci 6

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

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


小智 5

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

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

    uname -a
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后,我查看 /boot,目的是删除所有与正在运行的内核不直接相关的内核相关文件。这为我提供了要删除的所有内核版本的列表,例如:3.5.0-17、3.5.0-18

    ls -l /boot
    
    Run Code Online (Sandbox Code Playgroud)
  3. 现在,我在清除列表中取出第一个内核版本,并找到与其相关的所有软件包。

    dpkg -l | grep 3.5.0-17
    
    Run Code Online (Sandbox Code Playgroud)
  4. 从系统中清除它们

    sudo apt-get purge <list of packages separated by spaces>
    
    Run Code Online (Sandbox Code Playgroud)
  5. 返回到 3 并在我的清除列表中选择下一个内核版本。

  6. 完毕