Last active
August 2, 2024 04:53
-
-
Save jniltinho/8758e15a9ef80a189fce to your computer and use it in GitHub Desktop.
Install Golang on Linux
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
## Install Golang Stable 64Bits on Linux (Debian|Ubuntu|OpenSUSE|CentOS) | |
## http://www.linuxpro.com.br/2015/06/golang-aula-1-instalacao-da-linguagem-no-linux.html | |
## Run as root (sudo su) | |
## Thank's @geosoft1 | @gwmoura | |
GO_URL="https://go.dev/dl" | |
GO_VERSION=$(curl -s 'https://go.dev/VERSION?m=text'|head -n1) | |
GO_FILE="$GO_VERSION.linux-amd64.tar.gz" | |
# Check if user has root privileges | |
if [[ $EUID -ne 0 ]]; then | |
echo "You must run the script as root or using sudo" | |
exit 1 | |
fi | |
GET_OS=$(cat /etc/os-release | head -n1 | cut -d'=' -f2 | awk '{ print tolower($1) }'| tr -d '"') | |
if [[ $GET_OS == 'debian' || $GET_OS == 'ubuntu' ]]; then | |
apt-get update && apt-get install -y git-core | |
fi | |
if [[ $GET_OS == 'opensuse' ]]; then | |
zypper in -y git-core | |
fi | |
if [[ $GET_OS == 'centos' || $GET_OS == 'amazon' ]]; then | |
yum -y install git-core | |
fi | |
cd /tmp | |
curl -LO --progress-bar ${GO_URL}/${GO_FILE} | |
tar -zxf ${GO_FILE} -C /usr/local | |
rm -f ${GO_FILE} | |
echo 'export PATH=$PATH:/usr/local/go/bin | |
export GOPATH=$HOME/GO | |
export PATH=$PATH:$GOPATH/bin' >> /etc/profile | |
### You do not need to run commands with root or sudo | |
source /etc/profile | |
## mkdir -p $HOME/GO | |
## Test if Golang is working | |
go version | |
### The output is this: | |
## go version go1.7 linux/amd64 |
@jniltinho, one suggestion:
GO_VERSION=${1:-"1.6.2"}
GO_FILE="go$GO_VERSION.linux-amd64.tar.gz"
With this change you can install a default value for Go ou another version
apt-get install wget git-core
needs to be
apt-get install -y wget git-core
no need for manual approval then
Thanks !!!
Replacing if [[ $GET_OS == 'centos' ]]; then
by if [[ $GET_OS == 'centos' || $GET_OS == 'amazon' ]]; then
would be great to use in AWS EC2.
Add some echo like Run command as non-root to init GOPATH: 'mkdir -p $HOME/GO/src'
in the end would give additional instruction for the final tweaks.
Great script thank you
Pedro
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Isn't
--no-check-certificate
a bad thing to do in a shared script? You are instructing your users to avoid validating the download source, so you are building a script that has a vulnerability for man-in-the-middle-attacks. One could tamper the Go compiled and users using your script can use a tampered go version to redistribute malicious code on ther programs. Just some toughts...