go getを使用した「認識されないインポートパス」


91

をインストールしようとしてweb.gogo get github.com/hoisie/webますが、実行すると戻ります

package bufio: unrecognized import path "bufio"
package bytes: unrecognized import path "bytes"
package crypto/rand: unrecognized import path "crypto/rand"
package crypto/sha1: unrecognized import path "crypto/sha1"
package crypto/tls: unrecognized import path "crypto/tls"
package encoding/base64: unrecognized import path "encoding/base64"
package encoding/binary: unrecognized import path "encoding/binary"
package encoding/json: unrecognized import path "encoding/json"
package errors: unrecognized import path "errors"
package fmt: unrecognized import path "fmt"

これはしばらくの間、さまざまなパッケージで続き、その後何も返されません。go env私に与える:

GOARCH="amd64"
GOBIN="/usr/local/go/bin"
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/home/me/go"
GOTOOLDIR="/home/me/go/pkg/tool/linux_amd64"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CXX="g++"
CGO_ENABLED="1"

どうすればインストールできweb.goますか?go get(ではなくgo install)を使用することが、githubページのREADMEにあります。私のGoバージョンはgo version go1.2 linux/amd64です。


3
GOROOTをエクスポートしましたが、GOPATHをエクスポートしていませんか?GOROOTはGOBINとは異なりますか?Goはどのようにインストールしましたか?どのように環境をセットアップしましたか?
Volker

golang.org/doc/installページに従ってgoをインストールしました。GOPATHに何を入れるかわかりませんでした。
q3d 2013

回答:


99

問題は無効なに関連していますGOROOT

Go inをインストールしたと思います/usr/local/go
したがって、GOROOTパスをの値に変更します/usr/local/go/bin

ワークスペース(GOPATH)をに配置するつもりだったよう/home/me/goです。

これで問題が解決する可能性があります。
これをbashプロファイルの下部に追加します。ここにあります=>$HOME/.profile

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin

の古い参照を必ず削除してくださいGOROOT

次に、web.goを再度インストールしてください。

それでもうまくいかない場合は、UbuntuにGoをインストールしてもらいます。

sudo apt-get install golang

ビデオチュートリアル:http : //www.youtube.com/watch? v =2PATwIfO5ag


15
GOROOTを設定することはほとんどありません。PATH宣言が/ usr / local / go / binにヒットしない。また、ubuntuパッケージは公式リリース1.2より少し遅れていることに注意してください。
JimB 2013

2
公式サイトからのgo installの手順(tarファイルから/ usr / localにインストール)を実行すると、上記のようにGOROOTを変更するまで、上記のエラーが発生しました。
2014

1
新しいgolang 1.3をfedora 20にインストールしただけでgo get、同じエラーが発生します。GOROOTに設定され/usr、それ自体が/ usr / localではなく/ usrにインストールされます。に設定GOPATH$HOME/goます。他に何をチェックすべきか考えていますか?
Dfr

15
自分への回答:設定を解除GOROOTすると問題が解決したようです。
Dfr

4
GOROOTを設定しない場合は+1。私はそれを設定解除し、それが設定されていないことを確認してからecho $GOROOT、GO が設定した環境にGOがまだあり、インストールgo envした/usr/local/go場所にあったことを確認しました(したがって、いずれにしても設定する必要はありません)
StartupGuy

36

GoをbrewOSX 10.11 にインストールしましたが、次のように設定GOROOTする必要があります。

/usr/local/Cellar/go/1.5.1/libexec

(もちろん、このパスのバージョンをあなたが持っているバージョンに置き換えてください)

Brewは、gotoolをだますシンボリックリンクを使用しています。だから、ホームへのリンクに従ってください。


ああ、やっと、うまくいくものが見つかりました。エリック、ありがとう!
Mir Adnan

23

古いgoバージョン(古いPPAからインストールされたもの)からubuntu 14.04の新しい(1.2.1)デフォルトパッケージに移動した後も、まったく同じ問題が発生しました。

最初のステップは、既存のgoを削除することでした。

sudo apt-get purge golang*

次の警告を出力します:

dpkg: warning: while removing golang-go, directory '/usr/lib/go/src' not empty so not removed
dpkg: warning: while removing golang-go.tools, directory '/usr/lib/go' not empty so not removed

goを削除するといくつかのファイルが残り、新しいインストールを混乱させる可能性があります。より正確には、インストール自体は正常に完了しますが、その後「go get something」などのgoコマンドを実行すると、「認識できないインポートパス」エラーが発生します。

私がしなければならなかったのは、最初にそれらのディレクトリを削除し、golangを再インストールすることだけでした。

# careful!
sudo rm -rf /usr/lib/go /usr/lib/go/src
sudo apt-get install golang-go golang-go.tools

私も削除しなければなり/usr/local/go/
ませんでした

/ usr / bin / goも削除する必要がありました。
eatonphil 2015

6

GFWがgolang.orgへのアクセスを禁止したためです!そして、私がプロキシを使用するとき、それはうまく働くことができます。

コマンドを使用して情報を見ることができます go get -v -u golang.org/x/oauth2


1
これは私が中国にいるのと全く同じ問題です。$ http_proxyを設定した後、エラーなくパッケージをインストールできます。
アセン、2016

1
ブロックされているだけでなく、DNSも汚染されています。まずに移動しhttp://ping.eu/nslookup/てドメインの正しいIPを見つけ、それをhostsファイルに設定してから、プロキシを使用してダウンロードします。export http_proxy=127.0.0.1:1080 https_proxy=127.0.0.1:1080 時々あなたは政府にFの言葉を言いたいだけです
来年のドアからの

4

$ unset GOROOT私のために働いた。ほとんどの回答があなたのGOROOTが無効であることを示唆しているので。


2

MacOS 10.10でも同じ問題が発生しました。そして、この問題はOhMyZshシェルが原因であることがわかりました。その後、bashに切り替えて、すべてがうまくいった。

これが私の環境です

bash-3.2$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/bis/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1

であることgo env、それはうまくいきませんでしたときから、またはそれはやったとき?おそらく「[他のシェル]が原因」ではなくGOPATH、他のシェルで正しく設定できなかった可能性があります。cshおよびzshファミリーのシェルは、同じ起動ファイル(つまり、no )を使用しませ~/.profile。特にandをzsh使用$ZDOTDIR/.zshenvします$ZDOTDIR/.zprofile$ZDOTDIRデフォルトはです$HOME)。
Dave C


0

go1.2をgo1.4にアップグレードした後、同じ問題が発生しました。

GOPATHでsrcの名前を_srcに変更してから、 go get -v

それが機能した後、_srcを削除しました。

それが役に立てば幸い。


0

別のパッケージをインストールするときにこの問題が発生しました。PATHのGOROOTおよびGOPATH構成が原因である可能性があります。私のOS XのインストールでGOROOTが処理された(私はそう思われる)ため、私はGOROOTを設定しない傾向があります。

  1. .profile(またはプロファイル構成を保存する場所:.bash_profile、.zshrc、.bashrcなど)で次のことを確認します。

    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  2. また、unset GOROOTそのパスも正しくない場合は、同様にを実行することもできます。

  3. さらに、GOPATH割り当ての直前に、以下で行ったのと同様に、PATHを必ずクリーンアップしてください。

    export PATH=$HOME/bin:/usr/local/bin:$PATH
    export GOPATH=$HOME/go
    export PATH=$PATH:$GOROOT/bin
  4. そして、 source <.profile>アクティブにする

  5. リトライ go get
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.