真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

當(dāng)goget遇到墻時該怎么辦

今天就跟大家聊聊有關(guān)當(dāng)go get遇到墻時該怎么辦,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)公司主營巴東網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,手機APP定制開發(fā),巴東h5小程序制作搭建,巴東網(wǎng)站營銷推廣歡迎巴東等地區(qū)企業(yè)咨詢

作為一名從py轉(zhuǎn)向go語言的新手,在使用第三方包的時候我們需要比較熟悉該包或者模塊的構(gòu)建與安裝,好比在使用pip或者easy_install之類的工具安裝模塊時經(jīng)常會遇到底層庫或者工具包的依賴再或者網(wǎng)絡(luò)超時而導(dǎo)致模塊安裝失敗。然而在使用go的過程中,雖然不必像py那樣為一個復(fù)雜模塊去解決各種的依賴關(guān)系,但在使用go get的過程中也不一定一帆風(fēng)順,比如你去下載golang.org上的包時,對不起,一般肯定是會被墻掉的。

為何會被墻掉?

&^*(^*%^&*)&*^&*%$%$^&*(*()&*^&%^&()**(%$%&*((^%%^*(*)*)總之,由于某某原因,它和它家的主人google都被墻掉了。

如何解決?

兩種方式:第一種無非就是使用vpn技術(shù)啦,然后再在本地配個代理啥的,不過既然都是開源的東西,就一定能夠從github上面clone下來。所以第二種方式就是就是去從github上面直接clone下來,然后搞成go可以識別的包就可以啦github.com現(xiàn)在肯定是不會被墻啦。 vpn的方式就是搭了個梯子然后配置下代理就可以直接使用go get了,這里主要講一下第二種方式去安裝第三方包。

假設(shè)我想使用go語言的docker客戶端去封裝改造一些東西,通過go get -v 可以查看到安裝package的詳情

$go get -v github.com/fsouza/go-dockerclient

package golang.org/x/net/html: unrecognized import path "golang.org/x/net/html" (https fetch: Get https://golang.org/x/net/html?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
package golang.org/x/net/html/atom: unrecognized import path "golang.org/x/net/html/atom" (https fetch: Get https://golang.org/x/net/html/atom?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

由以上提示可以大概猜得到,本地服務(wù)器肯定是無法訪問golang.org的,因此在下載golang.org相關(guān)的包的時候無法下載導(dǎo)致dockerclient下載失敗。

由于go get其實是將package下載下來,然后進行本地安裝的,因此我們也可以講golang.org的相關(guān)包clone到本地然后再進行安裝。

1.查看配置環(huán)境

主要的就是GOPATH和GOROOT

# go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/export/test-go"
GORACE=""
GOROOT="/export/go"
GOTOOLDIR="/export/go/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT="1"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"

注意:所有下載的包都會默認(rèn)放在GOPATH,因此這個目錄是必須的,且一般包含src pkg bin三個目錄,分別存放源碼包,編譯包以及可執(zhí)行文件

2.下載安裝golang.org/x/net

為了使包的導(dǎo)入方式不變,我們需要在src目錄下面構(gòu)造目錄結(jié)構(gòu)

$mkdir -p $GOPATH/src/golang.org/x/
$cd $GOPATH/src/golang.org/x/
$git clone https://github.com/golang/net.git net 
$go install net

執(zhí)行g(shù)o install之后沒有提示,就說明安裝好了。

3.再次安裝go的dockerclient
# go get -v  github.com/fsouza/go-dockerclient 
github.com/fsouza/go-dockerclient (download)
github.com/docker/docker (download)
github.com/docker/go-units (download)
github.com/hashicorp/go-cleanhttp (download)
github.com/docker/docker/api/types/network
github.com/docker/docker/pkg/promise
github.com/docker/docker/api/types/blkiodev
github.com/docker/docker/api/types/mount
github.com/docker/docker/api/types/strslice
github.com/docker/docker/vendor/github.com/docker/go-connections/nat
github.com/docker/docker/vendor/github.com/docker/go-units
github.com/docker/docker/api/types/versions
github.com/docker/docker/api/types/registry
github.com/docker/docker/vendor/github.com/Sirupsen/logrus
github.com/docker/docker/vendor/github.com/opencontainers/runc/libcontainer/user
github.com/docker/docker/vendor/golang.org/x/net/context
github.com/docker/docker/vendor/github.com/opencontainers/runc/libcontainer/system
github.com/docker/docker/vendor/github.com/Nvveen/Gotty
github.com/docker/docker/pkg/jsonlog
github.com/docker/docker/pkg/term
github.com/docker/docker/pkg/stdcopy
github.com/docker/go-units
github.com/hashicorp/go-cleanhttp
golang.org/x/net/context
github.com/docker/docker/api/types/filters
github.com/docker/docker/pkg/system
github.com/docker/docker/pkg/ioutils
golang.org/x/net/context/ctxhttp
github.com/docker/docker/api/types/container
github.com/docker/docker/pkg/idtools
github.com/docker/docker/api/types/swarm
github.com/docker/docker/pkg/fileutils
github.com/docker/docker/pkg/pools
github.com/docker/docker/api/types
github.com/docker/docker/pkg/homedir
github.com/docker/docker/pkg/jsonmessage
github.com/docker/docker/pkg/archive
github.com/docker/docker/opts
github.com/fsouza/go-dockerclient

使用-v參數(shù)可以查看該包關(guān)聯(lián)的所有包,可以看到已經(jīng)成功安裝

4.測試Docker客戶端的使用github.com/fsouza/go-dockerclient

示例:查看當(dāng)前docker主機上所下載的images

#cat JFdocker.go
package main

import (
	"fmt"
	"github.com/fsouza/go-dockerclient"
	"strings"
)

func main() {
	//定義一個socker文件路徑
	endpoint := "unix://var/run/docker.sock"
	//創(chuàng)建一個docker客戶端鏈接
	client, err := docker.NewClient(endpoint)
	//判斷是否異常,并且捕獲
	if err != nil {
		panic(err)
	}
	//使用創(chuàng)建的client進行l(wèi)istimages操作
	images, err := client.ListImages(docker.ListImagesOptions{All: false})
	if err != nil {
		panic(err)
	}
	//使用range迭代所有images信息
	for _, img := range images {
		fmt.Printf("ID:%v\tTag:%v\t\t Size:%v\t\t VSize:%v\n",
			//image.ID為一個string類型并且以sha215:開頭 strings.Split('strings','split')可以將結(jié)果分割并且存放在slice中
			strings.Split(img.ID, ":")[1][:12],
			img.RepoTags, img.Size, img.VirtualSize)
	}

}

編譯并執(zhí)行程序:
#go build JFDocker.go
sh-4.2# ./JFDocker 
ID:e740f4a4a24d	Tag:[centos6.8-test-app:v2]		 Size:2411566940		 VSize:2411566940
ID:d5cb0af109de	Tag:[centos6.8-test-app:latest]		 Size:2408322269		 VSize:2408322269
ID:67591570dd29	Tag:[centos:latest]		 Size:191839169		 VSize:191839169

可以看到,現(xiàn)在就可以成功的使用go的docker client進行開發(fā)程序了。至此,我們已經(jīng)成功的解決了go get 無法安裝golang.org相關(guān)的包了。

看完上述內(nèi)容,你們對當(dāng)go get遇到墻時該怎么辦有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


當(dāng)前標(biāo)題:當(dāng)goget遇到墻時該怎么辦
當(dāng)前URL:http://weahome.cn/article/gjochh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部