golang版本管理工具gvm

摘要:
-ne0];thenecho-e“$source_line”˃˃“$1”fi}check_existing_go(){if[“$GOROOT”=“”];thenifwhichgo˃/dev/null;thenGOROOT=$(goenv|grepGOROOT|cut-d”=“-f2)elseecho“未检测到现有Goversions”returnfifiecho“创建配置文件forexistinginstallofGoat$GOROT”mkdir-p“$GVM_DEST/$GVM_NAME/环境”&˃/dev/null||display_error“失败创建环境目录“mkdir-p”$GVM_DEST/$GVM_NAME/pkgsets/system/global“&˃/dev/null||display_error“Failedtocreatenewpackageset”mkdir-p“$GVM_DEST/$GVM_NAME/gos/system”&˃/dev/null| | display_error“FailedtocreatenewGofolder”cat˂$GVM_DEST/$GVM_NAME/environments/system#自动生成的文件。不要编辑!导出GVM_ROOT;GVM_ROOT=“$GVM_DEST/$GVM_NAME”导出GVM_go_名称;gvm_go_name=“system”导出gvm_pkgset_name;gvm_ pkgset_ name=“global”导出GOROOT;GOROOT=“$GOROOT”导出GOPATH;GOPATH=“$GVM_DEST/$GVM_NAME/pkgsets/system/global”导出路径;PATH=“$GVM_DEST/$GVM_NAME/pkgsets/system/global/bin:$GOROOT/bin:$GVM_ROOT/bin:$PATH”EOF}BRANCH=${1:-master}GVM_DEST=${2:-$HOME}GVM_NAME=“GVM”SRC_REPO=${SRC_REPO:-https://github.com/moovweb/gvm.git}[“$GVM_DEST”=“$HOME”]&&GVM_NAME=“.GVM”[-d“$GVM_DEST/$GVM_NAME”]&&display_error“已安装!通过运行rm rf$GVM_DEST/$VVM_NAME”[-d“$GVM _DEST“]|mkdir-p”$GVM-DEST“˃/dev/null2˃&1|display_ error“无法创建$GVM_DEST”[-z“$(whichgit)”]&display_serror“无法找到itdebian/ubuntu:apt-getinstallgitredhat/centos:yuminstallgitarchlinux:pacman Sgitmac:brewinstallgit“#Isgvm安装程序正在从原始存储库调用?#如果是这样的话,请跳过克隆和源代码!

golang版本管理工具gvm第1张

一、参考

github: gvm

二、安装gvm

下载安装脚本 install_gvm.sh

bash install_gvm.sh


# 运行安装脚本

➜  goEnv ./install_gvm.sh

Cloning from https://github.com/moovweb/gvm.git to /Users/yz/.gvm
Created profile for existing install of Go at "/usr/local/go"
Installed GVM v1.0.22

Please restart your terminal session or to get started right away run
 `source /Users/yz/.gvm/scripts/gvm`

# 更新环境变量

➜  goEnv source /Users/yz/.gvm/scripts/gvm

# 查看gvm版本信息
➜  goEnv gvm version
Go Version Manager v1.0.22 installed at /Users/yz/.gvm

安装脚本内容如下:

#!/usr/bin/env bash

display_error() {
	tput sgr0
	tput setaf 1
	echo "ERROR: $1"
	tput sgr0
	exit 1
}

update_profile() {
	[ -f "$1" ] || return 1

	grep -F "$source_line" "$1" > /dev/null 2>&1
	if [ $? -ne 0 ]; then
		echo -e "
$source_line" >> "$1"
	fi
}

check_existing_go() {

	if [ "$GOROOT" = "" ]; then
		if which go > /dev/null; then
			GOROOT=$(go env | grep GOROOT | cut -d"=" -f2)
		else
			echo "No existing Go versions detected"
			return
		fi
	fi
	echo "Created profile for existing install of Go at $GOROOT"
	mkdir -p "$GVM_DEST/$GVM_NAME/environments" &> /dev/null || display_error "Failed to create environment directory"
	mkdir -p "$GVM_DEST/$GVM_NAME/pkgsets/system/global" &> /dev/null || display_error "Failed to create new package set"
	mkdir -p "$GVM_DEST/$GVM_NAME/gos/system" &> /dev/null || display_error "Failed to create new Go folder"
	cat << EOF > $GVM_DEST/$GVM_NAME/environments/system
# Automatically generated file. DO NOT EDIT!
export GVM_ROOT; GVM_ROOT="$GVM_DEST/$GVM_NAME"
export gvm_go_name; gvm_go_name="system"
export gvm_pkgset_name; gvm_pkgset_name="global"
export GOROOT; GOROOT="$GOROOT"
export GOPATH; GOPATH="$GVM_DEST/$GVM_NAME/pkgsets/system/global"
export PATH; PATH="$GVM_DEST/$GVM_NAME/pkgsets/system/global/bin:$GOROOT/bin:$GVM_ROOT/bin:$PATH"
EOF
}

BRANCH=${1:-master}
GVM_DEST=${2:-$HOME}
GVM_NAME="gvm"
SRC_REPO=${SRC_REPO:-https://github.com/moovweb/gvm.git}

[ "$GVM_DEST" = "$HOME" ] && GVM_NAME=".gvm"

[ -d "$GVM_DEST/$GVM_NAME" ] && display_error 
    "Already installed! Remove old installation by running

    rm -rf $GVM_DEST/$GVM_NAME"

[ -d "$GVM_DEST" ] || mkdir -p "$GVM_DEST" > /dev/null 2>&1 || display_error "Failed to create $GVM_DEST"
[ -z "$(which git)" ] && display_error "Could not find git

  debian/ubuntu: apt-get install git
  redhat/centos: yum install git
  archlinux: pacman -S git
  mac:   brew install git
"

# Is gvm-installer being called from the origin repo?
# If so, skip the clone and source locally!
# This prevents CI from breaking on non-merge commits.

GIT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)

if [[ -z "$GIT_ROOT" || "$(basename "$GIT_ROOT")" != "gvm" ]]
then
  echo "Cloning from $SRC_REPO to $GVM_DEST/$GVM_NAME"

  git clone --quiet "$SRC_REPO" "$GVM_DEST/$GVM_NAME" 2> /dev/null ||
	  display_error "Failed to clone from $SRC_REPO into $GVM_DEST/$GVM_NAME"
else
  if [[ $GVM_DEST == *"$GIT_ROOT"* ]]
  then
    ln -s "$GIT_ROOT" "$GVM_DEST"
  else
    cp -r "$GIT_ROOT" "$GVM_DEST/$GVM_NAME"
  fi
fi

# GVM_DEST may be a non-relative path
# i.e: gvm-installer master foo
pushd . > /dev/null

cd "$GVM_DEST/$GVM_NAME" && git checkout --quiet "$BRANCH" 2> /dev/null ||	display_error "Failed to checkout $BRANCH branch"

popd > /dev/null

[ -z "$GVM_NO_GIT_BAK" ] && mv "$GVM_DEST/$GVM_NAME/.git" "$GVM_DEST/$GVM_NAME/git.bak"

source_line="[[ -s "${GVM_DEST}/$GVM_NAME/scripts/gvm" ]] && source "${GVM_DEST}/$GVM_NAME/scripts/gvm""
source_file="${GVM_DEST}/$GVM_NAME/scripts/gvm"

if [ -z "$GVM_NO_UPDATE_PROFILE" ] ; then
  if [ -n "$ZSH_NAME" ]; then
    update_profile "$HOME/.zshrc"
  elif [ "$(uname)" == "Linux" ]; then
    update_profile "$HOME/.bashrc" || update_profile "$HOME/.bash_profile"
  elif [ "$(uname)" == "Darwin" ]; then
    update_profile "$HOME/.profile" || update_profile "$HOME/.bash_profile"
  fi
fi

if [ -z "$GVM_NO_UPDATE_PROFILE" ] && [ "$?" != "0" ]; then
	echo "Unable to locate profile settings file(Something like $HOME/.bashrc or $HOME/.bash_profile)"
	echo
	echo " You will have to manually add the following line:"
	echo
	echo "  $source_line"
	echo
fi

echo "export GVM_ROOT=$GVM_DEST/$GVM_NAME" > "$GVM_DEST/$GVM_NAME/scripts/gvm"
echo ". $GVM_ROOT/scripts/gvm-default" >> "$GVM_DEST/$GVM_NAME/scripts/gvm"
check_existing_go
[[ -s "$GVM_DEST/$GVM_NAME/scripts/gvm" ]] && source "$GVM_DEST/$GVM_NAME/scripts/gvm"
echo "Installed GVM v${GVM_VERSION}"
echo
echo "Please restart your terminal session or to get started right away run"
echo " \`source ${source_file}\`"
echo


三、安装go

golang版本管理工具gvm第2张

3.1 查看已经安装的go

gvm list

3.2 查看可以创建的go版本列表

gvm listall

3.3 创建特定版本的go

gvm install go1.15.5

3.4 使用特定版本的go

gvm use go1.15.5

但是只能在当前的终端中生效,重新打开新的终端,无法适用

3.5 设置系统的特定版本go

gvm use go1.15.5 --default

新的终端,自动适用新的版本

免责声明:文章转载自《golang版本管理工具gvm》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇R语言-Paste函数UEditor编辑器上传图片开发流程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux 安装Python3.6

1、安装依赖 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel 2、下载安装包(可以Windows下载https:...

作业一 统计软件简介与数据操作

       SPSS(Statistical Product and Service Solutions),"统计产品与服务解决方案"软件。最初软件全称为"社会科学统计软件包"(SolutionsStatistical Package for the Social Sciences),但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2...

Scala语言简介和开发环境配置

Scala语言的简介和开发环境搭建   Scala是一门结合了面向对象特征和函数式编程特征的语言,它是一个创新的编程语言产品。Scala可以做脚本(就像shell脚本一样),可以做服务端编程语言,可以写数据处理程序等,在很多方面都适用,但是目前主要应用的领域有:编写Web服务器端程序、编写基于Spark的数据处理程序。能做的事情很多,可是被采用的领域不多...

用PHP编写Android应用程序 狼人:

Google的开源Android移动操作系统正在席卷全球智能手机市场,和苹果不一样,它对那些想将应用程序提交到iPhone App Store的开发人员有着严格的指导方针和要求,Google的Android平台非常开放,甚至还可以用PHP编写Android应用程序,Irontech创建了一个运行在Android上的PHP移植程序,结合Android的脚本层...

在Python中运行gmssl

目录 在Python中运行gmssl Python版本 gmssl介绍 安装gmssl包 基于gmssl的SM2、3、4算法实现 SM2算法 SM3算法 SM4算法 在Python中运行gmssl Python版本 Python 3.8.1 gmssl介绍 ​ GmSSL是一个开源的加密包的python实现,支持SM2/SM3/SM4等...

npm 安装依赖包提示找不到python环境和Could not load the Visual C++ component “VCBuild.exe”

1 提示找不到python环境变量:             一般错误信息中会提示找不到python2,需要安装python2,并且配置python环境变量。然后设置npm常用的python版本,用以下命令npm config set python python2.7  或者 npm install --python=python2.7 2 如果安装完之后...