Golang在root模式下运行失败的原因及解决方法
Golang在root模式下运行失败的原因及解决方法 我已经在我的Linux系统上安装了Go 1.9.2,使用的命令如下: (由于某些原因,我必须使用这个旧版本)
sudo tar -C /usr/local -xzf go1.9.2.linux-amd64.tar.gz
echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.profile
source ~/.profile
go version
go version go1.9.2 linux/amd64
但是当我以root身份运行时,出现了以下错误:
root@mininet-vm:/home/mininet# go version
Command 'go' not found, but can be installed with:
apt install golang-go # version 2:1.13~1ubuntu2, or
apt install gccgo-go # version 2:1.13~1ubuntu2
我该如何解决这个问题?
更多关于Golang在root模式下运行失败的原因及解决方法的实战教程也可以访问 https://www.itying.com/category-94-b0.html
5 回复
非常感谢您的帮助,echo 命令解决了我的问题。
更多关于Golang在root模式下运行失败的原因及解决方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
你是否也将 /usr/local/go/bin 添加到了 root 用户的 PATH 环境变量中?
我是Go语言的新手,所以我认为它是默认设置的。如果不是,请告诉我怎么做?
mininet@mininet-vm:~$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/mininet/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build264562574=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
在root用户下找不到Go命令是因为环境变量配置只对当前用户生效。root用户的~/.profile文件与普通用户不同,需要单独配置。
解决方法是为root用户添加Go的环境变量:
# 方法1:直接为root用户配置环境变量
sudo su
echo "export PATH=\$PATH:/usr/local/go/bin" >> /root/.profile
source /root/.profile
go version
或者使用更通用的方法,将Go路径添加到系统级配置:
# 方法2:在/etc/profile.d/中创建全局配置
sudo tee /etc/profile.d/go.sh << 'EOF'
export PATH=$PATH:/usr/local/go/bin
EOF
# 立即生效
source /etc/profile.d/go.sh
验证配置是否生效:
# 切换到root用户测试
sudo -i
go version
# 应该输出: go version go1.9.2 linux/amd64
如果仍然有问题,检查root用户的shell配置:
# 检查root用户使用的shell
sudo su
echo $SHELL
# 根据不同的shell加载对应的配置文件
# 如果是bash,确保~/.bashrc中也有配置
echo "export PATH=\$PATH:/usr/local/go/bin" >> /root/.bashrc
source /root/.bashrc
也可以创建符号链接到系统路径:
# 方法3:创建符号链接
sudo ln -s /usr/local/go/bin/go /usr/local/bin/go
sudo ln -s /usr/local/go/bin/gofmt /usr/local/bin/gofmt
# 这样任何用户都可以直接使用
sudo go version


