设置开发环境¶
概览¶
在 v1.0.0 之前,使用 Vagrant 运行 Ubuntu 镜像来作为开发环境来加载 Docker 镜像,以此让使用不同操作系统的开发者有相同的开发体验,比如 macOS, Windows, Linux 或者其他系统。大多数操作系统都已经原生支持 Docker 了,比如 macOS、Windows。因此我们已经开始使用 Docker 来进行构建了。但是我们仍然维护着 Vagrant 的方法,因为有一些旧版本的 macOS 和 Windows 系统不支持 Docker。我们强烈建议不要再使用 Vagrant 开发了。
值得提醒的是,基于 Vagrant 的开发不能部署在云环境中,但是基于 Docker 可以,目前支持的云平台有 AWS、Azure、Google 和 IBM 等。请参考下边的内容在 Ubuntu 下构建。
前置工作¶
- Git 客户端
- Go - 版本 1.11.x
- (macOS) 必须安装 Xcode
- Docker - 17.06.2-ce 或更高版本
- Docker Compose - 1.14.0 或更高版本
- Pip
- (macOS) 你必须安装 gnutar,macOS 默认使用 bsdtar,但是构建使用了一些 gnutar 的参数。你可以使用 Homebrew 来安装它:
brew install gnu-tar --with-default-names
- (macOS) Libtool 。你可以使用 Homebrew 来安装它:
brew install libtool
- (只有使用 Vagrant 的需要安装) - Vagrant - 1.9 或更高版本
- (只有使用 Vagrant 的需要安装) - VirtualBox - 5.0 或更高版本
- BIOS 开启虚拟化,因硬件而异
- 注意: BIOS虚拟化设置可能在 BIOS 的 CPU 或者 Security 设置里。
pip¶
pip install --upgrade pip
步骤¶
设置 GOPATH¶
确保你已经设置了你主机的 GOPATH 环境变量 。只有设置了环境变量才能在你的主机或者虚拟机中编译。
如果你安装的 Go 不在默认位置,请确保你设置了 GOROOT 环境变量 。
Windows 用户请注意¶
如果你用的是 Windows 系统,在运行 git clone 命令之前,请先运行如下命令。
git config --get core.autocrlf
如果 core.autocrlf 为 true, 你必须将它设置为 false
git config --global core.autocrlf false
如果你将 core.autocrlf 设置为 true,vagrant up 命令将会报错:
./setup.sh: /bin/bash^M: bad interpreter: No such file or directory
克隆 Hyperledger Fabric 项目源代码¶
因为 Hyperledger Fabric 是用 Go 编写的,所以你需要将它克隆到 $GOPATH/src 目录。如果你有多个 $GOPATH,请选择第一个 $GOPATH。有一些内容需要设置:
cd $GOPATH/src
mkdir -p github.com/hyperledger
cd github.com/hyperledger
重申一下,我们使用 Gerrit 来管理源码,Gerrit 内部有自己的 git 仓库。因此我们需要从 Gerrit 克隆。命令如下:
git clone ssh://LFID@gerrit.hyperledger.org:29418/fabric && scp -p -P 29418 LFID@gerrit.hyperledger.org:hooks/commit-msg fabric/.git/hooks/
注意: 当然你要将 LFID 替换为你的 Linux Foundation ID 。
使用 Vagrant 启动虚拟机¶
如果你想用 Vagrant 来开发,你需要执行如下步骤。再说一次,我们只建议在不支持 Docker 的系统中使用该方法。
cd $GOPATH/src/github.com/hyperledger/fabric/devenv
vagrant up
来杯咖啡。。。这需要点时间。完成后,你就可以通过 ssh 进入刚才创建的 Vagrant 虚拟机了。
vagrant ssh
进入到虚拟机之后,你就可以看到 $GOPATH/src/github.com/hyperledger/fabric 下边的源码了。它被挂载在 /hyperledger 目录。
注意事项¶
注意: 你修改的 fabric 文件(在 $GOPATH/src/github.com/hyperledger/fabric 目录下)会同步在虚拟机中的 fabric 文件夹中更新。
注意: 如果你想在 HTTP 代理下运行开发环境,你就需要配置客户端。你可以通过 vagrant-proxyconf 来完成。通过 vagrant plugin install vagrant-proxyconf 进行安装,然后在执行 vagrant up 之前 配置 VAGRANT_HTTP_PROXY and VAGRANT_HTTPS_PROXY 环境变量。详情请查看这里: here: https://github.com/tmatilai/vagrant-proxyconf/
注意: 第一次运行的时候会比较耗时(可能会超过30分钟),在这期间你会以为它什么都没做。如果没有报错,就让它继续运行。
Windows 10的用户请注意: T在 Windows 10下有一个已知的 vagrant 问题(查看 hashicorp/vagrant#6754)。如果 vagrant up 命令执行失败,可能是因为你没有安装 Microsoft Visual C++ Redistributable。你可以在这个地址下载缺失的软件包:http://www.microsoft.com/en-us/download/details.aspx?id=8328
注意: 编译 fabric 的过程中 miekg/pkcs11 依赖 ltdl.h。请确认您安装了 libtool 和 libltdl-dev。否则你会遇到丢失 ltdl.h 头文件错误。你可以通过该命令安装缺失的软件包: sudo apt-get install -y build-essential git make curl unzip g++ libtool。