当前位置 博文首页 > linux中用shell快速安装配置Go语言的开发环境

    linux中用shell快速安装配置Go语言的开发环境

    作者:痕无落 时间:2021-05-10 18:28

    介绍

    go1.5+版本提供编译好的安装包,我们只需要解压到相应的目录,并添加一些环境变量的配置即可。

    Go语言的安装步骤

         下载安装包go1.7.linux-amd64.tar.gz

         解压文件到指定目录: tar -zxf go1.7.linux-amd64.tar.gz

         设置环境变量:GOROOT, GOPATH, PATH

    既然我们可以列出这些步骤,那么便可以将整个过程自动化。

    下面是安装脚本

    #!/bin/bash
    #Upgrade go version to 1.7
    #wget https://storage.googleapis.com/golang/go1.7.linux-amd64.tar.gz go1.7.tar.gz
    
    function info() {
     echo -e "\033[1;34m$1 \033[0m"
    }
    
    function warn() {
     echo -e "\033[0;33m$1 \033[0m"
    }
    
    function error() {
     echo -e "\033[0;31m$1 \033[0m"
    }
    
    function usage() {
     info "Upgrade or install golang..."
     info "USAGE:"
     info " ./upgrade.sh tar_file gopath"
     info " tar_file specify where is the tar file of go binary file"
     info " gopath specify where is the go workspace, include src, bin, pkg folder"
    }
    
    function createGoPath() {
     if [ ! -d $1 ];
     then
     mkdir -p $1
     fi
     if [ ! -d "$1/src" ];
     then
     mkdir "$1/src"
     fi
     if [ ! -d "$1/bin" ];
     then
     mkdir "$1/bin"
     fi
     if [ ! -d "$1/pkg" ];
     then
     mkdir "$1/pkg"
     fi
    }
    
    if [ -z $1 ];
    then
     usage
     exit 1
    fi
    
    file=$1
    if [ ! -f $file ];
    then
     error "${file} not exist..."
     exit 1
    fi
    
    unzipPath="`pwd`/tmp_unzip_path/"
    info $unzipPath
    
    if [ ! -d $unzipPath ];
    then
     info "not exist"
     mkdir $unzipPath
    fi
    
    tar -zxf $file -C $unzipPath
    
    goroot=$GOROOT
    if [ ! -n $GOROOT ];
    then
     warn "Use default go root /usr/local/go"
     goroot="/usr/local/go"
    fi
    
    gopath=$2
    info "Create go workspace, include src,bin,pkg folder..."
    if [ -z $2 ];
     then
     user=`whoami`
     gopath="/home/$user/workspace/golang"
     warn "Use $gopath as golang workspace..."
     if [ ! -d $gopath ];
     then
     mkdir -p $gopath
     fi
    fi
    
    createGoPath $gopath
    
    info "Copy go unzip files to $goroot"
    sudo cp -r "$unzipPath/go" $goroot
    rm -rf $unzipPath
    
    #etcProfile="/home/user/Desktop/etc"
    
    etcProfile="/etc/profile"
    exportGoroot="export GOROOT=$goroot"
    if [ ! -z $GOROOT ];
    then
     cat $etcProfile | sed 's/^export.GOROOT.*//' | sudo tee $etcProfile > /dev/null
    fi
    echo $exportGoroot | sudo tee -a $etcProfile
    
    exportGopath="export GOROOT=$gopath"
    if [ ! -z $GOPATH ];
    then
     cat $etcProfile | sed 's/^export.GOPATH.*//' | sudo tee $etcProfile > /dev/null
    fi
    echo "export GOPATH=$gopath" | sudo tee -a $etcProfile
    
    echo 'export PATH=$GOROOT/bin:$GOPATH/bin:$PATH' | sudo tee -a $etcProfile
    
    # ## Replace multiple empty lines with one empty line
    cat $etcProfile -s | sudo tee $etcProfile > /dev/null
    
    info "To make configuration take effect, will reboot, pls enter[y/n]"
    read -p "[y/n]" isReboot
    if [ $isReboot = "y" ];
    then
     sudo reboot
    fi

    讲一讲脚本做的事情吧

         1、脚本要求输入编译好的安装包,这里本来是可以做成直接下载的, 但是考虑到大多数人是无法连接到golang的官网的,因此放弃了这一步。

         2、解压文件到指定的目录, 默认为/usr/local/go , 也可以通过运行时指定

         3、在GOPATH下面创建3个文件夹: src, bin, pkg, GOPATH可以运行时指定,默认为/home/{user}/workspace/golang

         4、设置环境变量: $GOPATH, $GOROOT

         5、重启服务,使对/etc/profile的修改生效

    这里有一些主意的点是,有可能系统配置过golang的环境变量, 那么需要先删除这些配置,然后重新写入。

    总结

    js