之前一直没怎么去了解过EOS,除了偶尔看看各种新闻稿,总觉的EOS上线是遥不可及的事情,结果一转眼,EOS结束了众筹,主网上线都好多天了,于是想着该去了解一下啦。
系统要求和准备
单单看别人说这玩意如何如何感觉太凌乱,还是自己上手操作一下吧,那么就先从build开始。按照官方文档,写着的系统要求是:
- 8GB 以上可用内存
- 20GB以上可用空间
于是我就选个如下配置的VPS吧:
设置好VPS后,更新一下系统,然后在添加一个测试用户,就开工喽。
获取源代码
登陆测试用户,执行如下指令:
git clone https://github.com/EOS-Mainnet/eos.git --recursive
cd eos
git checkout mainnet-1.0.5
git submodule update --init --recursive
(一直搞不懂EOS-Mainnet和EOSIO上的EOS有啥区别,懒得细想啦)
执行自动编译脚本
相比于其它软件,EOS提供了一个自动编译脚本,支持以下几个主流的系统:
- Amazon 2017.09 and higher
- Centos 7
- Fedora 25 and higher (Fedora 27 recommended)
- Mint 18
- Ubuntu 16.04 LTS (Ubuntu 16.10 recommended)
- Ubuntu 18.04 LTS
- MacOS Darwin 10.12 and higher (MacOS 10.13.x recommended)
我们只需运行如下指令即可
./eosio_build.sh
编译过程
自动编译脚本通过运行类似如下语句来判断系统环境:
OS_NAME=$( cat /etc/os-release | grep ^NAME | cut -d'=' -f2 | sed 's/\"//gI' )
然后根据系统环境包含对应环境下的编译脚本,以我的系统Ubuntu 16.04.4 LTS
为例,eosio_build.sh
会将./scripts/eosio_build_ubuntu.sh
包含进来。然后对内存(free
)大小、CPU(lscpu
)、磁盘空间(df
)等进行对应的检查:
对于在下编译EOS,依赖于以下工具包:
DEP_ARRAY=(clang-4.0 lldb-4.0 libclang-4.0-dev cmake make automake libbz2-dev libssl-dev libgmp3-dev autotools-dev build-essential libicu-dev python2.7-dev python3-dev autoconf libtool curl zlib1g-dev doxygen graphviz)
脚本会对系统已安装的工具包进行判断(dpkg
)
整理出缺少的工具包
提示安装
Do you wish to install these packages?
1) Yes
2) No
习惯性的敲了个Yes,然后却被提示如下信息:
Please type 1 for yes or 2 for no.
好吧,我瓦特了,原来这个是个选择题,不是填空题,输入1
,当然要安装这些工具包啦,不然也没法玩,不是嘛。然后提示输入sudo 密码:
Installing dependencies
[sudo] password for xxxx:
xxxx is not in the sudoers file. This incident will be reported.
当初我看到很这个EOSIO github上的wiki页面,我就很好奇,也没说要求用root权限,也看到sudo之类的指令,那么那么gcc啊啥的是怎么装上的去呢?莫非能本地用户安装,执行了一遍./eosio_build.sh
脚本,我就知道了,原来在这等着我呢!看来想破脑瓜不如去操作一遍啊。
然而我建的就是个普通用户,没赋给sudo权限,所以这块肯定就卡住了,将这个用户赋予了sudo权限后,重新执行,脚本自动完成了上述工具包的下载和安装。
之后编译和安装boost,这块没啥毛病,只是有一堆很壮观的警告信息(部分截图)
然后编译和安装MongoDB,这块再次需要用到sudo权限。
然后我就不理它了,休息去鸟。忙了一阵,才想起来我还在build EOS呢,回来一看,哇竟然完成了。
测试验证
按上边的提示信息,可以运行下列指令测试我们编译出来的东西是否正常
export PATH=${HOME}/opt/mongodb/bin:$PATH
/home/xxxx/opt/mongodb/bin/mongod -f /home/xxxx/opt/mongodb/mongod.conf &
cd /home/xxxx/eos/build; make test
之前的测试很快
后边的测试耗时有些就有些长了,不过好在编译的东西没啥问题。
好了,编译就学到这里啦,尽管依然一头雾水,不过可是慢慢学啦。