之前看HIVE上的热帖,有大佬将HIVE见证人节点升级到v1.27.4,于是去gitlab上看了一眼,原来早在6天之前,HIVE发布了v1.27.4版本。
(图源 :pixabay)
因为这个是HIVE的小版本升级,原则上,见证人们(尤其是轮值见证人)不是必须升级的(现在很多见证人还在允许v1.27.0版本呢),所以我只是在我本地节点上升级了一下。
编译遇到的小问题
这次升级的Release Notes提到了一点:
General notes: upgrade to Ubuntu 22.04 as base supported OS
也就是说,无论是编译还是运行,原则上都应该基于Ubuntu 22.04 ,否则可能会遇到一些意料之外的问题。
好在我前段时间已经将所有的VPS、本地机等系统都升级到Ubuntu 22.04 LTS,所以以Ubuntu 22.04作为基本支持的操作系统正合我意。
我是在一台从未编译过HIVE的次新VPS上进行的编译(之所以称之为次新,是因为在曾在上边编译过一些其它的应用),和编译v1.27.3不同,遇到了一些问题。
问题一:找不到Boost库
解决方法:
sudo apt install libboost-all-dev
问题二:找不到Snappy库
解决方法:
sudo apt install libsnappy-dev
问题三:找不到Readlin库
解决方法:
sudo apt install libreadline-dev
之所以出现这些问题,都是因为我用的是次新的VPS,之前没有在这台机器上编译过HIVE,如果编译过,就不用进行上述操作了。
除了使用上述哪里出问题解决哪里的笨方法,我们还可以通过运行HIVE源码包中的指定脚本一劳永逸地解决上述问题。
指令如下:
sudo ../hive/scripts/setup_ubuntu.sh --dev
(更多详情请参考HIVE的编译指南)
升级一下本地节点
解决了上述问题后,编译过程就很顺利啦,很快就编译出我需要的几个文件。然后用scp
指令复制到我本地电脑的对应目录。
运行一下,熟悉的图标出来了,版本也没有错误:
不过因为这次更新修改了HIVED状态库格式,所以v1.27.3及以前版本想切换到这个版本上都需要Replay区块链。
Warning: this update changes hived state format and requires hived node replay, if you are using version 1.27.3 or earlier.
所以用如下指令强制replay一下:
hived_v1.27.4 --force-replay
然后就开始了漫长的Replay:
我是在昨天晚上11点前后开始Replay的,早晨起床看,已经完成了,本地节点已经正常运转,所以估摸Replay时间应该在8-9小时以内。
看了一下见证人列表,目前只有两个见证人在运行v1.27.4,而且看见证人频道中的聊天信息,大佬说这次更新主要是针对API节点(尤其是基于HAF的节点),所以我就先不切换见证人啦。
更多技术细节,大家去看文末链接中的Release Notes吧,我就不再赘述啦。