使用如下方式安装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"
该怎么解决呢?
Referring to the above answer, I explored it myself and found a more complete solution, as follows:
The reason for this error is that I copied the golang compressed package directly to the /opt directory. All source codes were not compiled. I should first switch to the /opt/go/src directory and execute sudo Compile the ./make.bash script. After completion, use the following command to install beego without error:
In this case, when you execute the following command to install the bee tool, you will be prompted with insufficient permissions:
My solution to this is to first switch to the /opt directory and execute the following command to modify the permissions of the go folder:
In this way, the bee tool can be installed normally.
Is your environment configuration printed out through
go env
? Also, is your golang installed through package management or downloaded and installed? It feels like you installed it through package management, or there are two golangs on the machine. Of course, this is also my guessUpdate: Another possibility is that your environment variables are set under .bash.profile in the user directory instead of /etc/profile, which only takes effect for the current user. When you sudo, you cannot get goroot, so access the default goroot
go get github.com/astaxie/beego
Will clone first and then build. When building, you need to find the go installation directory through GOROOT,go: cannot find GOROOT directory: /usr/local/go
This error is because the environment variable was not found, and then the default search /usr/local/go was not found, so an error was reported,
Solution: First
source
check the configuration file, thenecho $GOROOT
check the resultI think if you can put the source code in the user directory and compile it, there should be no permission issues.
Or you can install it directly using apt-get or yum.