目录
简介
EOS,可以理解为Enterprise Operation System,即为商用分布式应用设计的一款区块链操作系统。EOS是引入的一种新的区块链架构,旨在实现分布式应用的性能扩展。注意,它并不是像比特币和以太坊那样的货币,而是基于EOS软件项目之上发布的代币,被称为区块链3.0。百度百科
本文使用的EOS是2018年8月23日在Git中下载master版本;源码版本差异过大的可能本文不适用。
EOS使用C++开发,CMake编译,依赖于Clang、CMake、Boost、OpenSSL、LLVM、secp256k1-zkp、MongoDB等等,以上部分包在yum中没有对应的版本的需要下载源码编译(yum中包含的大部分会在脚本中自动下载安装)。EOS的环境的编译安装对于硬件有一定的要求,官方说明中需要至少20G硬盘空间,8G内存;
本文所使用的环境Centos7、1核CPU、8G内存、10+G硬盘空间。
EOSIO附带了许多程序。使用的主要部分是:
- nodeos(node + eos = nodeos) - 可以配置插件来运行节点的核心EOSIO节点守护程序。示例用途是块生产,专用API端点和本地开发。
- cleos (cli + eos = cleos) - 命令行界面,用于与区块链交互并管理钱包
- keosd (key + eos = keosd) - 将EOSIO密钥安全存储在钱包中的组件。
这些组件之间的基本关系如下图所示。在接下来的部分中,将构建EOSIO组件,并将它们部署在单个主机,单节点测试网络中。
准备工作
首先执行以下命令,确保都安装成功:
$ yum install git
$ yum install gcc
$ yum install gcc-c++
$ yum install centos-release-scl
$ yum install devtoolset-7
$ scl enable devtoolset-7 bash
$ yum install python33.x86_64
build EOS
完成后使用Git下载源码,并进入eos目录:
$ git clone https://github.com/eosio/eos --recursive
$ cd eos
在eos目录下执行如下命令就可以编译eos了,但是在这一步需要确保机器拥有至少20G硬盘空间,8G内存,并可以翻墙。如果达不到要求请看下一节。
$ ./eosio_build.sh
正常成功的情况下会显示,从图中可以看到执行了5个多小时,而且期间还是中断好几次的;总之这个过程机器不好的话非常耗时。
但失败的情况会更大一点。
build EOS失败解决办法
Your system must have 7 or more Gigabytes of physical memory installed.
Your system must have 7 or more Gigabytes of physical memory installed.
意思很明确内存不达标,不增加硬件的解决办法就是:
修改对应的脚本验证
$ cd /data/eos/scripts
在这个目录下有一个eosio_build_centos.sh文件是对应我centos的编译脚本,其他环境的也在这个目录。将其打开后,第25行左右:
if [ "${MEM_MEG}" -lt 7000 ]; then
printf "\\n\\tYour system must have 7 or more Gigabytes of physical memory installed.\\n"
printf "\\tExiting now.\\n\\n"
exit 1;
fi
两个选择,一种吧把7000改700或者别的,反正比机器内存小就行;另一种直接注释。
如果硬盘不足,提示:
You must have at least 20GB of available storage to install EOSIO.
那么同理将eosio_build_centos.sh文件37行左右修改或注释。
if [ "${DISK_AVAIL%.*}" -lt "${DISK_MIN}" ]; then
printf "\\n\\tYou must have at least %sGB of available storage to install EOSIO.\\n" "${DISK_MIN}"
printf "\\tExiting now.\\n\\n"
exit 1;
fi
虽然说经过以上步骤可以继续执行安装,但是更多的还是会失败;在编译某些C++库时需要消耗大量的内存,就算设置了交换分区也不一定可以通过;本人第一次编译安装使用了腾讯云的1G1核50G硬盘服务器,设置了2G交换分区依然没有通过,而且在整个过程中对CPU的性能的要求也是不低,换了台8G虚拟机后,整个编译过程依然5个小时以上;相对的硬盘差一点没有太大影响。
Compiling CMAKE has exited with the above error.
make: the 'j' option requires a positive integer argument
...
Compiling CMAKE has exited with the above error.
如果出现了以上错误,继续打开eosio_build_centos.sh文件,找到第8行左右,将JOBS变量修改为固定值,机器是几核CPU就写几,两核CPU就是JOBS=2。
#JOBS=$(( MEM_GIG > CPU_CORE ? CPU_CORE : MEM_GIG ))
JOBS=2
修改后再次运行./eosio_build.sh命令即可。
c++: internal compiler error: Killed (program cc1plus)
c++: internal compiler error: Killed (program cc1plus)
出现了这句提示一般代表了编译时内存耗尽无法继续执行,程序中断,如果不增加内存的情况下可以使用交换分区尝试再次编译:
#创建分区文件, 大小 2G
$ dd if=/dev/zero of=/swapfile bs=64M count=32
#生成 swap 文件系统
$ mkswap /swapfile
#激活 swap 文件
$ swapon /swapfile
但是不见的一定会成功,本人第一次使用1G的机器时,使用交换分区后只是拖延了一些时间,在后续的编译中依然内存不足,最终放弃了在此台机器上安装EOS。
Unable to download Boost libraries at this time.
Unable to download Boost libraries at this time.
出现部分包下载超时的问题时,可以选择手动下载,下载连接在eosio_build_centos.sh脚本中都有;下载好并上传到指定的目录后,需要吧对应的脚本也做一些修改,否则还会自行下载。
eosio_build_centos.sh脚本中编译的每个步骤都很清晰,也可以选择自己逐步编译对应的依赖包。
执行test脚本
在built成功的提示让我们执行这些命令进行一个测试;照着执行就是了。
/root/opt/mongodb/bin/mongod -f /root/opt/mongodb/mongod.conf &
source /opt/rh/python33/enable
export PATH=${HOME}/opt/mongodb/bin:$PATH
cd /data/eos/build; make test
如果全部passed的那就可以继续下一步了。
本人这里出现了三个未通过,但是暂未发现有何种影响。
install EOS
编译完成后就很简单了,在EOS目录下执行
$ ./eosio_install.sh
出现如下内容则安装成功
.
.
.
.
.
.
.
【本文章出自NM1024.com,转载请注明作者出处。】
>>转载请注明原文链接地址:EOS环境搭建