compile: version “go1.19“ does not match go tool version “go1.18.1“

news/2024/12/12 22:25:20/

在这里插入图片描述

**

1 安装了新版本的go后 为什么go version 还是旧版本?

**

如果你已经按照上述步骤安装了新版本的 Go,但 go version 命令仍然显示旧版本,可能是因为你的环境变量设置不正确或未正确生效。你可以尝试以下方法来解决问题:

重新加载配置文件:运行以下命令以重新加载你的 shell 配置文件,使更改生效:

source ~/.bash_profile   # 或者使用相应的配置文件,如 ~/.bashrc 或 ~/.zshrc

确保在终端中运行该命令后,你的配置文件中的新 Go 版本的环境变量设置已正确加载。

检查环境变量设置:运行以下命令来检查当前的 Go 环境变量设置:

go env

确认输出中的 GOROOTPATH 是否指向你安装的新版本的 Go。

检查路径优先级:在终端中运行以下命令,查看系统在终端中搜索可执行文件时的路径优先级:

echo $PATH

确认新版本的 Go 所在路径在 $PATH 中的位置是否在旧版本之前。如果不在正确的位置,你可以编辑你的 shell 配置文件,将新版本的 Go 路径添加到 $PATH 变量的前面。

例如,在 ~/.bash_profile~/.bashrc 中添加以下行:

````shell
export PATH=/path/to/new/go/bin:$PATH

/path/to/new/go 替换为你安装的新版本 Go 的路径。

检查安装目录:确保你安装的新版本的 Go 在正确的目录下。默认情况下,新版本的 Go 应该被安装到 /usr/local/go 目录下。

如果以上步骤都没有解决问题,可能还有其他因素导致旧版本的 Go 仍然被使用。你可以尝试重新启动终端或计算机,以确保环境变量和配置的正确加载。如果问题仍然存在,建议卸载旧版本的 Go,并重新按照正确的步骤安装新版本的 Go。

请确保在更改或卸载任何软件之前备份重要的文件,并谨慎操作。


如果你已经确认 GOROOT 和 PATH 环境变量都正确指向了新版本的 Go,但 go version 仍然显示旧版本,可能是因为系统中存在多个 go 可执行文件,而旧版本的 go 在路径中的优先级更高。

你可以尝试以下方法来解决这个问题:

指定完整路径运行 go:在终端中,使用新版本 Go 的完整路径运行 go 命令。例如,假设新版本 Go 的路径为 /usr/local/go/bin/go,则在终端中运行以下命令:

/usr/local/go/bin/go version

如果显示的是新版本的 Go,说明新版本已正确安装并可用。这表明问题可能是由于旧版本的 go 仍在系统中的其他路径中。

搜索其他 go 可执行文件:在终端中运行以下命令,搜索系统中的所有 go 可执行文件:

which -a go

这将列出所有系统中找到的 go 可执行文件的路径。检查输出中是否有其他版本的 go,并注意它们在路径中的位置。

删除旧版本的 go:如果你确定找到了旧版本的 go,可以考虑将其删除或重命名,以便新版本的 go 在路径中优先使用。

注意:在执行此操作之前,请确保备份旧版本的 go 或确认你不再需要它。

检查系统的 PATH 顺序:检查系统中的 PATH 环境变量的顺序,确保新版本的 Go 所在路径在旧版本之前。你可以编辑你的 shell 配置文件,将新版本的 Go 路径添加到 $PATH 变量的前面。

例如,在 ~/.bash_profile 或 ~/.bashrc 中添加以下行:

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

如果你已经在正确的位置设置了新版本的 Go 路径,可以尝试重新加载配置文件,然后再次验证 go version
如果以上方法仍然没有解决问题,可能需要进行更进一步的调查和排查。你可以尝试在 Go 官方论坛或其他相关社区寻求帮助,或者尝试重新安装新版本的 Go。

**

2 homebrew 卸载go

**

如果你使用 Homebrew 安装了 Go,并希望卸载它,可以按照以下步骤进行操作:

打开终端:打开终端应用程序。

检查 Go 安装:运行以下命令,检查是否已通过 Homebrew 安装了 Go:

brew list

如果在列表中看到与 Go 相关的包(如 gogolang),则表示 Go 已通过 Homebrew 安装。

卸载 Go:运行以下命令,使用 Homebrew 卸载 Go:

brew uninstall go

这将卸载 Go 及其关联的包和文件。检查残留文件:运行以下命令,检查是否还有残留的 Go 文件:shell
复制
which go

如果输出显示 /usr/local/bin/go 或其他 Go 可执行文件的路径,表示仍然存在残留文件。

删除残留文件:如果发现有残留文件,请使用以下命令删除它们(确保谨慎操作):

sudo rm -rf /usr/local/go

这将删除 Go 安装目录。验证卸载:运行以下命令验证 Go 是否已成功卸载:
go version

如果提示找不到 go 命令或显示其他错误信息,则表示 Go 已成功卸载。
通过按照上述步骤,你可以使用 Homebrew 卸载 Go。请注意,在卸载 Go 之前,确保备份你的重要文件和项目,并谨慎操作以避免意外删除其他文件。

3 homebrew 中的go version优先级 为什么比 系统中的go高?

在使用 Homebrew 安装 Go 时,Homebrew 会将 Go 安装到 Homebrew 的管理路径下,例如 /usr/local/Cellar/go 目录。当你在终端中运行 go version 命令时,系统会按照特定的搜索顺序查找可执行文件,而这个搜索顺序决定了哪个路径中的 go 可执行文件被优先使用。

默认情况下,终端会按照 $PATH 环境变量中的路径顺序搜索可执行文件。而在 Homebrew 安装的软件中,Homebrew 会将其管理的软件路径添加到 $PATH 的前面。因此,当你使用 Homebrew 安装 Go 后,Homebrew 的路径会在系统路径之前,从而使 Homebrew 中安装的 Go 版本优先生效。

这样设计的目的是为了避免与系统自带的软件冲突,并允许用户在不影响系统的情况下独立管理软件版本。Homebrew 通过将软件安装到自己的目录中,并调整 $PATH 环境变量的顺序,确保在终端中优先使用 Homebrew 中安装的软件版本。

如果你希望系统中的 Go 版本优先生效,可以考虑手动调整 $PATH 环境变量的顺序,将系统路径放在 Homebrew 路径之前。这样,在终端中运行 go version 时,系统中的 go 可执行文件将被优先使用。

请注意,更改 $PATH 环境变量可能会影响其他软件的运行,因此在进行任何更改之前,请确保理解和谨慎操作。

本来:
在这里插入图片描述
后来

/opt/homebrew/bin  on stable *1  brew uninstall go            ok  at 13:39:10 
Uninstalling /opt/homebrew/Cellar/go/1.18.1... (11,964 files, 595.3MB)/opt/homebrew/bin  on stable *1  which go                     ok  at 13:39:41 
/usr/local/bin/go/opt/homebrew/bin  on stable *1  which -a go                  ok  at 13:39:54 
/usr/local/bin/go
/usr/local/go/bin/go/opt/homebrew/bin  on stable *1  go version                   ok  at 13:39:59 
go version go1.19 darwin/arm64

http://www.ppmy.cn/news/1212073.html

相关文章

【多媒体技术与实践】学习路线

1:绪论(多媒体技术概述) ppt1:多媒体概述 (chap1 overview of multimedia) 2:多媒体计算机系统(多媒体计算软件系统和硬件系统) ppt1:多媒体个人计算机系统 …

vue-入门介绍

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容,初识vue入门到项目实战详解 目录 一.Vue介绍 二.初识Vue 工具安装 创建项目 目录结构介绍 项…

计算机毕设 基于机器学习的文本聚类 - 可用于舆情分析

文章目录 0 简介1 项目介绍1.1 提取文本特征1.2 聚类算法选择 2 代码实现2.1 中文文本预处理2.2 特征提取2.2.1 Tf-idf2.2.2 word2vec 2.3 聚类算法2.3.1 k-means 2.3.2 DBSCAN2.4 实现效果2.4.1 tf-idf k-means聚类结果2.4.2 word2vec k-means 聚类结果 最后 0 简介 今天学…

threejs(11)-shader着色器打造漫天飞舞孔明灯

src/main/main.js import * as THREE from "three";import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"; import gsap from "gsap"; // 动画库 import vertexShader from "../shaders/flylight/vertex.glsl"…

网页推理游戏

目录 python challenge (0) (1) (2) The Riddle (1) (2) (3) (4) Nazo (1)…

Android修行手册-POI操作Excel实现超链接并且变为蓝色

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…

vColorPicker——基于 Vue 的颜色选择器插件

文章目录 前言样例特点 一、使用步骤?1. 安装2.引入3.在项目中使用 vcolorpicker 二、选项三、事件 前言 vColorPicker——官网 vColorPicker——GitHub 样例 vColorPicker是基于 Vue 的一款颜色选择器插件,仿照Angular的color-picker插件制作 特点 …

Zookeeper篇---第五篇

系列文章目录 文章目录 系列文章目录一、Zookeeper为什么要这么设计?二、你知道Zookeeper中有哪些角色?三、你熟悉Zookeeper节点ZNode和相关属性吗?一、Zookeeper为什么要这么设计? ZooKeeper设计的目的是提供高性能、高可用、顺序一致性的分布式协调服务、保证数据最终一…