beego - linux环境下golang安装第三方库的时候出错,求解决办法
高洛峰
高洛峰 2017-04-17 13:10:57
0
4
651

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

该怎么解决呢?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆 (4)
阿神

參考上面的答案,我自己又摸索了一下,找到了一個比較完善的解決辦法,如下:

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

    左手右手慢动作

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

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

      Ty80

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

        大家讲道理

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

          最新下載
          更多>
          網站特效
          網站源碼
          網站素材
          前端模板
          關於我們 免責聲明 Sitemap
          PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!