go version 命令显示更新到 1.8 后的旧版本号

Posted

技术标签:

【中文标题】go version 命令显示更新到 1.8 后的旧版本号【英文标题】:go version command shows old version number after update to 1.8 【发布时间】:2017-08-14 15:30:01 【问题描述】:

标题差不多。我为 OS X 下载/安装了 Go 1.8,但是当我去时

$ go version
go version go1.7.5 darwin/amd64

我的 .bashrc 如下所示

# some exports omitted

NPM_PACKAGES=/Users/<me>/.npm-packages
NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"

export PATH=~/Library/Python/3.4/bin:$PATH

export GOPATH=$HOME/Go
export PATH=$PATH:/usr/local/go/bin

我的工作区位于我的主文件夹中名为“Go”的目录中。

到目前为止我检查过的内容:

我检查了/usr/local/go/bin中的文件,VERSION文件状态为“1.8”,所以我知道安装成功了。

我还更新了终端会话,我什至重新启动了我的电脑以确保没有其他进程干扰它。

我使用 Webstorm 作为我的 IDE,它正确地将 1.8 识别为工作版本

这不是版本号本身的错误,因为我无法使用 1.8 版中引入的“NextResultSet()”sql 功能

我认为罪魁祸首可能是上面 .bashrc 文件中的错误配置,因为只有终端卡在旧版本上,但我无法弄清楚它有什么问题。

【问题讨论】:

执行 which go,你会看到你的旧 Go 所在的位置。删除它(以及对它的引用)。 哦,我明白了!我从 usr/local 中删除了 go 文件夹,并在 usr/local/bin 中删除了 go 文件,现在它可以正确显示了。谢谢! 【参考方案1】:

你显然安装了旧版本的 Go,否则你看不到 go version go1.7.5 darwin/amd64 作为 go version 的输出。

除了简单地扫描 PATHGOROOT 之外,IDE 可能具有更高级的检测 Go 安装的方法(这就是您的 IDE 发现并建议更新的 Go 1.8 的原因)。

执行which go,你会看到你的旧 Go 驻留在哪里。删除它(以及对它的引用)。

请注意,在您的 .bashrc 中,您将正确的 Go bin 文件夹附加到 PATHend

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

这意味着如果 PATH 包含旧 Go 安装的 bin 文件夹(很可能),则用于执行 go 命令。

【讨论】:

【参考方案2】:

我有同样的问题。即使通过golang官网下载在mac上安装golang 1.10后,mac终端仍然显示1.7版本。

通过自制软件更新 golang 解决了我的问题。

brew update
brew upgrade golang

【讨论】:

+1 - 我发现即使我最初通过他们网站上的 .pkg 安装了 golang,我的 /usr/local/bin/go 在运行 brew install dep 后指向 golang 的 brew 安装另一个项目。 这个效果最好。 Brew 应该知道你在哪里安装 go and go 二进制文件。【参考方案3】:

就我而言,我必须在重新安装后手动替换二进制文件。

cp /usr/local/go/bin/* /usr/local/bin/

【讨论】:

【参考方案4】:

TLDR 我已经解决了我的问题,将链接从安装文件夹移动到了/usr/bin/go


一步一步:

    查找二进制文件:

    $which go
    /usr/bin/go
    

    创建符号链接:

    ln -s /usr/local/go/bin/go go
    ln -s /usr/local/go/bin/godoc godoc
    ln -s /usr/local/go/bin/gofmt gofmt
    

    将这 3 个符号链接复制到 /usr/bin

【讨论】:

这对我有用。谢谢【参考方案5】:

我从https://golang.org/doc/install安装了最新版本 这将替换默认路径中的那个,即 mac 的 /usr/local/go/bin/go 并且不需要对 mac 上的 ~/.bashrc/ ~/.bash_profile 进行任何手动更改,除非从未设置过默认路径.

【讨论】:

以上是关于go version 命令显示更新到 1.8 后的旧版本号的主要内容,如果未能解决你的问题,请参考以下文章

Javac 版本不更新

GoLand调试报错:Version of Delve is too old for this version of Go...

docker 命令详解(三十五):version

mac下,改了java_home为jdk1.6,但是java -version版本还是1.8

AndroidLinux编译环境OpenJDK的版本修改到1.8

Java版本更新后的ClassNotFoundException