apt-get autoremove 删除为了满足依赖而安装的,但现在不再需要的软件包(包括已安装包),保留配置文件。 ####第一: 查看ubuntu的版本,首先查询当前我们使用的是内核是那个版本别删错了。
uname -a
####第二: 查询系统中装了多少内核
dpkg --get-selections|grep linux
####第三: 多余的内核可以通过命令删除 需要删除header和image
sudo apt-get remove linux-image-*.*.*-**(*号用你想删除的实际情况改写)
sudo apt-get remove linux-headers-*.*.*-**(*号用你想删除的实际情况改写)
但是在极个别的情况下,会出现不能删除,应为apt-get本身依赖的内核版本还没有安装好,但是/boot已经满了。 这时候方法是
cd /boot
rm *4.4.0.70.generic
apt-get -f install
sudo apt-get autoremove
####第四
执行完上面命令后再次执行
dpkg --get-selections|grep linux
查看内核是否都删除干净了。没干净继续删除。有的内核后面会显示是deinstall 那需要通过 dpkg --get-selections | grep deinstall | sed 's/deinstall/\lpurge/' | sudo dpkg --set-selections; sudo dpkg -Pa
通过上面方法就可以。
还有一种通过正则表达式匹配内核然后除最新的统统统统删除的。
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/.∗-[0−9]\+/\1/")"'/d;s/^[^ ]* [^ ]* []∗.*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
可以参考一下文章 Ubuntu下boot分区剩余空间不足解决 另外还要比较高端的方法是
Ubuntu14.04升级成16.04遇到报错如下 这篇文章,对于空间不够有时候还是不不能解决问题的。
dpkg -l | grep linux-image
sudo apt-get purge --remove linux-image-x.x.0-xx-generic
这两个步骤和我文章上写的有点不一样。功能是一样的。
因为在root下删除可能会导致问题
linux-image-3.19.0-66-generic造成dkpg无法正常工作的问题
解决方法
$ cd /var/lib/dpkg/
$ sudo mv info info.bak
$ sudo mkdir info
$ sudo apt-get update
$ sudo apt-get -f install
这一步里会出现很多warning,是因为dpkg的info文件的缺失,不用担心,后面用info.bak恢复就可以了。
更新和重新配置完成后,恢复info.bak
$ sudo mv ./info/*
./info.bak
$ sudo rm -r info
$ sudo mv info.bak info
完成以上步骤,理论上问题应该解决了。