首頁  >  問答  >  主體

beego - linux环境下golang安装第三方库的时候出错,求解决办法

使用如下方式安装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"

该怎么解决呢?

高洛峰高洛峰2765 天前696

全部回覆(4)我來回復

  • 阿神

    阿神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工具了。

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 13:12:57

    你這個環境配置是透過go env印出來的麼?還有你的golang是軟體包管理安裝的,還是下載安裝的,感覺你這個好像是由於用包管理安裝的原因,或者說機器上存在兩個golang引起的,當然這也是我的猜測

    更新:還有一個可能是你的環境變數設定在使用者目錄下的.bash.profile下,而不是/etc/profile下,只對目前使用者生效。當你sudo 時,就拿不到goroot,所以存取預設的goroot

    回覆
    0
  • PHP中文网

    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 看看結果

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-17 13:12:57

    我覺得,你可以把原始碼放在使用者目錄下面,然後在編譯,應該就不會有權限的問題了吧。
    或者 你可以直接 apt-get 或 yum 來安裝也是可以的。

    回覆
    0
  • 取消回覆