GOPATH 외부에 디렉토리 xxx에 대한 설치 위치가 없습니다.


152
~/src/go-statsd-client> echo $GOPATH
/Users/me/gopath
~/src/go-statsd-client> echo $GOROOT
/usr/local/Cellar/go/1.1.1\
~/src/go-statsd-client> go install
go install: no install location for directory /Users/me/src/go-statsd-client outside GOPATH

프로젝트의 구조에 관계없이 항상 동일한 메시지로 실패합니다. Go 빌드는 완벽하게 작동합니다.

여기, 내 것이요 go env

GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/me/gopath"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.1.1"
GOTOOLDIR="/usr/local/Cellar/go/1.1.1/pkg/tool/darwin_amd64"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread -fno-common"
CGO_ENABLED="1"

이것은 Mac OSX Mountain Lion에 있으며 homebrew와 함께 설치되었습니다.

답변:


116

에 인수를 제공하지 않으면 go install기본적으로 현재 디렉토리에 패키지를 설치하려고 시도합니다. 현재 디렉토리가의 일부가 아니기 때문에 오류 메시지가 표시되지 않습니다 $GOPATH.

다음 중 하나를 수행 할 수 있습니다.

  • $GOPATH$ HOME ( export GOPATH=$HOME)으로 정의하십시오 .
  • 소스를 현재 $GOPATH( mv ~/src/go-statsd-client /User/me/gopath) 내로 이동하십시오 .

어느 쪽이든 go-statsd-client디렉토리 로 들어가서 go install입력 go install go-statsd-client하면 파일 시스템의 어느 곳에서나 입력 할 수 있습니다. 내장 바이너리는로 들어갑니다 $GOPATH/bin.

관련이없는 제안으로, 이름 충돌을 피하기 위해 패키지 이름을 도메인 이름으로 네임 스페이스하고 싶을 것입니다 (예 : github.com/you/go-statsd-client소스 코드를 보유하고있는 경우).


5
내 경우에는이 오류는 $GOPATH/bin디렉토리 가 없기 때문에 발생했습니다 . 이 폴더를 만드는 것이 필요했습니다 GOBIN. env var 를 설정할 필요가 없었습니다 .
xentek

4
@RobertReiz는 귀하의 좌절감을 공유하면서 다른 대부분의 언어는 실제로이 언어를 사용하지만 눈에 띄지 않을 수도 있음을 지적해야합니다. 예를 들어, 파이썬 (단순 유명한 언어)가 PYTHONHOME대신 GOROOT하고 PYTHONPATH대신 GOPATH. 도 (GC) C를 가지고 LIBRARY_PATH, C_INCLUDE_PATH
Hut8

1
나는 후이 오류 수 export GOPATH=$PWD(A Golang 복제 트리의 루트에 서), 당신의 대답은 아마도이 경우 오류를 설명 할 수 없다.
ulidtko

2
나를 위해 $ GOPATH에 넣는 것으로 충분하지 않았습니다. $ GOPATH / src / 아래의 디렉토리에 있어야합니다
Thomas

9
나는의 존재를 정당화해야 할 아주 좋은 이유가 있다고 확신 GOPATH하지만 외부에서 들여다 보면 완전히 마음이없는 것처럼 보입니다. 패키지를 로컬로 빌드하기 위해 전역 환경 변수를 변경해야하는 이유 🤔
Alexander-Reinstate Monica

193

모든 OS X 사용자 및 향후 저에게 GOBIN설치시 혼란스러운 메시지가 표시되지 않도록 설정해야합니다.go get

mkdir bin 
export GOBIN=$GOPATH/bin

4
설정GOBIN 하지 않아도됩니다 . $GOPATH/bin차이 를 만들도록 설정하면 설정에 문제가 있거나하지 말아야 할 일이 있습니다.
Dave C

29
@DaveC OS X에서도 같은 문제가 있습니다. GOBIN을 설정하면 문제가 해결되었습니다.
nJoshi

2
정말 감사합니다, 그것은 잘못 실제로는 10.11.4 (엘 캐피)에 대해 여전히 유효 GOBIN을 설정하기 위해 요구되는 공식 OS X 패키지 뭔가처럼 보인다
조나스 D.


1
이것은 maOS Sierra 10.12.3에서 완벽하게 작동했습니다. 감사합니다!
Greg Hilston

30

당신이 사용하는 설치 가서 GOPATH 폴더 외부의 디렉토리에. GOBIN env 변수를 설정하거나 src 폴더를 GOPATH 로 이동 하십시오.

GOPATH/
     bin/
     src/
       go-statsd-client/

추가 정보 : GO 빌드 소스 코드 , 296 행


위의 제안 (내보내기 GOPATH = $ HOME)을 시도한 다음 관련 디렉토리로 이동하고 (내 코드를 작성하는 곳) go install ... same result go install : no install location for directory ....
stian

296 행은 반품 명세서입니까?
Felix Rabe

1
내 GOBIN의 ENV를 설정하는 것을 잊었다
cevaris

나는이 해결책으로 갔다.
Mihamina Rakotomandimby

19

당신은 설정 모두에 필요 GOPATH하고 GOBIN. (교체하십시오 다음을 수행했는지 확인 ~/go선호와 GOPATH연속적 변화 GOBIN). 에 테스트되었습니다 Ubuntu 16.04 LTS.

export GOPATH=~/go 

mkdir ~/go/bin

export GOBIN=$GOPATH/bin

선택한 답변으로 문제가 해결되지 않았습니다.


나는 16.04에 정의되어 있으며 이것이 효과가 없었습니다.
Catskul

5

선택한 GOPATH 디렉토리 안에 3 개의 디렉토리가 있어야합니다.

GOPATH
     /bin
     /src
       /someProgram
        program.go
       /someLibrary
        library.go
     /pkg

그런 다음 go installsomeProgram (실행 파일을 bin에 저장) 또는 someLibrary (라이브러리를 pkg에 저장)에서 실행합니다.


1
이것은 인터넷에서 2 시간 동안 검색 한 후에 나를 위해 일했습니다.
vishalknishad

3

Windows 에서이 문제가 발생했습니다.

내 문제는 내 %GOPATH%환경 변수가

C:\Users\john\src\goworkspace

대신에

C:\Users\john\src\goworkspace\

끝에 누락 된 후행 슬래시를 추가하면 문제가 해결되었습니다.


1
거룩한 암소 당신은 잠재적으로 여러 시간 동안 두통에서 나를 구했습니다. 나는 우분투에 있지만 같은 문제가있었습니다. 폴더 이름, 폴더 구조, src / github.com / xyabz /로 시작하는 사전 및 모든 것을 제외하고는 매우 부지런했습니다.
anon58192932

3

가치있는 것을 위해 여기에 Homebrew와 함께 설치 한 후 Atom이있는 Mac에서 잘 작동하는 .bash_profile이 있습니다.

export GOROOT=`go env GOROOT`
export GOPATH=/Users/yy/Projects/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN

2

내 경우 (OS X)에서이 내가 설정 한 되었기 때문 GOPATH/home/username/go(책에 따라) 대신/Users/username/go


2

나는 Windows에 있고 명령을 내림으로써 그것을 얻었습니다. go help gopath cmd에 을 에서 굵은 텍스트를 읽습니다.

..BaseDir...\SomeProject\src\basic\set, 설치하려는 코드가에있는 경우 GOPATH 는 코드와 동일한 위치가 아니어야하며 기본 프로젝트 디렉토리 여야합니다 ..BaseDir...\SomeProject.

GOPATH 환경 변수는 Go 코드를 찾을 장소를 나열합니다. Unix에서 값은 콜론으로 구분 된 문자열입니다. Windows에서 값은 세미콜론으로 구분 된 문자열입니다. 계획 9에서 값은 목록입니다.

환경 변수가 설정되어 있지 않으면 GOPATH는 해당 디렉토리에 Go 배포가없는 한 사용자 홈 디렉토리 (유닉스의 경우 $ HOME / go, Windows의 경우 % USERPROFILE % \ go)에서 "go"라는 하위 디렉토리로 기본 설정됩니다. "go env GOPATH"를 실행하여 현재 GOPATH를 확인하십시오.

https://golang.org/wiki/SettingGOPATH를 참조 하십시오사용자 정의 GOPATH를 설정 를 .

GOPATH에 나열된 각 디렉토리는 규정 된 구조를 가져야합니다.

src 디렉토리는 소스 코드를 보유합니다. src 아래의 경로는 가져 오기 경로 또는 실행 파일 이름을 결정합니다.

pkg 디렉토리에는 설치된 패키지 오브젝트가 있습니다. 이동 트리에서와 같이 각 대상 운영 체제 및 아키텍처 쌍에는 고유 한 pkg (pkg / GOOS_GOARCH) 하위 디렉토리가 있습니다.

DIR이 GOPATH에 나열된 디렉토리 인 경우 DIR / src / foo / bar에 소스가있는 패키지를 "foo / bar"로 가져올 수 있으며 컴파일 된 양식이 "DIR / pkg / GOOS_GOARCH / foo / bar.a에 설치됩니다. ".

bin 디렉토리에는 컴파일 된 명령이 있습니다. 각 명령의 이름은 소스 디렉토리로 지정되지만 전체 경로가 아닌 최종 요소로만 지정됩니다. 즉, DIR / src / foo / quux에 소스가있는 명령은 DIR / bin / foo / quux가 아닌 DIR / bin / quux에 설치됩니다. "foo /"접두사가 제거되어 PATH에 DIR / bin을 추가하여 설치된 명령을 얻을 수 있습니다. GOBIN 환경 변수가 설정되면 명령은 DIR / bin 대신 이름이 지정된 디렉토리에 설치됩니다. GOBIN은 절대 경로 여야합니다.

디렉토리 레이아웃의 예는 다음과 같습니다.

GOPATH=/home/user/go

/home/user/go/
    src/
        foo/
            bar/               (go code in package bar)
                x.go
            quux/              (go code in package main)
                y.go
    bin/
        quux                   (installed command)
    pkg/
        linux_amd64/
            foo/
                bar.a          (installed package object)

..........

GOPATH가 Base Project DIR로 설정되어 있고이 문제가 계속 발생하면 Windows에서 GOBINBase Project DIR\bin또는 로 설정 하십시오%GOPATH%\bin .


1

달릴 때 조심하십시오

export GOPATH=$HOME

Go는 관련 코드가 특정 위치에 있다고 가정합니다 GOPATH. 대신 docker를 사용하여 go 명령을 실행할 수 있습니다.

docker run -it -v $(pwd):/go/src/github.com/<organization name>/<repository name> golang

이제 다음과 같은 golang 명령을 사용할 수 있습니다.

go test github.com/<organization name>/<repository name> 

0

Windows에서 GOPATH 환경 변수를 설정할 때 cmd 창이 이미 열려 있습니다. 먼저 cmd를 닫은 다음 다시 열어서 적용해야했습니다.


0

문제는 go main 기능이있는 go 파일이있는 패키지 디렉토리에없고 go install이 설치하려는 명령 (go main 기능이있는 go 파일)을 찾을 수 없다는 것입니다.

$ cd /path/to/file-with-main-function.go

그런 다음 다음을 실행하십시오.

$ go install 

-1

OSX 모하비 10.14에서 go됩니다 일반적으로 설치/usr/local/go .

따라서 이러한 ENV를 설정하면 잘 진행할 수 있습니다.

export GOPATH=/usr/local/go && export GOBIN=/usr/local/go/bin

또한 귀하의 bash_profile또는 zsh_profile작동하는 경우 추가하십시오 .

echo "export GOPATH=/usr/local/go && export GOBIN=/usr/local/go/bin" >> ~/.bash_profile && source ~/.bash_profile

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.