I. Ubuntu虽然继承于Debian,使用修改source.list的方式进行升级是可行的,但是一般情况下的发行版升级都会使用do-release-upgrade。
Ubuntu在同一个LTS的区间内是可以跨版本升级的,也就是说16.04到18.04内的任意版本,都是可以直接升级至18.04,但也只能升级到18.04。
我很懒,所以我得想办法直接从16.04升级到20.04才行。
II. 准备工作。此处我使用纯净的16.04版本进行操作。并且在准备过程中,我卸载了snapd等lxd相关的软件,以避免不必要的麻烦。
为了防止伸手党采集转载,本文有部分地方模糊处理了,如有疑问可以留言。
III. 开始升级。
注意:一旦开始升级,你就没有回头的机会了,Think before you do.
a.修改/etc/lsb_release,以欺骗do-release-upgrade获得版本信息,修改所有版本信息为18.04;
b.执行do-release-upgrade -d,期间会报错,是因为16.04的keyring太旧,需要导入ID为991BC93C的公钥;
c.重新执行do-release-upgrade -d,期间可能会遇到python报错,具体为import distro_info不存在,此时需要安装python3-distro-info;
d.重新执行do-release-upgrade -d,期间可能会出现上一步的组件中找不到get_all方法,则需需要下载