昨天的帖子折腾之:编译hived失败中提到,编译最新版本的v1.26.0rc3,需要Ubuntu 20.04 LTS及以上版本。
(图源 :pixabay)
而我的一堆VPS和本地机都是运行着Ubuntu 18.04 LTS,唯一一台运行Ubuntu 22.04 LTS的机器配置太低,估计没法跑编译程序。
哎,这样的话,只好尝试升级几台VPS喽。原本以为只要执行一条简单的命令就可以,毕竟每次登录Ubuntu 18.04时,都会被提示:
New release '20.04.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
结果失败了好几次不说,还险些把VPS折腾死,简直就是惊险万分,吓死个人。
第一次升级
既然提示信息告诉我执行 do-release-upgrade
就可以升级,那么咱就直接上手开整 :
do-release-upgrade
运行上述命令后,提示我输入账户密码,毕竟升级系统,没超级用户权限怎么可以
Reveal spoiler
输入密码后:
Reveal spoiler
大意是通过SSH升级不被推荐,有卡机的风险。如果非要用SSH升级,系统会帮忙开辟个新端口,这样出错的时候可以用来连接恢复。
不要怂,就是干:
Reveal spoiler
这个提示我们在防火墙中允许这个端口,不然开个新端口还被防火墙拦截了,就尴尬了。
因为我使用的是ufw
,所以无需使用iptables指令,而是直接使用如下命令:
sudo ufw allow 1022/tcp
然后按回车继续:
Reveal spoiler
上边好像没啥值得特别说的,继续按回车:
Reveal spoiler
好吧,貌似出错了:
Reveal spoiler
这两段信息中,核心信息就是:
After updating your package information, the essential package 'ubuntu-minimal' could not be located. This may be because you have no official mirrors listed in your software sources, or because of excessive load on the mirror you are using.
在VPS上,我安装的系统是ubuntu-minimal,看来是这个引起的问题。不过,不管咋说,第一次升级,我是失败了。
第二次升级
在第一次升级失败后,我已经打算放弃了。毕竟我还可以用其它的方法,比如说给VPS重做系统来安装Ubuntu 20.04 LTS。作为一个有严重系统洁癖的人,我总觉得全新安装要比升级上来干净得多。
不过就这样放弃,我还有点不死心,于是又一通查找资料,别说,还真的让我找到N种解决方案。
方案一
使用如下指令替代do-release-upgrade
sudo RELEASE_UPGRADER_ALLOW_THIRD_PARTY=1 do-release-upgrade
方案二:
使用如下指令(原则上效果和作用同方案一)
sudo do-release-upgrade --allow-third-party
方案三:
编辑/etc/apt/sources.list
把linode相关链接中的bionic
替换成focal
(因为我用的是linode的VPS)。
我最终决定直接执行方案一,亦即执行指令:
sudo RELEASE_UPGRADER_ALLOW_THIRD_PARTY=1 do-release-upgrade
发现升级果然能继续进行,曙光呈现,哇咔咔,真开心啊。
基本上重走一遍第一次升级的流程,然后继续继续,出现这样一堆提示,是什么鬼?不过好像没啥影响:
Reveal spoiler
继续继续,不要停:
Reveal spoiler
结果当我敲下y
之后,putty的连接就断开了。重连发现也无法连接。
不过不怕,不是有1022端口呢嘛?试试连1022,果然没问题。但是我当时手贱搞了一下科学上网,结果又被踢了出来,再连就死活链接不上了。出如下提示:
Reveal spoiler
我试了N多次,都无法链接,在其它机器上,使用ssh指令连接,则出现如下出错信息:
ssh_exchange_identification: read: Connection reset by peer
(ssh指令加上-v
选项会打印出更多的信息,但是同样是一头雾水)
这下彻底凉了,一般这种情况可以尝试重启sshd,但是问题是,我无法连上主机,咋进行操作啊?
令人揪心的是,这台VPS上,有好多好多重要数据,如果真的彻底挂掉了,我只能哭了。好后悔,自己为啥没提前备份一下呢?
第三次升级
后悔了大半天之后,我觉得只拍大腿也不是办法,必须考虑一下怎么解决才好。
我想到的解决方案有试试强制重启,重启无效的话,试试能不能将这个卷挂载到其它VPS上以备份出重要数据?
无论重启还是挂载都先要进Linode的管理面板中研究一下,不过进管理面板后,无意中发现了 这个选项,而这个是通过ttyS0(也就是串行通信口)连接的。
咦,这么说,我岂不是有救了?连上之后,执行sudo screen -r
,果然发现了正在进行中的升级程序,现在是卡在某个让用户做出选择的页面。不过因为webshell不太好用的缘故,显示的一团糟,我只好瞎选了。
然后开始进行下去:
Reveal spoiler
Reveal spoiler
Reveal spoiler
Reveal spoiler
Reveal spoiler
Reveal spoiler
Reveal spoiler
这些就不一一解释了,懂点英语看这个都没啥问题。然后提示重启,重启后,我发现终于可以用putty正常连接啦。
看一下连接后的提示信息:
Reveal spoiler
再把我之前VPS上运行的程序都运行起来,貌似没啥问题。哎,尽管过程惊险万分,不过总算是升级成功了,太吓人啦!!😱😱😱😱😱
尽管升级成功了,我决定再也不采取这样的方式了,一个是太过于吓人;再有就是我系统洁癖的强迫症又犯了,所以以后决定还是给VPS重新做系统比较好。
可是新的问题来,在AWS的VPS似乎没法重做系统,尽管创建新的实例,然后把数据迁移过去似乎一样,但是默认的IP什么的就变了。哎,愁人啊!咋办好呢?
👍👍
我都不敢在VPS操作升级系统,O神厉害,大写的服👍
我觉得VPS上最靠谱的操作还是先备份数据后重做系统
不过那样太累了😵
可以写个脚本定期把重要数据打包备份
又搞高端的,完全看不懂。
AWS ec2上,狠心实际操作了一下升级
只能说,如丝般顺滑,一切都很顺利
(不过我的Python环境崩溃啦)
厉害了,O哥
來跟歐哥學習