2013-07-26 27 views
25

Tuy nhiên, khi tôi đã đặt. Tôi thậm chí đã tạo ra thư mục con mà tôi không biết nếu necesary: ​​

$ echo $GOPATH && ls -r $GOPATH 
/home/cyrus/.go 
src pkg bin 

$ echo $GOROOT && ls $GOROOT 
/usr/local/go 
api AUTHORS bin CONTRIBUTORS doc favicon.ico include lib LICENSE misc PATENTS pkg README robots.txt src test VERSION 

Tại sao tôi vẫn nhận được lỗi khi tôi làm:

$ go get code.google.com/p/go-tour/gotour                            
package code.google.com/p/go-tour/gotour: cannot download, $GOPATH not set. For more details see: go help gopath 

Trả lời

27

Nếu bạn đặt một biến như thế này:

GOPATH=$HOME/go 

Nó sẽ không được xuất sang bất kỳ quy trình con nào. Nó chỉ có sẵn cho quá trình đó. Nếu bạn muốn xuất nó để trình con, sử dụng export:

export GOPATH 

Bạn cũng có thể kết hợp việc chuyển nhượng và xuất khẩu:

export GOPATH=$HOME/go 
+5

Hơn nữa, bạn có thể xác nhận cài đặt Bắt đầu bằng 'go env' - nếu' GOPATH' không được đặt/không chính xác, nó sẽ hiển thị. – elithrar

+7

Thực hiện tất cả điều này và vẫn không hoạt động khi sử dụng 'go get golang.org/x/tools/cmd/godoc',' đi env' thậm chí in ra môi trường và nó trông hoàn hảo. –

+0

Tôi chỉ muốn cài đặt Gogs, vì Gitlab không hoạt động trên máy chủ của tôi và tôi đang đấu tranh arround một giờ nữa vì lỗi cấu hình .... không thể tin được –

1

My $ GOROOT thư mục đã được tạo ra với owner: rootgroup: wheel thay vì có tôi là chủ sở hữu và quản trị viên làm nhóm. Tôi đoán rằng tôi đã sử dụng sudo khi không nên có (hoặc một số công cụ đã làm cho tôi). Vì vậy, go get không thể ghi các gói vào $ GOROOT và do đó các lỗi $GOPATH not setpermission denied.

Bằng cách sử dụng chownchgrp trên $ GOROOT của tôi (với -R để nhận thư mục con) 'go get ...' đã hoạt động. Trong trường hợp của tôi, VS Code giờ đã có thể cài đặt các thành phần Go mà tôi đã làm sau đó.

+1

'Tôi đã sử dụng sudo khi tôi không nên lưu tôi –

0

Khi bạn chạy env, bạn sẽ có thể xem liệu GOPATH của bạn đã được đặt chưa. Trong trường hợp của tôi, lệnh này giải quyết nó khi tôi chạy nó trên thiết bị đầu cuối của mình.

export GOPATH=/usr/local/bin 
0

tôi đã thiết lập GOPATH và hiển thị đúng với lệnh go env. tôi đã phải cấp quyền chính xác cho thư mục đi bằng cách sử dụng chmod và cài đặt gb bởi go get github.com/constabulary/gb/....

0

Đầu tiên hãy thực hiện 'go env' và kiểm tra đường dẫn GOROOT. Theo đó đặt GOPATH. Trong trường hợp của tôi, nó phải đặt GOPATH thành/usr/lib/go. Trước đó tôi đã thử nó với/usr/share/go và/usr/bin/go nhưng nó không hoạt động.

Các vấn đề liên quan