尝试进行日常更新时,我在软件更新程序中遇到错误。它说:

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


评论

另外,/ etc / fstab的内容可能会有所帮助。看起来/ boot是安装在单独的分区上的。

就像说@Githlar一样,您的fstab可以为我们提供有关高清分区的信息。

fstab是一个文件,其中包含有关在引导计算机时挂载的分区的信息。要显示此文件的内容,请在终端中键入cat / etc / fstab。复制输出并将其添加到您的问题(您可以编辑您的问题)。另外,复制df -h和dpkg -l的输出。 grep linux-image。

您的问题是/ boot分区中所有多余的linux-image ...文件都占用了空间-分区上只有6MB的可用空间。 sudo dpkg -P清除'older_linux_image_filename'以除去除最新版本外的所有版本= 3.5.0-28.48和3.5.0-26.42。这应该允许您更新/升级。

我只需要运行sudo apt-get autoremove即可解决此问题。

#1 楼


注意:这个答案比起提供最好/最简单的删除旧内核的方式,更像是一种“解释”。对于删除旧内核的最佳/最简便方法,请查看其他答案。


好吧,所以从您发布的/etc/fstab的输出看来,您的/boot似乎安装在单独的位置分区,并且从df -h的输出中,该分区已满。这是因为安装了不需要的旧内核。您可以通过查看发布的dpkg -l | grep linux-image的输出来了解这一点,在这里您可以看到多个具有不同版本的“ linux-image”。我们需要删除旧版本。首先,我希望您在终端中运行命令uname -r,这将向您显示当前使用的内核版本。我们永远都不想删除该内核版本。该命令将说出类似3.5.0-26-generic的内容。记下该数字26!以下命令将假定您正在运行的内核。

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

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%。现在,您可以再次进行更新。

评论


有效!!!非常感谢!额外的问题:当我第一次下载Ubuntu时,我不小心删除了家庭区域中的“图片”文件夹。因此,侧面没有“图片”标签。我只是通过创建一个名为“图片”的文件夹来解决这个问题,但是它没有显示在侧栏中。你知道怎么去那里吗?我尝试单击并拖动,但无济于事。 @Alaa

–carmatt95
13年5月24日,3:30



别客气!对于另一个问题,请创建另一个问题,我会回答。这样,正在寻找该问题的人们可以找到它。

– Alaa Ali
13年5月24日在14:22

我希望我每次回来引用它时都可以投票赞成……到现在它已经很多了。

–sevenseacat
2014年2月24日,下午1:41

是的,再次回到这里引用相同的内容。您可能认为我现在会记得它。

–sevenseacat
14年7月18日在1:33

清除所有旧内核的更简洁的命令是:sudo apt-get autoremove --purge

– ctrueden
16年7月29日在14:28

#2 楼

您可以安装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复选框,然后单击右下角的清理按钮。 br />

评论


这比弄乱命令行并尝试删除所有内核(但它们的版本不同(不仅是-32结尾)而且还有-extra包)不是最新版本要好得多。 Ubuntu的调整为我节省了5分钟,谢谢!

– POMATu
2014-09-27 21:29



方便多了。

– Saeed Amiri
14-10-29在18:39

我无法添加PPA,但是我从proyect的网站ubuntu-tweak.com下载了.deb

–路易吉·西里(Luigi Siri)
14-10-30在13:06



无需在ubuntu 14.04上添加PPA

–爱德华·托瓦尔兹
2014年12月17日下午16:13

@edwardtorvalds当然,您可以安装它而无需通过.deb软件包在14.04和14.10上添加其PPA,但这并不是最可取的。您要通过其PPA安装该软件的原因是因为它可以确保更新。

–αғsнιη
2014年12月17日在18:16

#3 楼

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

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


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

#4 楼

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

请随意告诉“此错误是否影响您也是”,这样它可能会引起更多关注。

#5 楼

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



我检查正在运行的内核我正在使用它,因为它势在必行。

uname -a



然后,我看一下/ boot,目的是删除所有与内核相关的与正在运行的内核没有直接关系的文件。这列出了我要删除的所有内核版本,例如:3.5.0-17、3.5.0-18

ls -l /boot



现在,我在清除列表中获取第一个内核版本,并找到与其相关的所有软件包。

dpkg -l | grep 3.5.0-17



从系统中清除它们

sudo apt-get purge <list of packages separated by spaces>


回到3并在我的清除列表中选择下一个内核版本。
完成


#6 楼

我遇到了这个错误,本文对此有所帮助。

我使用df -h标识启动已完成,使用uname -r标识版本,然后使用上面列出的purge字符串删除了旧内核。单内核清除工作正常,多内核清除没有(对我而言)。

我在Windows中找到了文件;我无法删除它们,必须使用终端,但是它确实向我显示了其中的旧版本。

我不知道为什么/ boot(sda2)完全被分区以及为什么对其进行分区好小。但是现在我可以再次使用Ubuntu更新程序了。

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

评论


编辑:我认为您不必在清除字符串中添加“ -generic”

– Brian P
14年8月13日在2:55

#7 楼

您是否安装了未使用的旧内核映像软件包?这些会占用/ boot上的空间。我建议使用以下命令检查已安装的内核软件包的集合:

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


这应该概述已安装的内核映像软件包的集合。对于那些未被使用并且出于恢复目的预期不需要它们的linux-image软件包-例如,例如我希望在安装的活动版本之后至少保留一个内核版本以进行恢复-否则,您可以使用喜欢的打包工具(如aptitude)删除任何此类未使用的软件包。

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

#8 楼

我怀疑会有很多人(如果有的话)遇到这个问题,但是如果有人需要它,我会把它放在这里作为文档。

我的问题是我一直在编译不同的自定义内核,直到运行空间不足。清理空间的方法是进入我一直在工作的每个内核目录,然后运行sudo make clean



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


#9 楼

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

结合较低级别的dpkg使我可以继续进行操作:

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


#10 楼

如果您有这些东西,可以尝试使用以下命令删除旧的内核映像包。

sudo apt autoremove


之后,您就可以进行更新了