当初建站的时候,选择了Ubuntu 18.04 LTS。Ubuntu操作系统的更新频率为一年两次,分别在每年的四月和十月,版本号也是用年份+月份的命名方式,比如20.04代表2020年4月的版本。Ubuntu每个版本还会有一个代号——首字母相同的一个形容词+一个动物名的方式,每个版本的代号的首字母是按照字母表来排序的——比如20.04的代号就是Focal Fossa,20.10的代号是Groovy Gorilla。
如此频繁的更新节奏,对于使用想尝试新功能的用户和发烧友来说还算过得去,但是对于以追求稳定和安全为目标的生产环境,就不一定是好事了。为此,Ubuntu推出了LTS版本——Long Term Support——每个偶数年的第一个版本为LTS版本,比如16.04,18.04,20.04。每逢LTS版本,Ubuntu并不会加入太多的新功能,而每个LTS版本则提供了五年的技术支持,而普通版本的Ubuntu只有一年的支持周期。
所以这次的目标就是从18.04 LTS升级到20.04LTS。有一点需要注意,即便新的LTS版本已经发布,也无法在第一时间将老的LTS版本自动升级,而需要等到第一个维护版本(Point Release)上线之后才能升级。
维护版本是指LTS支持周期内发布的升级,利用小版本号区分——比如20.04的第一个维护版本就是20.04.01,而上一代18.04 LTS已经更新到了18.04.05。维护版本一般会修正大量的Bug和安全漏洞,使其更稳定,之所以要等到维护版本上线才提供系统自动升级用意也是在此。每个LTS的第一个维护版本一般在初版之后3-4个月推出。比如20.04 LTS,在今年2020年4月发布,但是第一个维护版本20.04.01直到8月6日才上线。
维护版本一般会第一时间同步到Ubuntu官方的镜像源,但是对于阿里云来说(我的网站的服务商),他们并不支持虚拟机跨版本升级操作系统,所以阿里云的镜像即便在维护版本推出以后也无法自动运行自动升级来升级Ubuntu,不过也不是个事儿。
升级系统前,为了保险起见,会进行备份,阿里云可以提供磁盘快照服务,在升级前创建一个快照即可,如果出了什么问题直接恢复快照即可。
然后我会将当前系统所有可以安装的补丁都装上,确保是最新的状态。下面的命令都是以Ubuntu为例子。
sudo apt update
sudo apt full-upgrade
之后就可以运行下面的自动更新命令来检查最新的LTS版本。
sudo do-release-upgrade -d
这条命令会连接到默认的源服务器去检查更新,末尾的-d意味着会检查开发版本,因为之前提过维护版本在阿里云的镜像上面不支持自动更新。
检测到新版本之后,由于服务器一般都是通过SSH远程登陆且没有GUI界面,所以升级程序会提醒你是否需要在SSH连接的情况下进行升级,并会生成一个临时SSH会话连接,以防升级过程中断开连接以便重新连接。
接下去的过程就比较自动了,系统会自己下载升级所需的补丁文件,由于是阿里云的虚拟服务器从阿里云Ubuntu镜像源下载,所以速度还是比较快的。
升级过程中会禁用所有第三方的源,所以升级过后需要手动启用。
升级过程中,由于一些程序已经进行过一些自定义设置,所以会询问你是否需要保存原来的设置文件或者是安装原始版本,这里当然是选择保留旧的版本,否则就要重新配置了。
安装过程中也会询问是否需要移除一些无用的软件包,我一般选择移除。
升级完成之后就会提醒重启,之后就可以确认一下是否安装到了最新的LTS。
sudo lsb_release -a
总的来说,Ubuntu LTS的升级很简单,升级之后也无需做什么额外的配置,所以运行的服务和程序都完美过渡。
原创文章,作者:麦胖,如若转载,请注明出处:https://www.fatmike.net/upgrading-ubuntu-lts/