Filecoin 是一个开源的区块链项目,Lotus 是 Filecoin 的其中一个重要客户端。对于想尝鲜区块链这一热门技术的朋友来说,通常会选择 ArchLinux、Ubuntu 等相对易于折腾的发行版来使用。Alibaba Cloud Linux 2 (aka Aliyun Linux 2) 是基于 CentOS 7 的 RPM 生态构建的发行版系统,面对 Lotus 这样的先进生产力,能否老树发新芽呢?让我们开始折腾吧。
1. 购买一台 ECS 服务器。
在实例购买页面,我们买了一台 Aliyun Linux 2.1903 LTS 版本的服务器。由于构建过程中需要频繁访问 GitHub 上的资源,我们选择了香港可用区以加快资源拉取速度。
2. 访问 Lotus 文档页面
Lotus 文档页给出了常见的几个发行版的构建方式,离我们最近的就是 Fedora 了。然而直接执行 Fedora 页面上的步骤,并不能正确解决构建依赖。我们需要想想别的办法。
Fedora 文档页面上的依赖如下:
These steps will install the following dependencies:
- go (1.13 or higher)
- gcc (7.4.0 or higher)
- git (version 2 or higher)
- bzr (some go dependency needs this)
- jq
- pkg-config
- rustup (proofs build)
- llvm (proofs build)
- clang (proofs build)
(其实文档中还漏了 opencl 相关的开发包)
3. 解决依赖
浏览了上面列出的 Fedora 给出的依赖关系,我们幸运地发现,Alibaba Cloud Linux 2 的试验性仓库里有大部分的支持,剩下没有支持的部分,可以通过 EPEL-7 的仓库来支持。配合 EPEL-7 和 Alinux2 试验性仓库,我们可以很方便地解决依赖:
- go (1.13 or higher): Alinux2 试验性仓库 & EPEL-7 中支持;
- gcc (7.4.0 or higher): Alinux2 试验性仓库提供 gcc-7 & 8 & 9 的 devtoolset 支持;
- git (version 2 or higher): Alinux2 试验性仓库提供 git2 支持;
- bzr (some go dependency needs this): 默认仓库支持;
- jq: EPEL-7 支持;
- pkg-config: 默认仓库支持;
- rustup (proofs build): 宇宙流行做法,通过 https://sh.rustup.rs 来支持
- llvm (proofs build): Alinux2 默认仓库(plus)支持;
- clang (proofs build): Alinux2 默认仓库(plus)支持;
- libOpenCL 库: EPEL-7 支持;
唯一不太好解决的是,文档中提到了 OpenCL 的 mesa lib 库,这个库是从 mesa-20 开始支持的,Alinux2 中只支持到 mesa-18。不过我们尝试了一下,在缺少 mesa OpenCL 库的情况下,也可以顺利完成 Lotus 的构建。
4. 执行命令
确认 Alinux2 支持 Lotus 不存在技术难题之后,我们愉快地开始了依赖的安装:
# 检查系统中的 EPEL-7 仓库的支持
$ yum repolist -v | grep 'epel/7'
Repo-baseurl : https://mirrors.aliyun.com/epel/7/x86_64/
# 如果上述命令返回空,则可以执行下列命令进行安装:
# $ sudo yum install -y epel-release
# 安装 Alinux2 试验性仓库
$ sudo yum install -y alinux-release-experimentals
# 安装依赖软件包
$ sudo yum -y install golang devtoolset-9-gcc git bzr jq pkgconfig \
opencl-headers ocl-icd ocl-icd-devel clang llvm
# 切换到 gcc-9
$ source /opt/rh/devtoolset-9/enable
# 安装 Rust
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 根据提示操作即可
接下来,就可以开始拉取 Lotus 的代码,进行构建了。接下来的步骤和 Lotus 文档中没有什么差异,直接拷贝即可:
$ git clone https://github.com/filecoin-project/lotus.git
$ cd lotus/
$ make clean && make all
$ sudo make install
也可以在代码中构建并运行 bench 工具:
make bench
./bench
这样就可以在系统中直接执行相关命令,开始探索区块链的开发了。
5. 剩余的工作
接下来还需要折腾看看 mesa-opencl 包,是否在 Lotus 中是强依赖。
来源:oschina
链接:https://my.oschina.net/u/4345306/blog/3279120