[go] GOBIN이 설정되지 않았습니다. go install을 실행할 수 없습니다.

내 main.go 파일에 대한 사용자 지정 패키지를 설치하려고합니다. 그러나 내가 달렸을 때

go install custom.go

이 오류가 발생했습니다

go install: no install location for .go files listed on command line (GOBIN not set)

GOBIN은 어떻게 설정하나요?



답변

업데이트 2020 : 이동 1.11과 이후 이동 모듈의 도입 , GOPATH더 이상 프로젝트별로 필요하지 않고, 기본값은~/go 글로벌 도구는 / 당신이하고자 프로젝트 go get.

Go 1.16 (2020 년 1 분기)의 기본값 GOBINGOPATH[0]/bin .

그러나 지금은 모듈을 사용하는 모든 프로젝트의 경우 ” go install: no install location ...” 와 같은 오류 메시지가 더 이상 표시되지 않습니다.


2014 년 원래 답변 :

GOPATH변수를 확인하십시오 .
다음 사항을 확인하십시오.

  • 당신의 출처는 아래에 있습니다 GOPATH/src
  • 당신은이 bin당신의 GOPATH 폴더 안에 폴더를.

참조 GOPATH 환경 변수 ( ‘DIR’는 것입니다 GOPATH폴더) :

bin디렉토리는 컴파일 명령을 보유하고 있습니다.
각 명령은 소스 디렉토리의 이름이 지정되지만 전체 경로가 아닌 마지막 요소 만 지정됩니다. 즉, 소스가있는 명령 DIR/src/foo/quux이에 설치 DIR/bin/quux되지 않고에 설치됩니다 DIR/bin/foo/quux. 은 ” foo/당신이 추가 할 수 있도록”접두어가 제거되고 DIR/bin사용자에 PATH설치된 명령에서 얻을 수 있습니다.

경우 GOBIN환경 변수가 설정되고, 명령은 디렉토리 대신 그 이름에 설치됩니다 DIR/bin. GOBIN절대 경로 여야합니다.


예를 들어, 이 스레드 는 go 빌드가 외부에서 수행되는 경우 어떤 일이 발생하는지 보여줍니다 GOPATH/src.

당신 같은 외모 GOPATH로 설정되어 ~/go있지만 실행 go install에 명령을~/dev/go

Go Build 보기

Go 경로는 Go 소스 코드를 포함하는 디렉토리 트리 목록입니다. 표준 Go 트리에서 찾을 수없는 가져 오기를 해결하기 위해 참조됩니다.

을 완료 한 경우 (아니오 )를 go build시도 할 수도 있습니다. 단일 파일이 아닌 패키지를 설치하려고합니다.go installcustom.go


답변

나는 GOBIN 경로를 설정했고 그것은 나를 위해 일했습니다.

export GOBIN=[WorkspacePath]/bin


답변

초보자로서 다양한 go 명령 (빌드, 실행 및 설치)을 시도 할 때이 오류가 발생했습니다. 즉, 당신은 할 수없는 설치 이동 filename.go을 . 패키지 만 설치할 수 있습니다.

다음을 배웠기 때문에 이것은 혼란 스러웠습니다.

nate:~/work/src/dir $ go run hello/hello.go
hello, world.

잘 작동합니다. 그러나 설치 가 작동하지 않는 이유를 알 수 없었습니다.

nate:~/work/src/dir $ go install hello/hello.go
go install: no install location for .go files listed on command line (GOBIN not set)
nate:~/work/src/dir $ go install hello
can't load package: package hello: cannot find package "hello" in any of:
    /opt/go/src/hello (from $GOROOT)
    /home/ubuntu/work/src/hello (from $GOPATH)

내가 어떤 디렉토리에 있었 든 상관 없습니다.

nate:~/work/src/dir $ cd hello
nate:~/work/src/dir/hello $ go install hello.go
go install: no install location for .go files listed on command line (GOBIN not set)
nate:~/work/src/dir/hello $ go install hello
can't load package: package hello: cannot find package "hello" in any of:
    /opt/go/src/hello (from $GOROOT)
    /home/ubuntu/work/src/hello (from $GOPATH)

이 혼란은 go run 이 Go 소스 파일 (.go로 끝나는 파일 이름) 에서만 작동하고 go install 은 패키지 허용하기 때문입니다. 패키지는 가져 오기 경로 또는 파일 시스템 경로로 이름이 지정됩니다. 그러므로:

nate:~/work/src/dir $ go install dir/hello
nate:~/work/src/dir $ go install ./hello/
nate:~/work/src/dir/hello $ go install .

모두 잘 작동합니다. 첫 번째는 가져 오기 경로로 패키지를 참조합니다 ($ GOPATH = “/ home / nate / work”라고 가정하면 go 도구는 / home / nate / work / src에서 소스 코드를 찾습니다). 나머지는 파일 시스템으로 해석됩니다. 선행 기간 때문에 경로.

GOPATH 문서 도 참조하십시오 .


답변

실제로 두 가지 종류의 행동이 있습니다.

go install <package>

이것은 컴파일 및 패키지 및 종속성 설치에
문서화되어 있습니다. GOPATH를 올바르게 설정하면 GOBIN이 필요하지 않습니다.

go install <gofile>

이것은 문서화되지 않았으며이 모드에서는 GOBIN 환경 변수가 필요합니다.


답변

이전 답변에서 지적했듯이 GOPATH 환경이 작업 공간에 올바르게 설정되어 있으면 GOBIN 환경 변수를 설정할 필요가 없습니다.

$ go env |를 실행하여 go 환경 변수를 확인하십시오. grep -i “^ GO”를 선택하고 GOROOT 및 GOPATH를 찾아 GOROOT가 GO 소스 설치를 가리키고 GOPATH가 작업 공간을 가리키고 있는지 확인합니다.

모든 것이 올 바르면 yourpkg.go가있는 하위 디렉토리로 이동 한 다음 먼저 $ go build (파일 이름없이)를 실행하고 $ go install (다시 파일 이름으로) second를 실행합니다. 화면에 오류 메시지가 표시되지 않으면 패키지는 작업 공간 /pkg/youros/../yourpackage.a에서 준비되었습니다.


답변

cygwin이있는 Windows에서는 GOBIN을 $ GOPATH / bin으로 설정하는 것이 좋습니다.

Windows 파일 이름 구분 기호를 올바르게 이스케이프해야합니다.

$ echo $GOROOT
C:\Go\

carl@rainier ~/gocode/src/github.com/user/hello
$ echo $GOPATH
C:\cygwin64\home\carl\gocode

carl@rainier ~/gocode/src/github.com/user/hello
$ echo $GOBIN
C:\cygwin64\home\carl\gocode\bin


답변

들어 *nix시스템, 어디 있는지 go다음 명령을 실행, 설치됩니다

$ which go

어떤 출력이 다음과 같이 말합니까?

/usr/local/go/bin/go

그런 다음 ~/.bash_profile또는에 다음 항목을 추가하십시오 ~/.zshrc.

export GOROOT=/usr/local/go
export GOPATH=$GOROOT/src //your-go-workspace
export GOBIN=$GOROOT/bin //where go-generate-executable-binaries

PATH=$PATH:$GOPATH:$GOBIN

export PATH

추신 : 마 소스에 잊지 ~/.bash_profile또는 ~/.zshrc다음과 같이 :

$ source ~/.bash_profile