go - 通过 Makefile 使用代理

标签 go makefile make-install ipfs

要安装 ipfs,我使用以下步骤:

$ go get -d github.com/ipfs/go-ipfs

$ cd $GOPATH/src/github.com/ipfs/go-ipfs
Then install go-ipfs and its dependencies, including gx and gx-go:

$ make install

取自https://github.com/ipfs/go-ipfs#build-from-source

当我执行步骤 make install 时,我收到这似乎是代理问题:

ERROR: [1 / 32 ] parallel fetch: failed to fetch package: QmVCe3SNMjkcPgnpFhZs719dheq6xE7gJwjzV7aWcUM4Ms: Post http://v04x.ipfs.io/api/v0/get?arg=QmVCe3SNMjkcPgnpFhZs719dheq6xE7gJwjzV7aWcUM4Ms&encodinERROR: from shell.Get(): &url.Error{Op:"Post", URL:"http://v04x.ipfs.io/api/v0/get?arg=QmeWQMDa5dSdP4n8WDeoY5z8L2EKVqF4ZvK4VEHsLqXsGu&encoding=json&stream-channels=true", Err:(*net.OpError)(0xc820142e60)}

作为 url http://v04x.ipfs.io/api/v0/get?arg=QmeWQMDa5dSdP4n8WDeoY5z8L2EKVqF4ZvK4VEHsLqXsGu&encoding=json&stream-channels=true有效。

Makefile 的内容:

# Minimum version numbers for software required to build IPFS
IPFS_MIN_GO_VERSION = 1.5.2
IPFS_MIN_GX_VERSION = 0.6
IPFS_MIN_GX_GO_VERSION = 1.1

ifeq ($(TEST_NO_FUSE),1)
  go_test=IPFS_REUSEPORT=false go test -tags nofuse
else
  go_test=IPFS_REUSEPORT=false go test
endif

ifeq ($(OS),Windows_NT)
  GOPATH_DELIMITER = ;
else
  GOPATH_DELIMITER = :
endif

dist_root=/ipfs/QmUnvqDuRyfe7HJuiMMHv77AMUFnjGyAU28LFPeTYwGmFF
gx_bin=bin/gx-v0.8.0
gx-go_bin=bin/gx-go-v1.2.1

# use things in our bin before any other system binaries
export PATH := bin:$(PATH)
export IPFS_API ?= v04x.ipfs.io

all: help

godep:
    go get github.com/tools/godep

go_check:
    @bin/check_go_version $(IPFS_MIN_GO_VERSION)

bin/gx-v%:
    @echo "installing gx $(@:bin/gx-%=%)"
    @bin/dist_get ${dist_root} gx $@ $(@:bin/gx-%=%)
    rm -f bin/gx
    ln -s $(@:bin/%=%) bin/gx

bin/gx-go-v%:
    @echo "installing gx-go $(@:bin/gx-go-%=%)"
    @bin/dist_get ${dist_root} gx-go $@ $(@:bin/gx-go-%=%)
    rm -f bin/gx-go
    ln -s $(@:bin/%=%) bin/gx-go

gx_check: ${gx_bin} ${gx-go_bin}

path_check:
    @bin/check_go_path $(realpath $(shell pwd)) $(realpath $(addsuffix /src/github.com/ipfs/go-ipfs,$(subst $(GOPATH_DELIMITER), ,$(GOPATH))))

deps: go_check gx_check path_check
    ${gx_bin} --verbose install --global

# saves/vendors third-party dependencies to Godeps/_workspace
# -r flag rewrites import paths to use the vendored path
# ./... performs operation on all packages in tree
vendor: godep
    godep save -r ./...

install: deps
    make -C cmd/ipfs install

build: deps
    make -C cmd/ipfs build

nofuse: deps
    make -C cmd/ipfs nofuse

clean:
    make -C cmd/ipfs clean

uninstall:
    make -C cmd/ipfs uninstall

PHONY += all help godep gx_check
PHONY += go_check deps vendor install build nofuse clean uninstall

##############################################################
# tests targets

test: test_expensive

test_short: build test_go_short test_sharness_short

test_expensive: build test_go_expensive test_sharness_expensive windows_build_check

test_3node:
    cd test/3nodetest && make

test_go_short:
    $(go_test) -test.short ./...

test_go_expensive:
    $(go_test) ./...

test_go_race:
    $(go_test) ./... -race

test_sharness_short:
    make -C test/sharness/

test_sharness_expensive:
    TEST_EXPENSIVE=1 make -C test/sharness/

test_all_commits:
    @echo "testing all commits between origin/master..HEAD"
    @echo "WARNING: this will 'git rebase --exec'."
    @test/bin/continueyn
    GIT_EDITOR=true git rebase -i --exec "make test" origin/master

test_all_commits_travis:
    # these are needed because travis.
    # we don't use this yet because it takes way too long.
    git config --global user.email "nemo@ipfs.io"
    git config --global user.name "IPFS BOT"
    git fetch origin master:master
    GIT_EDITOR=true git rebase -i --exec "make test" master

# since we have CI for osx and linux but not windows, this should help
windows_build_check:
    GOOS=windows GOARCH=amd64 go build -o .test.ipfs.exe ./cmd/ipfs
    rm .test.ipfs.exe

PHONY += test test_short test_expensive

##############################################################
# A semi-helpful help message

help:
    @echo 'DEPENDENCY TARGETS:'
    @echo ''
    @echo '  gx_check        - Installs or upgrades gx and gx-go'
    @echo '  deps            - Download dependencies using gx'
    @echo '  vendor          - Create a Godep workspace of 3rd party dependencies'
    @echo ''
    @echo 'BUILD TARGETS:'
    @echo ''
    @echo '  all          - print this help message'
    @echo '  build        - Build binary at ./cmd/ipfs/ipfs'
    @echo '  nofuse       - Build binary with no fuse support'
    @echo '  install      - Build binary and install into $$GOPATH/bin'
#   @echo '  dist_install - TODO: c.f. ./cmd/ipfs/dist/README.md'
    @echo ''
    @echo 'CLEANING TARGETS:'
    @echo ''
    @echo '  clean        - Remove binary from build directory'
    @echo '  uninstall    - Remove binary from $$GOPATH/bin'
    @echo ''
    @echo 'TESTING TARGETS:'
    @echo ''
    @echo '  test                    - Run expensive tests and Window$$ check'
    @echo '  test_short              - Run short tests and sharness tests'
    @echo '  test_expensive          - Run a few extras'
    @echo '  test_3node'
    @echo '  test_go_short'
    @echo '  test_go_expensive'
    @echo '  test_go_race'
    @echo '  test_sharness_short'
    @echo '  test_sharness_expensive'
    @echo '  test_all_commits'
    @echo "  test_all_commits_travis - DON'T USE: takes way too long"
    @echo '  windows_build_check'
    @echo ''

PHONY += help

.PHONY: $(PHONY)

gogit 代理似乎设置正确,因为 go get -d github.com/ipfs/go-ipfs 下载 go -ipfs repo 。

我需要为 shell.Get() 设置代理吗?

最佳答案

我在 MINGW64 中使用这个,请尝试:

export http_proxy=socks5://127.0.0.1:10011
export https_proxy=socks5://127.0.0.1:10011

关于go - 通过 Makefile 使用代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38747259/

相关文章:

go - 如何使用 golang 写入已打开的 .xlsx 文件

postgresql - 将字符串插入 jsonb 类型的 postgres

go - 如何避免在连续错误处理中重复自己

c++ - 使用ar将静态库合并到Makefile中

qt - 如何为Qt项目的一个子目录调用make install

vim - 在 Fedora 23 上创建 vim 时如何修复此错误

amazon-web-services - storagegateway.ListGateways() 返回 "Invalid resource",状态码为 : 400

c - 全局变量的多重定义

bash - Makefile 任务因错误而停止,我可以继续运行它吗?