ホームページ >バックエンド開発 >Golang >go get golang.org/x パッケージが失敗する問題を迅速に解決する

go get golang.org/x パッケージが失敗する問題を迅速に解決する

藏色散人
藏色散人転載
2021-12-02 14:42:453108ブラウズ

この記事は、go language チュートリアル コラムによって提供され、go get golang.org/x パッケージの失敗問題をワンクリックで解決する方法を紹介するもので、困っている友人の役に立てば幸いです。

golang.org/x パッケージを取得するためのワンクリック ソリューションの失敗

問題の説明

go get を使用すると、 go installgo mod などのコマンドを実行すると、対応するパッケージまたは依存パッケージが自動的にダウンロードされます。ただし、よく知られている理由により、golang.org/x/... に類似したパッケージはダウンロードに失敗します。以下に示すように:

$ go get -u golang.org/x/sys

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

解決策

では、この問題をどのように解決すればよいでしょうか。結局のところ、まだバグを作成する必要があります~

マニュアル ダウンロード

共通の golang.org/x/... パッケージは GitHub で一般公開されています。対応。たとえば、golang.org/x/textgithub.com/golang/text に対応します。したがって、対応する GitHub リポジトリを指定されたディレクトリに手動でダウンロードまたはクローン作成できます。

mkdir $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone git@github.com:golang/text.git
rm -rf text/.git

GitHub 上のほとんどのミラー ウェアハウスにはタグがないため、バージョンを指定する必要がある場合、この方法では解決策がありません。さらに、特に依存関係が多すぎるため、プログラマが手動でそれを行うにはどうすればよいでしょうか。

プロキシの設定

プロキシ がある場合は、対応する環境変数を設定できます:

export http_proxy=http://proxyAddress:port
export https_proxy=http://proxyAddress:port
または、

all_proxy## を使用します。直接 #:<pre class="brush:php;toolbar:false">export all_proxy=http://proxyAddress:port</pre>go mod replace

Go 1.11 バージョンから、

go modules

の新しいサポートがパッケージの依存関係管理の問題を解決するために使用されます。このツールは、パッケージのエイリアスの問題を解決し、golang.org/x がダウンロードできない問題も解決する replace を提供します。

go module

はネイティブの go mod コマンドに統合されていますが、コード ベースが $GOPATH にある場合、 モジュール 関数はデフォルトでは有効になっていません。有効にするのは非常に簡単です。環境変数 export GO111MODULE=on を使用して有効にできます。 以下は参考例です:

module example.com/hello

require (
    golang.org/x/text v0.3.0
)

replace (
    golang.org/x/text => github.com/golang/text v0.3.0
)

同様に、glide や gopm などのサードパーティのパッケージ管理ツールがあり、さまざまなソリューションを提供します。

GOPROXY 環境変数

ついに、この記事の最大のキラーである

GOPROXY

が登場します。

Go 1.11

バージョン以降、go module パッケージ依存関係管理ツールが正式にサポートされることがわかっています。 実際には、

GOPROXY

環境変数も追加されています。この変数が設定されている場合、ソース コードは、以前のようにコード ライブラリから直接ダウンロードするのではなく、この環境変数で設定されたプロキシ アドレスを通じてダウンロードされます。これは、科学的にインターネットにアクセスできない私たち発展途上の国民にとって、間違いなく最大の朗報です。 さらに嬉しいのは、オープンソース プロジェクト goproxy.io が私たちが望むことを達成するのに役立ってくれたことです。このプロジェクトを使用すると、開発者はワンクリックで独自の

GOPROXY

プロキシ サービスを構築できます。同時に、パブリック プロキシ サービス https://goproxy.io も提供されます。ブロックされたソース コード パッケージを通常どおりダウンロードするには、この環境変数を設定するだけです: <pre class="brush:php;toolbar:false">export GOPROXY=https://goproxy.io</pre>ただし、

go module function に依存する必要があります。 MODULE は export GO111MODULE=on でオンにできます。 プロジェクトが

GOPATH

にない場合、go get ... は使用できませんが、go mod ... は使用できます。関連するコマンド。 この環境変数を空白に設定して、

export GOPROXY=

をオフにすることもできます。 Windows ユーザーの場合は、

PowerShell

で設定できます: <pre class="brush:php;toolbar:false">$env:GOPROXY = &quot;https://goproxy.io&quot;</pre>最後に、この環境変数に対して

GOPROXY

ソリューションを使用することを強くお勧めします。ただし、Go バージョン >= 1.11 である必要があります。 最後に、Qiniu は国内ユーザーがアクセスできないパッケージにより速くアクセスできるようにするために、国内プロキシ goproxy.cn も立ち上げました。これは実に良心的です。

以上がgo get golang.org/x パッケージが失敗する問題を迅速に解決するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。