按照ubuntu官方发布计划,ubuntu16.04将在2021年4月停止工作,加上新出的一些硬件和算法都是考虑了到18.04的兼容,因此,最近开始考虑升级系统的事情。
提醒
最终,我按照下面方法升的两台电脑,都重装系统了。我也说不准是否使用官方的升级方法,会导致某些驱动损坏(尤其是显卡)。但出于安全考虑,建议还是直接手动备份重要数据,然后用启动盘直接安装想要的版本。
0.备份与网络
无论对系统做什么操作,都应当注意备份。我主要进行了数据的备份,至于系统的备份,可以参考https://blog.csdn.net/sinat_27554409/article/details/78227496。此外,应当检查自己的网络情况,最好确保网络不会中断,且网速较快。
1.升级16.04上所有的软件并移除无用软件
sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove
sudo apt dist-upgrade
按顺序执行上述命令即可。全部执行完,重启下系统。其他教程并没有这一步,不过我运行下一步的命令时,系统提示我必须reboot,只好照做。
reboot
安装update-manager-core
sudo apt-get install update-manager-core
执行系统升级
sudo do-release-upgrade
如果运气好,一切正常,一路按y和enter即可。但是一般都会被各种问题卡住,下面介绍典型的错误及解决措施。
3.1 python symlink问题
该问题的报错为:
Your python install is corrupted. Please fix the ‘/usr/bin/python’ symlink.
或
Your python3 install is corrupted. Please fix the ‘/usr/bin/python3’ symlink.
这个问题其实是由于设置了update-alternative导致的,也就是之前为了方便切换不同版本的python做的设置。在升级时,要求python版本必须严格符合原来的链接,因此需要做如下操作。值得注意的是无论报错的是哪个版本,最好把python和python3的操作都执行一遍。
cd /usr/bin
sudo rm python python3
sudo update-alternatives --remove-all python
sudo ln -sf /usr/bin/python2.7 /usr/bin/python
sudo update-alternatives --remove-all python3
sudo ln -sf /usr/bin/python3.5 /usr/bin/python3
即强制的删除update-alternatives的python选项,并将链接恢复到开始的样子。如果上述操作执行后,依然无法do-release-upgrade,此时考虑重新安装python:
sudo apt-get install --reinstall python
sudo apt-get install --reinstall python3
3.2 Calculating the changes
详细报错如下:
Could not calculate the upgrade
An unresolvable problem occurred while calculating the upgrade.
This can be caused by:
Upgrading to a pre-release version of Ubuntu
Running the current pre-release version of Ubuntu
Unofficial software packages not provided by Ubuntu
在我的电脑上是由于ros-kinetic的相关软件导致的,因此只能全部删除了,即属于第三个理由–非官方的软件包。
sudo apt-get autoremove ros-kinetic-*
具体什么软件干扰了升级,可以查看/var/log/dist-upgrade/apt.log,但阅读方式我不知道,因为是直接按照别人的博客删除了ros的。