>[info]原文地址:http://hyperledger-fabric.readthedocs.io/en/latest/dev-setup/devenv/#setting-up-the-development-environment
概览:
在v0.6发布版本中,开发环境使用Vagrant运行一个Ubuntu镜像,编译后上线Docker container,以此作为一种保证跨平台工作也能拥有一致体验的解决方案。比如在MacOSX,Windows,Linux或者其它操作系统上工作。Docker的发展已经可以在大多数流行平台上提供本地支持:MacOSX和Windows。因此,我们重构了产品以最大限度利用这些优势。同时我们依然维护一个基于Vagrant的方法,它能够用于MacOSX和Windows平台的旧版本,这些旧版本Docker是不支持的,**我们强烈建议使用non-Vagrant开发设置**。
注意基于Vagrant的开发设置不能用于云计算环境,基于Docker的编译版本已经可以支持云平台,比如AWS,Azure,Google和IBM等。请遵照下面的Ubuntu编译指引配置。
**先决条件**
* [Git客户端](https://git-scm.com/downloads)
* [Go](https://golang.org/) - 1.6及以后版本
* 对于MacOSX用户,[Xcode](https://itunes.apple.com/us/app/xcode/id497799835?mt=12)必须安装
* [Docker](https://www.docker.com/products/overview) - 1.12及以后版本
* [Pip](https://pip.pypa.io/en/stable/installing/)
* 对于MacOSX用户,你可能需要安装gnutar,因为MacOSX默认使用bsdtar,但是该版本会使用一些gnutar标记。你可以使用Homebrew按以下方式来安装它:
~~~
brew install gnu-tar --with-default-names
~~~
* 仅对于使用Vagrant的用户 - [Vagrant](https://www.vagrantup.com/) - 1.7.4及以后版本
* 仅对于使用Vagrant的用户 - [VirtualBox](https://www.virtualbox.org/) - 5.0及以后版本
* BIOS启用虚拟化 - 基于不同硬件而不同
* 备注:BIOS启用虚拟化,可能在BIOS的CPU或安全设置中。
```pip```, ```behave``` 和 ```docker-compose```
~~~
pip install --upgrade pip
pip install behave nose docker-compose
pip install -I flask==0.10.1 python-dateutil==2.2 pytz==2014.3 pyyaml==3.10 couchdb==1.0 flask-cors==2.0.1 requests==2.4.3
~~~
## **步骤**
**设置你的GOPATH**
确保你已经正确设置了主机的[GOPATH环境变量](https://github.com/golang/go/wiki/GOPATH)。这样就允许在主机,和在虚拟机中进行编译。
**对于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```
**克隆Fabric工程**
因为Fabric工程是一个```Go```工程,你将需要Fabric仓库克隆到你的GOPATH,会有多个路径组件,你想要使用第一个路径。这里有一些额外的步骤:
~~~
cd $GOPATH/src
mkdir -p github.com/hyperledger
cd github.com/hyperledger
~~~
还记得我们使用```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](http://hyperledger-fabric.readthedocs.io/en/latest/Gerrit/lf-account/)。
**使用Vagrant引导启动虚拟机**
如果你打算使用Vagrant开发环境,还需要应用如下步骤。**再一次,我们再次推荐它仅用于那些Docker不支持的MacOSX和Windows老版本的系统**。
~~~
cd $GOPATH/src/github.com/hyperledger/fabric/devenv
vagrant up
~~~
这会需要几分钟时间,可以去泡杯咖啡。一旦完成后,你将可以```ssh```到刚创建的Vagrant虚拟机中。
~~~
vagrant ssh
~~~
进入虚拟机后,你可以在```$GOPATH/src/github.com/hyperledger/fabric```目录下找到对应的工程,它也是被挂载为```/hyperledger```
**编译fabric**
当你安装完所有的依赖后,并且已经克隆了fabric仓库,你就可以进行[编译和测试](http://hyperledger-fabric.readthedocs.io/en/latest/dev-setup/build/)fabric
**备注说明**
备注:每次你改变本地fabric文件夹中(```$GOPATH/src/github.com/hyperledger/fabric```)任何一个文件时,虚拟机中的fabric文件夹就会立马被更新。
备注:如果你打算在HTTP协议后运行开发环境,你需要配置guest从而使服务进程完成。你可以通过vagrant-proxyconf插件来完成这件事情。使用```vagrant plugin install vagrant-proxyconf```进行安装,然后在你运行```vagrant up```之前,设置VAGRANT_HTTP_PROXY和VAGRANT_HTTPS_PROXY环境变量。更多详情可参见:https://github.com/tmatilai/vagrant-proxyconf/
备注:当你第一次运行这个命令```vagrant up```时,它可能需要一段时间才嫩完成(根据你的环境,它可能需要30分钟或更长),而且在这个过程中,它可能看上去什么也没在做。只要你没有得到任何错误信息,就不用管它,它很正常,只是稍微有些奇怪。
对于Windows10用户的说明:Windows10系统上面,vagrant有一个已知问题(见 [mitchellh/vagrant#6754](https://github.com/mitchellh/vagrant/issues/6754))。如果```vagrant up```命令失败了,可能是由于你没有安装Microsoft Visual C++ Redistributable库。你可以从如下网址下载缺少的包:http://www.microsoft.com/en-us/download/details.aspx?id=8328