go get으로 "인식 할 수없는 가져 오기 경로"


93

을 (를) 설치하려고 web.go하지만 실행 중이 go 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 '

답변:


102

문제는 유효하지 않은 GOROOT.

Go를 설치 한 것 같습니다 /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에 도달하지 않습니다. 또한 우분투 패키지는 공식 릴리스 인 1.2보다 약간 뒤쳐져 있습니다.
JimB

2
공식 사이트 (tar 파일에서 / usr / local로 설치)의 go install 지침을 따랐을 때 위와 같이 GOROOT를 변경할 때까지 위의 오류가 발생했습니다.
Drew

1
방금 fedora 20에 새로운 golang 1.3을 설치했는데 go get동일한 오류가 발생합니다. GOROOT로 설정 /usr되어 있으면 / usr / local이 아닌 / usr에 설치됩니다. 로 설정 GOPATH합니다 $HOME/go. 확인해야 할 다른 사항이 있습니까?
Dfr

15
나 자신에게 답하기 : 설정을 해제 GOROOT하면 문제가 해결 된 것 같습니다.
Dfr

4
GOROOT를 설정하지 않으면 +1. 설정을 해제하고 설정이 해제되었는지 확인한 echo $GOROOT다음 GO가 수행 한 환경에 여전히 포함되어 있고 내가 설치 한 위치 go env/usr/local/go있는지 확인 했습니다 (따라서 어떤 경우에도 설정할 필요가 없음)
StartupGuy

36

brewOSX 10.11에 Go with 를 설치 했고 다음과 같이 설정 GOROOT해야했습니다.

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

(물론이 경로의 버전을 가지고있는 go 버전으로 바꾸십시오)

Brew는 gotool을 속이는 심볼릭 링크를 사용합니다. 따라서 링크를 집으로 따르십시오.


아, 마침내 효과가있는 것을 찾았습니다. 감사합니다 에릭!
Mir Adnan

23

우분투 14.04의 이전 버전 (이전 PPA에서 설치됨)에서 최신 (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을 다시 설치하면 모두 매력처럼 작동합니다 (GOPATH도 설정했다고 가정)

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

나는 또한 제거해야했다/usr/local/go/
Natim

또한 / usr / bin / go를 제거해야했습니다.
eatonphil 15.07.17

6

GFW가 golang.org에 액세스하는 것을 금지했기 때문입니다! 프록시를 사용하면 잘 작동 할 수 있습니다.

명령을 사용하여 정보를 볼 수 있습니다 go get -v -u golang.org/x/oauth2


1
이것이 제가 중국에서 겪고있는 문제입니다. $ http_proxy 설정 후 오류없이 패키지를 설치할 수 있습니다.
ashen

1
차단 될뿐만 아니라 DNS도 오염됩니다. 먼저 http://ping.eu/nslookup/도메인의 올바른 IP를 찾아 호스트 파일에 설정 한 다음 프록시를 사용하여 다운로드하십시오. export http_proxy=127.0.0.1:1080 https_proxy=127.0.0.1:1080 때때로 당신은 단지 Gov에에 F 워드 말하고 싶은
옆집에서 Mr.Wang

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). 특히 zsh사용 $ZDOTDIR/.zshenv하고 $ZDOTDIR/.zprofile( $ZDOTDIR기본값 $HOME).
Dave C

1

가장 일반적인 원인은 다음과 같습니다.
1. 잘못 구성된 GOROOT
또는
2. GOPATH가 설정되지 않았습니다.


0

go1.2를 go1.4로 업그레이드 한 후에도 동일한 문제가 발생했습니다.

내 GOPATH에서 src 이름을 _src로 바꾼 다음 go get -v

그런 다음 _src를 삭제했습니다.

도움이되기를 바랍니다.


0

다른 패키지를 설치할 때이 문제가 발생했으며 PATH의 GOROOT 및 GOPATH 구성으로 인해 발생할 수 있습니다. 내 OS X 설치가 나를 위해 처리했기 때문에 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.