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安装在了您的用户目录下,所以,您可以用root用户重复执行相同的echo命令,或者按照文档说明进行配置:下载和安装 - Go编程语言

您可以通过在您的 $HOME/.profile/etc/profile(用于系统级安装)文件中添加以下行来实现:

export PATH=$PATH:/usr/local/go/bin

我是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
回到顶部