내 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 분기)의 기본값 GOBIN
은 GOPATH[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 install
custom.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