-
-
Save jniltinho/8758e15a9ef80a189fce to your computer and use it in GitHub Desktop.
#!/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 |
remember to use wget --no-check-certificate
otherwise it will not download on some distributions.
@geosoft1 Thank's
Add my script
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...
@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
@geosoft1 Script Update