우분투에서 GOPATH 환경 변수를 어떻게 설정합니까? 어떤 파일을 편집해야합니까?


258

나는 노력하고있다 go get:

go get github.com/go-sql-driver/mysql

다음 오류와 함께 실패합니다.

package github.com/go-sql-driver/mysql: cannot download, $GOPATH not set. For more details see: go help gopath

내가 할 때 go envGo 값 목록이 아래와 같이 표시됩니다.

ubuntu@ip-xxx-x-xx-x:~$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CGO_ENABLED="1"

GOPATH가 명확하게 설정되어 있지 않습니다. 어떻게 그리고 어디서 설정합니까?

이 오류를 언급하는 많은 스레드가 있지만 내 질문에 대한 답변을 제공하는 스레드가 없습니다.이 경로의 값을 제공하기 위해 어떤 파일을 편집해야합니까?


어떤 쉘을 사용하고 있습니까?
fuz

3
무엇으로 설정해야하는지에 대한 답변과 함께이 SO 답변을 참조하십시오 . GOPATH가 무엇인지, 그리고 일반적인 사용법을 설명합니다.
Louis Maddox



1
참고 : Go 1.8+ (2017 년 2 분기)가 설정 됩니다 . 아래 내 답변을GOPATH 참조하십시오 .
VonC

답변:


284

새로운 길:

이 답변을 확인하십시오.

올드 웨이 :

~ / .bashrc에 다음 줄을 추가하면 지속됩니다. 그러나 내 샘플에서 $ HOME / go 대신 GOPATH로 원하는 다른 경로를 사용할 수 있습니다 .

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

14
경로는 /usr/share/go내 우분투 13.10에 있었다.
tsusanka

35
/ usr / share / go를 사용하지 마십시오. GOPATH는 패키지를 다운로드하는 등의 "작업 공간"입니다. 새 디렉토리를 작성하고 사용하십시오. ~ / .go를 추천합니다
Bryan Larsen

16
user2128535의 대답에 명시된 바와 같이, GOROOT로 설정해야한다는 / usr / lib 디렉토리 / 이동
trungly


12
$ source ~/.bashrc;)
eversor

65

우분투 14.04

export GOPATH=$HOME/go

또한이 문자열을 파일에 추가 할 수 있습니다

$HOME/.bashrc

1
귀하의 의견은 원래 답변에서 삭제 된 줄을 참조하고 있기 때문에 혼란 스럽습니다.
Marcel Burkhard 2016

에서 mkdir -p ~ / 이동 / 빈 수출 GOPATH = ~ / 이동 수출 PATH = $ PATH : $ GOPATH / 빈 :
알렉스 Punnen

61

GOPATH는 새로 작성된 빈 디렉토리로 설정해야합니다. 이것은 "워크 스페이스"로, 패키지 등을 다운로드하는 곳입니다. ~ / .go를 사용합니다.

예를 들면 다음과 같습니다.

mkdir ~/.go
echo "GOPATH=$HOME/.go" >> ~/.bashrc
echo "export GOPATH" >> ~/.bashrc
echo "PATH=\$PATH:\$GOPATH/bin # Add GOPATH/bin to PATH for scripting" >> ~/.bashrc
source ~/.bashrc

출처 : http://www.larry-price.com/blog/2013/12/15/setting-up-a-go-environment-in-ubuntu-12-dot-04/


1
대단히 감사합니다
Dylan B

35

새로운 방법 : 모듈 이동

Go 1.11부터는 더 이상 GOPATH를 사용할 필요가 없습니다. 프로젝트 디렉토리로 이동하여 한 번만 수행하십시오.

go mod init github.com/youruser/yourrepo
  • 이를 통해 Go는 해당 디렉토리에 모듈 루트를 만듭니다.
  • 원하는만큼 모듈을 만들 수 있습니다.
  • 단계별 지침은 이 답변을 참조하십시오 .

옛날 방식 : GOPATH

GOPATH 작업을 고집한다면 다음 사항에주의하십시오.

  • Go 1.8부터 GOPATH 또는 GOROOT를 설정할 필요가 없습니다.
  • GOPATH는 기본적으로 사용자 / 홈 디렉토리에 있습니다.

설명서에서 :

GOPATH가 설정되어 있지 않으면 Unix 시스템에서는 $ HOME / go, Windows에서는 % USERPROFILE % \ go로 간주됩니다. 사용자 정의 위치를 ​​작업 공간으로 사용하려는 경우 GOPATH 환경 변수를 설정할 수 있습니다.


34

예를 들어, 패키지를 설치 한 후 우분투 인 경우 :

$sudo apt install golang -y

~ / .bashrc에 다음 줄을 추가하십시오 (사용자의)

export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

19
export GOPATH=/path/desired/here

파일을 편집 할 필요가 없습니다. 위 명령을 사용하여 Go 환경 변수를 직접 편집 할 수 있습니다.


11
이것은 영구적이지 않습니다. 이 옵션을 유지하려면 로그인 할 때로드되는 일부 파일에 추가해야합니다.
큐빅

1
감사! 대부분의 사용자가 생각하지 않는 것은 리눅스로 시작하는 사람들이 있고 당신이 말한 것을 말하는 문서가 없다면 (모두가 알려진 사실이라고 생각하기 때문에) 어떻게 정보를 배우고 찾을 수 있습니까?
PlayHardGoPro

19

이 코드를 터미널에 작성하십시오.

export GOPATH=path/to/your/gopath/directory

참고 : 이것은 모든 새 터미널 창이나 시스템을 다시 시작할 때마다 재설정됩니다.

지속성을 유지하려면 쉘에 따라 아래 코드를 파일 .zshrc또는 .bashrc파일에 붙여 넣으십시오 . 홈 디렉토리에있는 파일들 . 아래와 같습니다.

export PATH=path/to/some/other/place/composer/for/example
export GOPATH=path/to/your/gopath/directory
export PATH=$PATH:$GOPATH/bin

11

나중에 GOPATH가 필요합니다. 에 추가하십시오 ~/.bashrc.


10
그렇습니다, 나는 이것을 염두에 두었지만, 남자가 커스텀 쉘을 가진 우분투 상자를 가지고있을 가능성이 거의
없었습니다.

9

환경 변수 (예 : Java, Go 등)를 수정해야하는 항목을 설정 한 경우 이는 매우 익숙합니다.

Go 경로로 다음 디렉토리 구조가 있다고 가정합니다.

\---[folder name]
    +---bin
    +---pkg
    \---src
  • 새로운 터미널을 열다
  • 유형 sudo nano /etc/environment
  • 발견 PATH=...과 그것의 끝에 가서 콜론을 추가 :한 후 전체에 붙여 마지막 경로 후 go path/home/user/gocode

그리고 당신은, 이것이 시스템을 통해 지속되도록해야합니다.


1
go가 David를 위해 일하는 경우 왜 $ PATH를 변경하는지 알 수 없습니다. 그는 $ GOPATH를 설정해야합니다 (Daniel Lin의 답변 참조). David는 두 가지 방법을 모두 병합 할 수 있습니다 (또는 / etc / profile 또는 $ HOME / .profile에 설정). 그건 그렇고, David는 다음 링크를 읽을 것을 권장합니다 : golang.org/doc/install and golang.org/doc/code.html#GOPATH
zk82

2
@ zk82 $ GOPATH는 환경 변수 이며이 변수를 문제에 추가하기 위해 환경 변수를 편집하는 이유를 알 수 없습니다. $ JAVA_HOME 및 이러한 구성이 필요한 다른 프레임 워크도 마찬가지입니다.
ymg

알 겠어. 귀하의 의견에 감사드립니다.
zk82

3

이것은 나를 위해 일하고있어 무엇 우분투 15.10 은 Using fish shell:

# ~/.config/fish/config.fish

set -g -x PATH /usr/local/bin $PATH
set -g -x GOPATH /usr/share/go

그런 다음 go폴더 에 대한 권한을 변경해야 했습니다 (루트로 설정되었습니다)

sudo chown <name>:<name> -R /usr/share/go

3

go path는 디렉토리를 만들고 GOPATH 이름으로 전역 경로 변수를 환경에 설정하려는 모든 곳이 될 수 있습니다.

mkdir ~/go
export GOPATH=~/go
go get github.com/go-sql-driver/mysql

2

Go 1.8 (2017 년 2 분기)을 사용하면 기본값을 수락 한 경우 파일을 편집 할 필요가 없습니다 GOPATH(설정된 값).

$HOME/go

문제 17262관련 트위터 투표 에 대한 의견을 확인할 수 있습니다 .

기본값을 선택하면 다음 GOPATH과 같이 말할 수 있기 때문에 문서를 더 쉽게 만들 수 있습니다.

$ go get github.com/foo/bar

github.com/foo/barrepo를 확인합니다 $HOME/go/src/github.com/foo/bar.

우리는 env var를 설정 해야하는 새로운 이민자를 혼란스럽게 할 필요가 없습니다. 우리가해야 할 일은 페이지 하단에 작은 괄호를 적는 것입니다.

$HOME/go이동 작업 공간의 기본 경로입니다.
이 경로를 변경하려면 GOPATH변수를 원하는 것으로 설정하십시오 .


2

나의 이동 환경은 당신과 비슷해 보였습니다.

$go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH=""
GORACE=""
GOROOT="/usr/lib/go-1.6"
GOTOOLDIR="/usr/lib/go-1.6/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT="1"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"

GOPATH를 / usr / lib / go 로 설정하여 해결했습니다 . 사용해보십시오.

export GOPATH=/usr/lib/go
export PATH=$PATH:$GOPATH/bin

GOPATH를 설치 디렉토리와 동일하게 설정하는 것은 나쁜 생각입니다. Oo
ankush981

2

GOPATH 는 작업 공간 위치에 대한 환경 변수입니다. GOROOT 는 설치 디렉토리의 환경 변수입니다. 설치 시간 동안 GOROOTGOPATH 가 자동으로 설정 되지만 (버그가없는 경우) 수동으로 지정하려면 아래 프로세스를 따르십시오. 또한 자세한 정보는 GO wiki page를 참조하십시오 .

그것은 더 나은 설정하는 것입니다 GOPATH 예를 들어, 홈 디렉토리, 내부의 디렉토리에 $ HOME은 / % USERPROFILE % \ (Windows)를 이동 이동합니다.

  1. 이것은 macOS Sierra, ver. JetBrains에 의해 Go 프로그래밍을위한 IDE로 소개 된 Gogland-EAP에서도 10.12.

터미널 유형

vim ~/.profile

터미널의 열린 문서에서 i를 누르고 다음 경로를 추가하십시오.

GOPATH=/path/to/a/directory/inside/home/directory
GOROOT=/path/to/you/go/library
PATH=$PATH:$GOPATH:$GOROOT:$GOROOT/bin

ESC를 누르고 : x를 입력 하십시오 . 마지막으로 터미널을 다시 시작 ( 닫기열기 )하거나 로그 아웃 한 후 다시 로그인 해야합니다.

  1. Windows 및 Linux 구성의 경우 GOPATH-Golang 설정의 Githab 에서 Go Wiki 페이지를 참조하십시오 .

주의 GOROOTGOPATH 를 동일한 디렉토리로 설정하지 마십시오 . 그렇지 않으면 경고가 표시됩니다.


2
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin

그리고 당신은 $ go env로 확인하고 싶을 수도 있습니다


2

(우분투)

GOPATH를 설정하지 않으면 기본값이 사용됩니다.

$ GOPATH / bin에 설치된 바이너리를 실행하려면 $ GOPATH / bin을 PATH에 추가하거나 $ GOPATH / bin / the- 명령을 입력해야합니다. 이것을 ~ / .bash_profile에 추가하십시오

export PATH=$GOPATH/bin:$PATH

현재 GOPATH 명령 :

go env GOPATH

GOPATH 명령 변경 :

export GOPATH=$HOME/your-desired-path


0

이것은 가장 성가신 일이었습니다. 시간을 절약하기 위해.

IF go가 루트 사용자로 설치되었습니다. 시스템의 bash_profile 텍스트 파일 ~ / .bash_profile의 루트 사용자는 go 설치 디렉토리에 $ GOROOT를 지정하고 go / src 디렉토리에 $ GOPATH를 지정해야합니다.

  ...$# sudo su
  ...$# vi ~/.bash_profile

    ***Story continues in vi editor***

    GOROOT=$GOROOT:/usr/local/go
    GOPATH=$GOPATH:/usr/local/go/src
    ...
    [your regular PATH stuff here]
    ...

이진 경로가 .bash_profile의 경로에 있는지 확인하십시오.

PATH = $ PATH : $ HOME / bin : / usr / local / bin : / usr / local / go / bin

이 PATH는 긴 문자열 일 수 있습니다. 콜론으로 구분 된 새 항목을 추가하려면 다음을 수행하십시오.

vi 편집기를 종료하고 bash 프로파일 저장 (: wq는 쓰기 및 종료를 나타냄)

  [esc] 
  [shift] + [:] 
  :wq

터미널에서 로그 아웃했다가 다시 로그인하여 프로필을 다시 시작해야합니다. 또는 내보내기를 사용하여 시작하면됩니다.

...$# export GOPATH=/usr/local/go/src

다음과 같은 환경을 확인할 수 있습니다.

...$# go env

예이!

GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/usr/local/go/src"
GORACE=""
GOROOT="/usr/local/go"

이제 sudo 및 go를 사용하여 go / src 내부에 디렉토리를 다운로드하고 작성할 수 있으며 수행하려는 작업으로 내려갈 수 있습니다.

# sudo go get github.com/..

이제 다른 문제가 발생합니다. git가 설치되지 않았을 수도 있습니다. 그것은 또 다른 모험입니다 .. :)


이러지 마 당신은 할 수 없습니다 루트로 물건을 컴파일하려면 당신은 할 수 없습니다 원하는 go get어느 곳 근처에 아무것도 넣어 GOROOT.
Dave C

한 번의 실행으로 일반 사용자는 어떻게됩니까? 정말 고마워. 설치 과정에서 문제가 발생하지 않아 테스트 가상 머신을 사용하여 GO를 사용해 보았습니다.
user3151532

0

Fedora 20 컴퓨터에서 ~ / .bashrc에 다음 줄을 추가했습니다.

export GOROOT=/usr/lib/golang
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

3
설정하지 마십시오GOROOT . (이진 Go 배포판을 사용하지만 비표준 위치에 설치하는 사람이 극소수 인 경우를 제외하고)
Dave C

0

또 다른 해결책 : 모든 GO*환경 변수를go env

.bashrc :

eval $(go env | grep '^GO[A-Z0-9_]*=' | while read setenv; do
  echo "export $setenv; "
done 2> /dev/null)

[[ -n $GOPATH ]] || export GOPATH="$HOME/go/bin"
[[ -n $GOROOT ]] || export GOROOT=/usr/bin/go
export PATH="$PATH:$GOPATH/bin:$GOROOT/bin"

1
eval이 상황에서 일반적으로 나쁜 생각과 과잉입니다 IMHO
Paweł Prażak

@ PawełPrażak 왜? (나는 쉘 스크립트 전문가가 아니다)
DMaster

1
평가 대상에 버그가있는 경우 그 결과는 고통 스러울 수 있습니다. 여기에 질문을 내보내는 방법이었다 GOPATH단지
파블 Prażak

0

~/.bash_profile다음 줄을 추가하도록 편집하십시오 .

$ export GOPATH=$HOME/work

편집기를 저장하고 종료하십시오. 그런 다음~/.bash_profile

$ source ~/.bash_profile

참고 : go install이 실행될 때 바이너리 파일을 생성하도록 GOBIN 경로를 설정하십시오.

$ export GOBIN=$HOME/work/bin


-1

공식 지침명시된 바와 같이 :

GOPATH 환경 변수는 작업 공간의 위치를 ​​지정합니다. 기본적으로 홈 디렉토리 안에 go라는 디렉토리가 있으므로 Unix의 경우 $ HOME / go, Plan 9의 경우 $ home / go, Windows의 경우 % USERPROFILE % \ go (일반적으로 C : \ Users \ YourName \ go)입니다. 다른 위치에서 작업하려면 GOPATH를 해당 디렉토리의 경로로 설정해야합니다. 다른 일반적인 설정은 GOPATH = $ HOME을 설정하는 것입니다. GOPATH는 Go 설치와 동일한 경로가 아니어야합니다.

예를 들어 Jetbrains Webstorm에서 코딩하는 경우 ( Go 플러그인 사용 )로 설정 GOPATH하는 것이 /Users/<user>/WebstormProjects좋습니다.

간단히 말해서 Go 프로젝트가 상주 할 위치로 설정하십시오.


-1

다른 사람들이 제안한 것처럼 "내보내기"솔루션을 사용할 수 있습니다. 영구적 인 편의를 위해 다른 솔루션을 제공하고 싶습니다 .Go 명령을 실행할 때 모든 경로를 GOPATH로 사용할 수 있습니다.

첫째, 당신은라는 이름의 작은 도구 다운로드해야합니다 gost: https://github.com/byte16/gost/releases를 . 우분투를 사용하는 경우 Linux 버전을 다운로드 할 수 있습니다 ( https://github.com/byte16/gost/releases/download/v0.1.0/gost_linux_amd64.tar.gz ).

그런 다음 아래 명령을 실행하여 압축을 풉니 다.

$ cd /path/to/your/download/directory 
$ tar -xvf gost_linux_amd64.tar.gz

당신은 실행 파일을 얻을 것 gost입니다. /usr/local/bin편리한 사용 을 위해 옮길 수 있습니다 .

$ sudo mv gost /usr/local/bin

GOPATH로 사용하려는 경로를 경로 공간 gost 유지 에 추가하려면 아래 명령을 실행하십시오 . 나중에 사용할 경로 이름을 경로에 제공해야합니다.

$ gost add foo /home/foobar/bar     # 'foo' is the name and '/home/foobar/bar' is the path

원하는 형식으로 Go 명령을 실행하십시오.

gost goCommand [-p {pathName}] -- [goFlags...] [goArgs...]

예를 들어 GOPATH 로 실행하려면 다음 go get github.com/go-sql-driver/mysql/home/foobar/bar같이하십시오.

$ gost get -p foo -- github.com/go-sql-driver/mysql  # 'foo' is the name you give to the path above.

GOPATH를 설정하고 명령을 실행하는 데 도움이됩니다. 그러나 당신이에 경로를 추가 한 것을 기억 gostpathspace을 . 의 하위 디렉토리 수준에 있다면 /home/foobar/bar아래 명령을 실행하여 짧게 동일한 작업을 수행 할 수도 있습니다.

$ gost get -- github.com/go-sql-driver/mysql

gostGOPATH를 관리하고 Go 명령을 실행하는 데 도움이되는 간단한 Go of Tool입니다. 이 명령을 사용하여 다른 Go 명령을 실행하는 방법에 대한 자세한 내용은을 실행하면 gost help goCmdName됩니다. 예를 들어에 대한 자세한 내용을 보려면 install아래에 단어를 입력하십시오.

$ gost help install

프로젝트의 README에서 자세한 내용을 확인할 수도 있습니다. https://github.com/byte16/gost/blob/master/README.md


-1

사용하는 터미널 (bash 또는 zsh)을 기반으로 PATH를 업데이트해야합니다.

  1. 터미널 즉의 쉘 스크립트 파일 열기 ~/.bashrc또는 ~/.zshrc편집기에서
   vi ~/.zshrc
      (or)
   code ~/.zshrc
  1. 아래 GOPATH를 이미 찾은 경우 아래 줄을 추가하십시오.

export GOPATH=$HOME/go:/$HOME/projects/go

여기 :에서 시스템의 GO 프로젝트의 다른 위치에서 GOPATH환경 변수 /path/1:path/2:path/3등 으로 세미콜론으로 구분 된 하나 이상의 경로를 추가 할 수 있습니다 .

필자의 경우 위에 표시된 것처럼 하나는 루트 $HOME/go에서, 다른 하나는 프로젝트 디렉토리에서 2 개의 경로를 추가했습니다.:/$HOME/projects/go

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