使用如下方式安装beego的时候出错
go get github.com/astaxie/beego
错误信息:
go install unicode/utf8: open /opt/go/pkg/linux_amd64/unicode/utf8.a: permission denied
go install unicode: open /opt/go/pkg/linux_amd64/unicode.a: permission denied
go install math: open /opt/go/pkg/linux_amd64/math.a: permission denied
go install sort: open /opt/go/pkg/linux_amd64/sort.a: permission denied
go install hash: open /opt/go/pkg/linux_amd64/hash.a: permission denied
go install unicode/utf16: open /opt/go/pkg/linux_amd64/unicode/utf16.a: permission denied
go install crypto/subtle: open /opt/go/pkg/linux_amd64/crypto/subtle.a: permission denied
go install container/list: open /opt/go/pkg/linux_amd64/container/list.a: permission denied
go install internal/syscall: open /opt/go/pkg/linux_amd64/internal/syscall.a: permission denied
go install time: open /opt/go/pkg/linux_amd64/time.a: permission denied
然后我在命令前加了一个sudo,然后提示
go: cannot find GOROOT directory: /usr/local/go
我的golang环境配置如下:
GOARCH="amd64"
GOBIN="/opt/go/bin"
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/buchenglei/workspace/golang"
GORACE=""
GOROOT="/opt/go"
GOTOOLDIR="/opt/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
该怎么解决呢?
阿神2017-04-17 13:12:57
參考上面的答案,我自己又摸索了一下,找到了一個比較完善的解決辦法,如下:
go install unicode/utf8: open /opt/go/pkg/linux_amd64/unicode/utf8.a: permission denied
出現這樣的錯誤原因是,當初我是直接將golang的壓縮包拷到了/opt目錄下,所有的源代碼都未經編譯,應該先切換到/opt/go/src目錄下,執行sudo ./make.bash腳本編譯,完成後在使用以下指令安裝beego就不會出錯了:
go get github.com/astaxie/beego
這樣的話,在執行以下指令安裝bee工具的時候會提示權限不夠:
go get github.com/beego/bee
go install github.com/beego/bee: open /opt/go/bin/bee: permission denied
對此我的解決方法是先切換到/opt目錄,執行以下指令,修改go資料夾的權限:
sudo chmod -R 777 go/
這樣就能正常安裝bee工具了。
ringa_lee2017-04-17 13:12:57
你這個環境配置是透過go env
印出來的麼?還有你的golang是軟體包管理安裝的,還是下載安裝的,感覺你這個好像是由於用包管理安裝的原因,或者說機器上存在兩個golang引起的,當然這也是我的猜測
更新:還有一個可能是你的環境變數設定在使用者目錄下的.bash.profile下,而不是/etc/profile下,只對目前使用者生效。當你sudo 時,就拿不到goroot,所以存取預設的goroot
PHP中文网2017-04-17 13:12:57
go get github.com/astaxie/beego
會先clone然後build , build的時候要透過 GOROOT 找到 go的安裝目錄,
go: cannot find GOROOT directory: /usr/local/go
這個錯誤是因為沒找到環境變量, 然後預設找 /usr/local/go 也沒找到,所以報錯,
解決方法: 先source
一下設定文件, 然後echo $GOROOT
看看結果
大家讲道理2017-04-17 13:12:57
我覺得,你可以把原始碼放在使用者目錄下面,然後在編譯,應該就不會有權限的問題了吧。
或者 你可以直接 apt-get 或 yum 來安裝也是可以的。