按照官方网站的介绍,IPFS编译一般无法通过。原因基本是中间下载包失败。所以你最好有一个能访问ipfs.io的代理。本文假定你已经有一个代理。
假定你的代理地址是:
socks5://127.0.0.1:8088
按照正常的流程,ipfs的编译步骤很简单:
# apt-get install gcc
# go get github.com/ipfs/go-ipfs
# cd $GOPATH/src/github.com/ipfs/go-ipfs
# make build
注意,上面编译前的cd命令,ipfs的编译一定要在gopath下面进行。
但为了使用代理,需要进行如下操作:
1. 修改dist_get
vim bin/dist_get
找到try_download "$dl_url" "$dl_output" "curl
给curl命令增加参数:--socks5-hostname 127.0.0.1:8088, 即修改成如下: try_download "$dl_url" "$dl_output" "curl --socks5-hostname 127.0.0.1:8088
2. 修改shell.go, 这一步引用自[http://emacsvi.com/2018/04/go-ipfs-gx.html]
修改 go-ipfs-api/shell.go,内容改成如下:
func NewShell(url string) *Shell {
c := &gohttp.Client{
Transport: &gohttp.Transport{
Proxy: gohttp.ProxyFromEnvironment, // 这里是添加的一行
DisableKeepAlives: true,
},
}return NewShellWithClient(url, c)
}
3. 重新编译gx,
go install github.com/whyrusleeping/gx
go install github.com/whyrusleeping/gx-gocd $GOPATH/src/github.com/ipfs/go-ipfs/bin
mv gx gx.old ; mv gx-go gx-go.old
ln -s /opt/gopath/bin/gx ; ln -s /opt/gopath/bin/gx-go
然后再运行make build, 就可以正常下载依赖并编译
网友评论