我的/ boot分区达到100%,现在我无法升级。 无法删除旧内核以腾出空间
我的第一个问题是当我尝试apt-get update
或apt-get upgrade
。 在升级时,我收到以下错误:
You might want to run 'apt-get -f install' to correct these. The following packages have unmet dependencies: linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not installed E: Unmet dependencies. Try using -f.
我试过运行apt-get install -f这是输出(在提示后说是的)
(Reading database ... 186183 files and directories currently installed.) Unpacking linux-image-3.2.0-27-generic (from .../linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb) ... Done. dpkg: error processing /var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb (--unpack): failed in write on buffer copy for backend dpkg-deb during `./boot/System.map-3.2.0-27-generic': No space left on device No apport report written because the error message indicates a disk full error dpkg-deb: error: subprocess paste was killed by signal (Broken pipe) Examining /etc/kernel/postrm.d . run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic Errors were encountered while processing: /var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb E: Sub-process /usr/bin/dpkg returned an error code (1)
我尝试运行apt-get autoremove
,它给了我与apt-get upgrade
相同的错误。
当我运行df
,我得到/boot
:
/dev/sda1 233191 230297 0 100% /boot
所以,我在别处读到我应该尝试清除旧内核。 我检查了我的内核:
$ dpkg -l linux-image-\* | grep ^ii ii linux-image-2.6.38-13-server 2.6.38-13.52 Linux kernel image for version 2.6.38 on x86_64 ii linux-image-3.0.0-13-server 3.0.0-13.22 Linux kernel image for version 3.0.0 on x86_64 ii linux-image-3.0.0-14-server 3.0.0-14.23 Linux kernel image for version 3.0.0 on x86_64 ii linux-image-3.0.0-15-server 3.0.0-15.26 Linux kernel image for version 3.0.0 on x86_64 ii linux-image-3.0.0-16-server 3.0.0-16.29 Linux kernel image for version 3.0.0 on x86_64 ii linux-image-3.0.0-17-server 3.0.0-17.30 Linux kernel image for version 3.0.0 on x86_64 ii linux-image-3.2.0-24-generic 3.2.0-24.39 Linux kernel image for version 3.2.0 on 64 bit x86 SMP ii linux-image-3.2.0-25-generic 3.2.0-25.40 Linux kernel image for version 3.2.0 on 64 bit x86 SMP ii linux-image-3.2.0-26-generic 3.2.0-26.41 Linux kernel image for version 3.2.0 on 64 bit x86 SMP
当我尝试删除最老的时候:
$ sudo apt-get purge linux-image-2.6.38-13-server Reading package lists... Done Building dependency tree Reading state information... Done You might want to run 'apt-get -f install' to correct these: The following packages have unmet dependencies: linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not going to be installed E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
如何在不弄乱我的安装的情况下释放或扩展启动?
释放根文件系统上的空间
要释放根文件系统上的空间,您可以尝试执行apt-get clean
。
如果这不起作用,您可以转到/var/cache/apt/archives
并从缓存中手动删除一些文件以获得一些空间,例如:
sudo rm linux-headers-*
如果需要,删除所有.deb
文件也不会有什么坏处 – 这就是apt-get clean
作用。 如果再次需要,它们将被apt
重新下载。
释放/ boot文件系统上的空间
原始海报有一个单独的/boot
分区,这是充分的,并阻止apt
系统工作。 他有必要在那里腾出空间。
如果有足够的空间,请转到/boot
并删除一个或两个配置文件:
sudo rm config-3.2.0-19-generic-pae
例如,但使用您打算删除的内核版本之一的名称。 这将释放一点空间(每个约144K)。
如果您需要更多空间,请单独删除旧的vmlinuz
, initrd
, abi
和System.map
文件,直到您有足够的空间(对于我的一个i386内核版本大约22M)。
无论你做什么, 都不要将它们全部删除 。 对于您使用的每种内核,您至少应保留每种文件的最新两个匹配版本。
然后继续执行apt-get install命令。 如上所述,他们可能不得不重新下载你删除的一些deb,但如果是这样的话会自动发生。 当你再次使用apt时,使用apt-get清除与你删除的文件相对应的包 – 所以一切都匹配。
/boot
的配置文件是内核团队用来构建同名内核的内核配置。 删除它应该是无害的,除非您想要它作为参考或帮助您构建自己的内核。
最后,您手动从/boot
分区中删除一个或两个旧内核包,以便为新内核创建更多空间。
就我而言, apt
命令和dpkg
命令无法完成,无法删除。 autoupdate在安装2.6.32-56-server
失败。
我的第一步是确定要使用的空间,
cd /boot du -sk *|sort -n
我有大约30个内核和支持文件。
我做了一个uname -a
来获取正在运行的内核,我发现我在Linux备用2.6.32-43-server
并且做了6个没有运行的版本的tar
,并且已经老了。
tar -cvf ~username/boot.tar *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server
然后我做了我备份的rm -rf
:
rm -rf *2.6.32-44-server *2.6.32-45-server *2.6.32-46-server *2.6.32-47-server *2.6.32-48-server *2.6.32-49-server
我将这些命令作为示例显示,您必须根据自己的情况决定使用哪些命令。
现在我在/boot
上有一些空间,我能够运行
apt-get -f install
清理2.6.32-56-server
的失败安装。
然后我做了一个
apt-get remove linux-headers-2.6.32-38 linux-headers-2.6.32-38-server linux-image-2.6.32-38-server apt-get remove linux-headers-2.6.32-39 linux-headers-2.6.32-39-server linux-image-2.6.32-39-server
这让我有空间放回我备份的内容。
tar -xf ~username/boot.tar rm ~username/boot.tar
为了清理,我可以运行:
apt-get autoremove
我重新启动,现在使用4%的/boot
。
您可以使用dpkg
而不是apt-get
来删除旧内核:
sudo dpkg -r linux-image-3.2.0-29-generic
我注意到引导目录中仍然存在旧版本的一些文件:
$ ls /boot vmcoreinfo-2.6.31-17-server
包管理器会列出旧版本:
dpkg -l | grep linux-image
因此我使用了这个命令( autoremove
也会删除我不想删除的更新的图像)
sudo apt-get purge linux-image-2.6.31-17-server
我还有一些标题:
dpkg -l | grep linux-headers
所以我这样做了:
sudo apt-get purge linux-headers-2.6.32-34
最后有一个包我无法用apt-get purge删除:
$ dpkg -l | grep linux-image rc linux-image-2.6.28-11-server
来源: 删除dpkg标记为rc的包
sudo dpkg --purge linux-image-2.6.28-11-server
这是我用过的:
sudo apt-get autoremove linux-image-xxxx
为所有旧内核执行此操作并仅保留最新的内核。
如果要自动删除旧内核并更新GRUB,请参阅: Ubuntu文档
您无法对包执行操作,但您可以对其他文件执行操作。 首先,浏览您的主文件夹,看看是否有任何可以删除的内容。 如果没有,尝试将大量文件移动到另一个分区(或闪存驱动器),然后尝试sudo apt-get install -f
来清除程序包依赖性问题(很可能你通过dpkg
安装了.deb文件),然后清除任何旧内核。 一旦您安全地拥有至少10 MB,请尝试清除不需要的软件或文件。
使用Synaptic Package Manager。 只需选择要删除的包,它将提示您还删除依赖它的包。 根据我的经验,内核包总是以两个为一组(或更多,取决于你如何计算)相互依赖。 您通常可以使用“本地/过时”filter快速找到旧的。
简单地运行sudo apt-get -f autoremove
解决了我的问题。
我发现唯一对我有用的是使用Aptitude。
sudo aptitude
然后当它打开时,它通常会说明底部的未满足依赖关系。 你可以点击字母g
继续建议删除。 它将带您进入一个页面,列出将要发生的事情。
应该有一个减号-
在破碎的内核旁边。 再次按g
,它将删除损坏的内核。 按q
退出。 然后你应该能够使用sudo apt-get autoremove
来摆脱旧内核并释放空间。
检查/var/tmp
与du -sh /var/tmp/
。 可以删除该文件夹中的所有文件以腾出空间。
然后,您可以运行以下命令来删除旧内核:
sudo apt-get clean sudo apt install byobu sudo purge-old-kernels sudo apt autoremove sudo update-grub
运行这个:
sudo apt-get autoremove sudo apt-get --purge remove && sudo apt-get autoclean sudo apt-get -f install sudo dpkg-reconfigure -a
来源: upgade后我收到此错误。 请帮忙