GOPATH 및 GOROOT의 값은 무엇입니까?


323

다음 과 같이 doozer 를 설치하려고합니다 .

$ goinstall github.com/ha/doozer

이 오류가 발생합니다.

goinstall: os: go/build: package could not be found locally
goinstall: fmt: go/build: package could not be found locally
goinstall: io: go/build: package could not be found locally
goinstall: reflect: go/build: package could not be found locally
goinstall: math: go/build: package could not be found locally
goinstall: rand: go/build: package could not be found locally
goinstall: url: go/build: package could not be found locally
goinstall: net: go/build: package could not be found locally
goinstall: sync: go/build: package could not be found locally
goinstall: runtime: go/build: package could not be found locally
goinstall: strings: go/build: package could not be found locally
goinstall: sort: go/build: package could not be found locally
goinstall: strconv: go/build: package could not be found locally
goinstall: bytes: go/build: package could not be found locally
goinstall: log: go/build: package could not be found locally
goinstall: encoding/binary: go/build: package could not be found locally

3
위의 링크가 더 이상 유효하지 @Motin
Jorrit Reedijk

파일이 프로젝트에서 더 이상 사용되지 않게되었습니다. OSX와 관련된 문제는 여기에서 찾을 수 있습니다 : github.com/go-lang-plugin-org/go-lang-idea-plugin/issues/841
Motin

참고 : GOPATHGo 1.8 (2017)에서 기본적 으로 설정됩니다. 아래 답변을
VonC

그래, 난 이것들이 혼란스럽고 godocs가 조직되는 방식을 발견했다. 도움 : albertech.blogspot.com/2017/01/…
jar

1
@BenyaminJafari goinstall는 정말 고대의 사전 Go1이기 때문에 2012 년 이후 존재하지 않았습니다.
Dave C

답변:


310

GOPATH설명서 에서cmd/go 설명 합니다 .

GOPATH환경 변수를 나열 장소로 이동 코드를 볼 수 있습니다. Unix에서 값은 콜론으로 구분 된 문자열입니다. Windows에서 값은 세미콜론으로 구분 된 문자열입니다. 계획 9에서 값은 목록입니다.

GOPATH 표준 Go 트리 외부에서 패키지를 가져오고 빌드하고 설치하도록 설정해야합니다.

GOROOT설치 지침에 설명되어 있습니다 .

Go 바이너리 배포판은 배포 가 Windows /usr/local/go(또는 c:\GoWindows)에 설치 될 것이라고 가정 하지만 Go 도구를 다른 위치에 설치할 수 있습니다. 이 경우 GOROOT환경 변수가 설치된 디렉토리를 가리 키도록 설정해야합니다 .

예를 들어, 홈 디렉토리로 이동을 설치 한 경우 다음 명령을 추가해야합니다 $HOME/.profile.

export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin

참고 : GOROOT 사용자 정의 위치에 설치할 때만 설정해야합니다.

( Chris Bunch의 답변 버전이 업데이트되었습니다 .)


44
GOPATH에 대한보다 포괄적 인 정보는 Go Code 작성 방법에 있습니다. goGo를 사용하는 데 필수적인 명령 을 이해하는 데 필요한 정보를 파악 합니다. 예를 들어 goinstallOP에서 사용 은 이제이어야 go get합니다.
소니아

13
또한 실제 설치 경로를 참고하십시오. 예를 들어 기본 homebrew 설정에서 homebrew는 go in 설치합니다 /usr/local/Cellar/go/. 이 경우 내보내기 경로는 export GOROOT=/usr/local/Cellar/go/{version}및 로 설정해야합니다 export PATH=$PATH:$GOROOT/bin.
ekillaby

10
나는 export GOROOT=/usr/local/Cellar/go/1.2/libexec/양조장과 일 해야 했습니다.
Steven Soroka

: (SO 감사에게 많은 그렇지 않은)하지만 앱이 내 편집 포맷되지 않은 코드를 "포함 된 것으로 보인다"고 불평 때문에 편집을 제안 할 수
와일드 카드

GO 1.10부터 GOROOT가 설정되어 있지 않으면 이동 도구가 자체 위치로 알아냅니다. 붙여 넣기가 스택 교환의 iOS 앱에서 작동하지 않기 때문에 링크를 붙여 넣을 수도 없습니다. 지금 매우 좌절했습니다.
와일드 카드

97

다음은 간단한 설정입니다.

directory for go related things: ~/programming/go
directory for go compiler/tools: ~/programming/go/go-1.4
directory for go software      : ~/programming/go/packages

GOROOT, GOPATH, PATH는 다음과 같이 설정됩니다.

export GOROOT=/home/user/programming/go/go-1.4
export GOPATH=/home/user/programming/go/packages
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

간단히 말해 :

GOROOT는 이동 설치에서 제공되는 컴파일러 / 도구 용입니다.
GOPATH는 자신의 go 프로젝트 / 타사 라이브러리 ( "go get"으로 다운로드)를위한 것입니다.


폴더 구조에 대한 매핑이 있기 때문에이 대답을 이해하기가 더 쉽다고 생각합니다.
h-rai

GOPATH에 이미지, 스크립트, 빌드 파일 등과 같은 비 go 파일이 포함 된 전체 프로젝트 트리 (예 : git)가 포함됩니까?
Merzliakov Serge 1

52

먼저 실행하십시오 go env.
go가 설치되어 있지 않다면 homebrew패키지를 통해 또는 다른 방법으로 설치할 수 있습니다 .
출력이 표시되면 Go설치되어있는 것입니다.
설정되어 있고 설정되지 않은 모든 환경을 보여줍니다.

비어있는 경우 GOROOT:

  1. 실행 which go(내 컴퓨터에서 : /usr/local/go/bin/go)
  2. 다음과 같이 내보내십시오 export GOROOT=/usr/local/go

비어있는 경우 GOPATH:

  1. 필자의 경우 go 프로젝트를 위해 컴퓨터의 아무 곳에 나 디렉토리를 만듭니다. ~/GO_PROJECTS
  2. 그때 export GOPATH=~/GO_PROJECTS

2
which go나를 위해 그것을했다. Chocolatey를 사용한 이전 설치와 다른 이동 설치 위치를 사용하고있었습니다. 해당 폴더를 삭제하고 PATH 변수에서 제거했습니다. 이제 작동합니다. 감사!
sgarg

which go명령이 Windows 7에서 작동하지 않았습니다.이 명령을 어디에서 실행해야합니까?
firstpostcommenter

해당 windows 명령은 where go실행 된 파일의 경로를 보여줍니다.
Falco

export GOPATH=~/GO_PROJECTS일을했다
Thamaraiselvam 19:38에

39

GOPATH여기 에 논의 됩니다 :

GOPATH환경 변수

GOPATH Go 코드, 패키지 객체 및 실행 파일을 찾을 수있는 경로를 콜론으로 구분 된 경로 목록으로 설정할 수 있습니다.

A가 설정 GOPATH빌드로 goinstall를 사용하여 이동 트리의 외부에 자신의 코드와 외부 라이브러리를 설치 (그리고 메이크를 작성 피하기 위해) 할 수 있습니다.

그리고 여기GOROOT 에 논의 됩니다 :

$GOROOT바둑 나무의 뿌리 $HOME/go. 기본값 all.bash은 실행 되는 디렉토리의 상위입니다 . 을 설정하지 않으면 $GOROOT, 기존 makefile을 사용하여 Go 프로그램을 개발할 때 make 또는 gmake 대신 gomake를 실행해야합니다.


따라서 ~ / projects / go에 설치 한 경우 os, fmt 등을 찾으려면 변수의 값은 무엇입니까?
jshen

2
그렇다면 Go는 어디에 설치 sudo apt-get install golang합니까?
weberc2

9
@ weberc2을 실행하면 go env그것이 나를 위해, 해당 정보를 볼 수/usr/lib/go/
앙드레

19

나는 go help gopath문서를 읽고 여전히 혼란 스러웠지만 다른 go doc 페이지 에서이 작은 덩어리를 발견했습니다.

GOPATH 환경 변수는 작업 공간의 위치를 ​​지정합니다. Go 코드를 개발할 때 설정해야하는 유일한 환경 변수 일 수 있습니다.

http://golang.org/doc/code.html#GOPATH


10

GOPATH는해야 하지 이동 설치를 가리키는 것이 아니라 작업 공간에 (참조 https://golang.org/doc/code.html#GOPATH을 ). go get 또는 go install로 일부 패키지를 설치할 때마다 GOPATH에 들어갑니다. 그렇기 때문에 인터넷에서 임의의 패키지가 공식 설치에 버려지 는 것을 원하지 않는다는 경고 가 표시됩니다.


9

go 1.8 (2017 년 2 분기)부터 GOPATH가 기본적으로 $ HOME / go로 설정됩니다.

문제 17262 및 Rob Pike의 의견을 참조하십시오 .

$HOME/go될 것입니다.
단 하나의 최선의 대답은 없지만 짧고 달콤합니다. $HOME/go이미 존재하는 경우 해당 이름을 선택하면 문제가 될 수 GOPATH있습니다. 이미 설치되어 있고 이해하는 전문가에게만 도움이됩니다 .


어떻게 그렇게 간단한 주제가 그렇게 복잡해 질 수 있습니까? 가장 좋은 답변을 보내 주셔서 감사합니다.
dodgy_coder

@dodgy_coder 실제로 ... 내 다른 답변의 첫 두 줄을 살펴보십시오. stackoverflow.com/a/37905102/6309 ;) 더 간단해질 수 있습니다. 더 이상 GOPATH는 없습니다! stackoverflow.com/a/48914523/6309에 자세한 내용이 있습니다.
VonC

예, 동의합니다. 기본값으로 이동하면 GOPATH가 실제로 필요하지 않습니다. 맞습니까? Google App Engine (Go Standard) 개발 환경에 필요하기 때문에 어쨌든 설정해야했습니다. 그들은 실제로 당신에게 GOPATH를 설정하라고 말하지만, 그것을 설정할 값을 말하지 않습니다 ..!
dodgy_coder

@dodgy_coder 예, 기본적으로 Go는 고정 된 미리 결정된 값으로 프로젝트 PATH를 찾습니다.
VonC

6

앞에서 말했다시피:

GOPATH 환경 변수는 작업 공간의 위치를 ​​지정합니다.

Windows의 경우 이것은 나를 위해 일했습니다 (Ms-dos 창에서).

set GOPATH=D:\my_folder_for_go_code\

이렇게하면 다음과 같이 사용될 때 Ms-dos가 인식하는 GOPATH 변수가 작성됩니다.

cd %GOPATH%

3

관해서 GOROOT구체적으로, 이동 1.9의 설치 경로를 자동으로 설정한다.
Go가 여러 개 설치되어 있어도 1.9.x를 호출하면로 설정 GOROOT됩니다 /path/to/go/1.9(설정되지 않은 경우 /usr/local/go또는c:\Go ).

CL Go Review 53370 참조 :

go tool지금이 트리를 설치 이동의 루트를 찾기 위해 시도 호출되는 경로를 사용합니다 .
즉, 전체 Go 설치를 새 위치로 옮기면 go tool평소대로 계속 작동합니다.

이는 GOROOT환경에서 설정 하여 무시할 수 있으며 이는 예외적 인 상황에서만 수행해야합니다.
이것은 결과에 영향을 미치지 않습니다.runtime.GOROOT() 기능 기능 원래 설치 위치를 계속보고합니다. 이는 이후 릴리스에서 수정 될 수 있습니다.


0

2020 및 Go 버전 1.13 이상에서 Windows에서 GOPATH를 업데이트하는 가장 좋은 방법은 명령 프롬프트에 입력하는 것입니다.

setx GOPATH C:\mynewgopath

0

다음은 하나의 솔루션입니다 (단일 사용자).

GOROOT=$HOME/.local # your go executable is in $GOROOT/bin
GOPATH=$HOME/.gopath
PATH=$GOROOT/bin:$GOPATH/bin:$PATH

go변경할 경우 불평 .gopath으로.go .

나는 그들이 rust/cargo사람들이 한 일과 함께 가서 모든 것을 한 곳에두기를 바랍니다.


-1

osx에서 brew와 함께 설치되었습니다. 여기에 맞는 설정이 있습니다.

GOPATH="$HOME/my_go_work_space" //make sure you have this folder created

GOROOT="/usr/local/Cellar/go/1.10/libexec"

-1

나는 덧붙여 야했다

export GOROOT=/usr/local/Cellar/go/1.10.1/libexec

제에 ~ / .bash_profile에 맥 OS X에


-1

go를 사용할 때 모든 go 파일을 컴파일하는 경우도 있습니다.

따라서 main.go 파일이 하나 있다고 가정 하고 나중에 현재 파일을 main_old.go로 변경 한 다음 새 main.go 파일 을 추가했습니다 . 그런 다음 앱을 빌드하면 모든 go 파일이 컴파일됩니다. 따라서 발생하는 오류는 다른 go 파일의 컴파일 오류로 인한 것일 수 있습니다.


-1

Go lang이 설치되면 GOROOT는 설치의 루트 디렉토리입니다.

Windows C : \ 디렉토리에서 Go Lang 바이너리를 분해했을 때 GOROOT는 C : \ go 여야합니다. Windows 설치 프로그램으로 설치 한 경우 C : \ Program Files \ go (또는 64 비트 패키지의 경우 C : \ Program Files (x86) \ go) 일 수 있습니다.

 GOROOT = C:\go

내 GOPATH는 Go lang 소스 코드 또는 작업 공간의 위치입니다.

내 Go lang 소스 코드가 C : \ Users \\ GO_Workspace에있는 경우 GOPATH는 다음과 같습니다.

 GOPATH = C:\Users\<xyz>\GO_Workspace

-1

명시 적으로 설정할 필요는 없습니다 GOROOT(Go의 최신 버전은 실행하는 go 바이너리의 위치에 따라 자체적으로 알아낼 수 있습니다).

또한 작업하려고 할 때 다음 오류가 발생했습니다 vgo.

go: modules disabled inside GOPATH/src by GO111MODULE=auto; see 'go help modules'

GOROOT를 제거하고 GOPATH를 업데이트 export GO111MODULE="on"하고 문제를 해결했습니다.

GOPATH 여기를 참조 하십시오

GOPATH는 Go 코드, 패키지 객체 및 실행 파일을 찾을 수있는 콜론으로 구분 된 경로 목록으로 설정 될 수 있습니다.

goinstall을 사용하여 Go 트리 외부에서 고유 코드 및 외부 라이브러리를 빌드하고 설치하고 Makefile 작성을 피하도록 GOPATH를 설정하십시오.



-3

배포판을 사용하는 경우 포함 파일의 위치를 ​​지정해야합니다. 예를 들면 다음과 같습니다.

$ rpm -ql golang | grep include
/usr/lib/golang/include

(이것은 Fedora 20 용입니다)

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