Cài đặt go with brew, and running the gotour


101

Tôi đã theo dõi http://tour.golang.org/ cho đến khi tôi đến bước thứ ba, bước thứ ba sẽ cho bạn biết rằng bạn có thể cài đặt gotour trên hệ thống của mình. Sau đó, tôi đã cài đặt ngôn ngữ go với brew bằng cách:

brew install hg
brew install go

Sau đó, tôi tải xuống gotour bằng cách:

go get code.google.com/p/go-tour/gotour

Khi tôi cố gắng khởi chạy gotour, nó không nhận ra lệnh:

$ gotour
-bash: gotour: command not found

$ go gotour

$ ./gotour

Vì vậy, tôi đã cố gắng xem đường đi và nó trống rỗng,

echo $GOPATH

vì vậy tôi đã xác định GOPATH:

GOPATH=/usr/local/Cellar/go/1.0.2/src/pkg/code.google.com/p/
export GOPATH

Bây giờ tôi có thể chạy gotour bằng cách chạy

./gotour

Nhưng tôi không an tâm về môi trường đi của mình .. không phải tôi đã đủ khả năng để có thể chạy trốn

go run gotour

hoặc chỉ bằng cách nhập (như được mô tả trên trang web này http://www.moncefbelyamani.com/how-to-install-the-go-tour-on-your-mac/ ):

gotour

Tôi muốn biết liệu tôi có đang làm mọi thứ đúng cách hay không vì tôi mới làm quen với ngôn ngữ lập trình go.


2
GOPATH của bạn không được giống với GOROOT của bạn. Đặt nó thành một cái gì đó giống như $HOME/govà thêm $GOPATH/binvào PATH của bạn.
elithrar

BTW lệnh go tour get và url giờ đã thay đổi thành: go get golang.org/x/tour/gotour
Tiếng Đức

Câu trả lời:


183

Cài đặt go 1.4 với homebrew trên OSX:

1) Tạo thư mục

mkdir $HOME/Go
mkdir -p $HOME/Go/src/github.com/user

2) Thiết lập đường dẫn của bạn

export GOPATH=$HOME/Go
export GOROOT=/usr/local/opt/go/libexec
export PATH=$PATH:$GOPATH/bin
export PATH=$PATH:$GOROOT/bin

3) Cài đặt Go

brew install go

4) "đi lấy" những điều cơ bản

go get golang.org/x/tools/cmd/godoc

5) Bắt đầu tại đây: https://golang.org/doc/code.html tại "chương trình đầu tiên của bạn"


2
IntelliJ Ý tưởng không tìm thấy GOPATH được định nghĩa trong .bashrc của bạn? Trong bước 2 dán dòng xuất khẩu trong .bash_profile, không phải trong .bashrc, khởi động lại máy Mac của bạn và IntelliJ sẽ tìm GOPATH (chỉ thử nghiệm, khởi động lại cần thiết)
firepol

1
Tôi đã tự động thiết lập $ GOPATH mà bạn mô tả github.com/camilin87/setup_go
Camilo Sanchez

Tại sao bạn lại sử dụng $Home/Gochữ hoa G? Bộ cài đặt homebrew sử dụng một chữ thường GEG ==> Caveats A valid GOPATH is required to use the `go get` command. If $GOPATH is not specified, $HOME/go will be used by default: https://golang.org/doc/code.html#GOPATH
SnowCrash

4
Câu trả lời này quá lỗi thời và đang gây ra rất nhiều vấn đề do những thay đổi đối với Go và nó xuất hiện đầu tiên trên các tìm kiếm của Google cho "Cách cài đặt Go bằng Brew". Điều đó có nghĩa là rất nhiều người đang được hướng đến câu trả lời lỗi thời và không chính xác này. Bạn không còn phải đặt bất kỳ đường dẫn nào cho Go stackoverflow.com/a/21012349/3299397 và bạn chỉ đặt GOROOT nếu bạn đang phát triển ngôn ngữ thực tế Go (như khi bạn thực hiện các thay đổi đối với mã cơ bản của Go reddit.com/r/golang / comments / alrnuk /… )
Kyle Bridenstine

55

Theo kết hợp các câu trả lời ở trên, đây là những gì phù hợp với tôi OSX 10.12 (Sierra)Go v1.7.1sử dụng Homebrew:

Tôi đã thêm điều này từ câu trả lời của Kosh vào của tôi .zshrchoặc .bashrc:

# Go development
export GOPATH="${HOME}/.go"
export GOROOT="$(brew --prefix golang)/libexec"
export PATH="$PATH:${GOPATH}/bin:${GOROOT}/bin"

test -d "${GOPATH}" || mkdir "${GOPATH}"
test -d "${GOPATH}/src/github.com" || mkdir -p "${GOPATH}/src/github.com"

Sau đó, trong một cửa sổ / tab đầu cuối mới:

$ brew install go
==> Downloading https://homebrew.bintray.com/bottles/go-1.7.1.sierra.bottle.tar.gz
Already downloaded: /Users/nigel/Library/Caches/Homebrew/go-1.7.1.sierra.bottle.tar.gz
==> Pouring go-1.7.1.sierra.bottle.tar.gz
==> Caveats
As of go 1.2, a valid GOPATH is required to use the `go get` command:
  https://golang.org/doc/code.html#GOPATH

You may wish to add the GOROOT-based install location to your PATH:
  export PATH=$PATH:/usr/local/opt/go/libexec/bin
==> Summary
🍺  /usr/local/Cellar/go/1.7.1: 6,436 files, 250.6M

$ go get golang.org/x/tools/cmd/godoc

$ go get github.com/golang/lint/golint

$ go get golang.org/x/tour/gotour

$ gotour
2016/10/19 12:06:54 Serving content from /Users/nigel/.go/src/golang.org/x/tour
2016/10/19 12:06:54 A browser window should open. If not, please visit http://127.0.0.1:3999
2016/10/19 12:06:55 accepting connection from: 127.0.0.1:52958

Điều này làm việc tuyệt vời đối với tôi trên Sierra 10.12.5 với go 1.8.3. Cảm ơn!
thewoolleyman

Đã làm việc cho tôi trên Catalina 10.15.2 với go 1.13.5. Cảm ơn bạn!
Ross Zurowski

Tiếp tục xu hướng, đã làm việc cho tôi trên Mojave 10.14.6 với go 1.13.8. Tôi đã sửa đổi này nhẹ mặc dù: khi tôi xuất đường, tôi đặt những con đường đi tại phía trước của $PATHchứ không phải ở cuối. Vì vậy, dòng thứ ba của tệp rc của tôi trông như thế này:export PATH="${GOPATH}/bin:${GOROOT}/bin:$PATH"
romellem

1
Đây phải là câu trả lời được chấp nhận vì nó mô tả hoàn hảo cách sử dụng nó với homebrew!
muuvmuuv

Theo nhận xét GitHub này , go get github.com/golang/lint/golintcó một con đường mới:go get -u golang.org/x/lint/golint
schottsfired

23

Tôi nghĩ rằng tôi đã tìm ra giải pháp, tôi nên xuất:

export PATH=$PATH:/usr/local/Cellar/go/1.0.2/bin/

Thay vì

GOPATH=/usr/local/Cellar/go/1.0.2/src/pkg/code.google.com/p/
export GOPATH

Vì đó là nơi 'đi lấy' đặt các mã nhị phân (tôi đoán vậy). gotour đang hoạt động:

$ gotour
2012/10/11 18:35:50 Serving content from /usr/local/Cellar/go/1.0.2/src/pkg/code.google.com/p/go-tour
2012/10/11 18:35:50 Open your web browser and visit http://127.0.0.1:3999/ 

Btw, tôi dựa trên câu trả lời của tôi trên bài đăng này

http://code.google.com/p/go-tour/issues/detail?id=39 nơi họ nói về việc xuất:

/usr/local/Cellar/go/1.0.2/src/pkg/code.google.com/p/

Và trang bắt đầu từ go: http://golang.org/doc/install nơi họ nói rằng bạn phải xuất:

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

Tôi đã phải đặt thêm một thùng rác / vào cuối, vì có vẻ như bây giờ họ đã đặt các tệp thực thi go này vào một thư mục con. Tức là, lệnh cho đường dẫn của tôi là:export PATH=$PATH:/usr/local/Cellar/go/1.3.3/bin/bin/
Nate

Nếu bạn chưa cài đặt nó với brewnhưng kết thúc ở đây vì bạn không thể chạy go khi sử dụng zsh, bạn cần phải làm những thứ tương tự (xuất đường dẫn đến cài đặt go của bạn). Trong trường hợp của tôi, đó là: export PATH=$PATH:/usr/local/go/binNếu nó không hoạt động với bạn, thì bạn có thể đã cài đặt nó ở nơi khác.
andilabs

9

Tôi đặt cái này vào $ {HOME} /. Bash_profile của mình

export GOPATH="${HOME}/.go"
export GOROOT="$(brew --prefix golang)/libexec"
export PATH="$PATH:${GOPATH}/bin:${GOROOT}/bin"

test -d "${GOPATH}" || mkdir "${GOPATH}"
test -d "${GOPATH}/src/github.com" || mkdir -p "${GOPATH}/src/github.com"

dựa trên câu trả lời của golfadas nhưng được cập nhật để hoạt động với các phiên bản bia cũ và mới.


7

Tôi điều bạn nên đặt GOPATH trước bạn go get. Chà, ít nhất ở đây trong máy của tôi, nó hoạt động trơn tru.

Tôi đặt GOPATH thành một thư mục trong thư mục chính của mình.

Hi vọng điêu nay co ich!


7
Đây là lời khuyên đúng đắn. export GOPATH=$HOME/goexport PATH=$PATH:$GOPATH/binbao gồm tất cả những gì bạn cần. Thay thế $HOME/gocho con đường bạn chọn.
elithrar

5

Chỉ là bản cập nhật ở đây - Tôi đã gặp phải vấn đề tương tự này và các câu trả lời trước đó KHÔNG giúp được gì. Trên các phiên bản Go (~ 1.2.2) hiện tại do Homebrew cài đặt, bạn phải đặt GOROOT thành như sau:

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

Tôi hơi lạ lẫm với cấu trúc thư mục go hoặc những thay đổi đối với cài đặt go qua homebrew, vì vậy tôi thực sự không biết tại sao. Nhưng - nếu bạn thiếu những gì có vẻ giống như tất cả các gói cốt lõi, những điều trên sẽ được khắc phục.


Bạn chỉ có thể gỡ cài đặt phiên bản go hiện tại của mình và cài đặt phiên bản mới. Đó là những gì tôi đã làm và mọi thứ đều ổn đối với tôi.
Kent Bull

Với homebrew, bạn luôn nên sử dụng /usr/local/opt/làm cơ sở. Bằng cách này, bạn thậm chí không phải cập nhật biến khi có phiên bản mới.
withoutclass
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.