非 root 权限下可成功安装 beego,关键在于将 goroot、gopath、gobin 全部设为用户家目录下的可写路径,并启用 go111module=on 和 goproxy;使用 go install xxx@latest 替代已弃用的 go get,确保 bee 等可执行文件生成至 $gobin(如 $home/go-workspace/bin),全程无需 sudo。

非 root 权限下能装好 Beego,但必须绕过系统级路径写入,关键在 GOPATH 和 GOBIN 的本地化控制。
go 环境必须用本地目录初始化
系统级 /usr/local/go 或需要 sudo 的路径不可写时,不能依赖默认 GOROOT。你应该把 Go 二进制包解压到自己有写权限的路径(比如 $HOME/go),然后显式设置:
export GOROOT=$HOME/goexport GOPATH=$HOME/go-workspaceexport GOBIN=$GOPATH/binexport PATH=$PATH:$GOBIN
所有路径都落在用户家目录内,无需任何提权。执行 go version 和 go env GOPATH 确认输出是你指定的路径。
beego 和 bee 必须用 go install + 版本标识
旧式 go get 在 Go 1.20+ 已被弃用,且在无模块上下文时直接报错 go: go.mod file not found。非 root 下更不能依赖全局缓存,应强制走模块安装:
- 装 beego v2:
go install github.com/beego/beego/v2@latest - 装 bee v2:
go install github.com/beego/bee/v2@latest - 装 MySQL 驱动(仅需 import 时存在):
go get github.com/go-sql-driver/mysql
注意:这些命令会把可执行文件(如 bee)直接生成到 $GOBIN,也就是你可控的 $HOME/go-workspace/bin,不是系统 /usr/bin。
创建项目前务必初始化模块
在目标目录运行 bee new myapp 前,先确保当前目录已有 go.mod,否则 bee 本身会因依赖解析失败而卡住或报错。手动补上:
go mod init myapp
再运行 bee new myapp —— 它会复用已有模块,不再尝试写入全局 $GOPATH/src。如果仍提示找不到 bee,检查 which bee 是否指向你的 $GOBIN/bee,而不是系统 PATH 里某个无效软链。
常见失败点:GO111MODULE 和 GOPROXY 没开
非 root 用户常忽略这两项,导致依赖拉取失败或降级到 GOPATH 模式(而你可能没配 $GOPATH/src):
go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.cn,direct
这两条命令写入的是 $HOME/go/env(Go 自己维护的用户级配置),完全不碰系统文件。没有它们,go install 可能静默失败,或试图 clone 到只读的 $GOROOT/src 目录。
真正卡住的地方往往不是 beego 本身,而是 go toolchain 对模块路径和代理的默认假设。只要 GOPATH、GOBIN、GO111MODULE、GOPROXY 四者全部落在用户可写域内,并用 go install xxx@latest 替代 go get,整个流程就不需要一次 sudo。











