Skip to content

Instantly share code, notes, and snippets.

@Coronel-B
Last active June 14, 2021 18:30
Show Gist options
  • Save Coronel-B/8d3da8ce21b80ffab1e0784fe4fdc5e4 to your computer and use it in GitHub Desktop.
Save Coronel-B/8d3da8ce21b80ffab1e0784fe4fdc5e4 to your computer and use it in GitHub Desktop.
Initialize Ubuntu 20.04 LTS with the installation of dependencies and apps
#!/bin/bash
: '
Initialize Ubuntu 20.04 LTS with the installation of dependencies and apps
USING:
$ cd; sudo apt-get install git; sudo rm -Rf 8d3*4; git clone https://gist.github.com/8d3da8ce21b80ffab1e0784fe4fdc5e4.git; cd 8d3*4; sudo chmod +x init_Ubuntu_20.04.sh; ./init_Ubuntu_20.04.sh
PRECONDITION: Run the script without sudo
'
echo "
Some downloads will be requested in the installation process:
Android Studio: https://developer.android.com/studio/archive
"
: '
Ask for installation
Using:
$ command='echo Hello World'
$ askInstallation DataGrip "$command"
Source: https://stackoverflow.com/a/64309449/5279996
'
declare -a resultInstalled
declare -a resultNotInstalled
function askInstallation() {
echo $'\n'"----- $1:"$'\n'
continue=false
while [ "$continue" == false ]
do
read -p "Do you want to install? (y/n) " choice
case "$choice" in
y|Y )
# Lamda of installation
eval $2
echo "Success: $1"
resultInstalled+=[$1]
continue=true
;;
n|N )
echo "$1 not installed"
resultNotInstalled+=[$1]
continue=true
;;
* ) echo "invalid"
;;
esac
done
}
downloadsDirEs="/Descargas"
downloadsDirEn="/Downloads"
# TODO: Should be generic
if [ -d ~/Downloads ] # For file "if [ -f /home/rama/file ]"
then
downloadsDir="$downloadsDirEn"
else
downloadsDir="$downloadsDirEs"
fi
# --------------
# General Dependencies
cd && mkdir -p Temp && cd Temp
echo $'\n----- Update && Upgrade of SO:\n'
sudo apt update && sudo apt upgrade
echo $'\n----- DPKG:\n' && sudo apt-get install dpkg
echo $'\n----- UNZIP:\n' && sudo apt-get install unzip
sudo apt update && sudo apt upgrade
# -----------
echo $'\n----- Sublime Text:\n'
sudo snap install sublime-text --classic
echo $'\n----- Gimp:\n'
sudo snap install gimp
echo $'\n----- Network | Speedtest-cli:\n'
sudo apt-get install speedtest-cli
# ------------
commandPostman='sudo snap install postman'
askInstallation Postman "$commandPostman"
commandDataGrip='sudo snap install datagrip --classic'
askInstallation DataGrip "$commandDataGrip"
commandPostgreSQL='sudo apt-get install postgresql postgresql-contrib postgresql-client'
askInstallation PostgreSQL "$commandPostgreSQL"
# ------------
echo $'\n----- Telegram:\n'
cd ~/Temp
wget https://telegram.org/dl/desktop/linux
tar xf linux
sudo mv ~/Temp/Telegram /usr/local
# ------------
echo $'\n----- JetBrains Toolbox:\n'
echo $'First, download file from direct link: https://www.jetbrains.com/es-es/toolbox-app/download/download-thanks.html\n'
continue=false
while [ "$continue" == false ]
do
read -p "The download of the .tar.gz was done in ~/Downloads? (y/n) " choice
case "$choice" in
y|Y )
mv ~/Downloads/jetbrains-toolbox-*.tar.gz ~/Temp
tar -xvzf ~/Temp/jetbrains-toolbox-*.tar.gz
sudo mv ~/Temp/jetbrains-toolbox-*/ /usr/local
echo "Success: JetBrains Toolbox"
continue=true
;;
n|N )
JetbrainsToolbox=": not installed"
continue=true
;;
* ) echo "invalid"
;;
esac
done
# ------------
echo $'\n----- Android Studio:\n'
: '
Install or update Android Studio. And delete old version
Using:
$ cd /usr/local/android-studio/bin
$ ./studio.sh
PRECONDITION: Run the script without sudo
OBS: The downloaded file will be deleted
'
echo $'First, download file from direct link: https://developer.android.com/studio/archive\n'
continue=false
while [ "$continue" == false ]
do
read -p "The download of the .tar.gz was done in ~/Downloads? (y/n) " choice
read -p "Introduce the build type of IDE [stable, beta or canary]: " buildType
case "$choice" in
y|Y )
mkdir -p ~/Temp && cd ~/Temp
downloadedFileName="android-studio-*-linux.tar.gz"
mv ~/Downloads/$downloadedFileName ~/Temp
tar -xvzf ~/Temp/$downloadedFileName
sudo rm $downloadedFileName
# Remove old version if exists
[ -e /usr/local/android-studio-$buildType ] && sudo rm -R /usr/local/android-studio-$buildType
sudo mv android-studio/ /usr/local/android-studio-$buildType
echo "Success: Android Studio"
continue=true
;;
n|N )
AndroidStudio=": not installed"
continue=true
;;
* ) echo "invalid"
;;
esac
done
# ------------
echo $'\n----- IntelliJ IDEA Ultimate:\n'
echo $'First, download file from direct link: https://www.jetbrains.com/es-es/idea/download/download-thanks.html?platform=linux\n'
continue=false
while [ "$continue" == false ]
do
read -p "The download of the .tar.gz was done in ~/Downloads? (y/n) " choice
case "$choice" in
y|Y )
mv ~/Downloads/ideaIU-*.tar.gz ~/Temp
tar -xvzf ~/Temp/ideaIU-*.tar.gz
sudo mv idea-IU-*/ /usr/local
echo "Success: IntelliJ IDEA Ultimate"
continue=true
;;
n|N )
IdeaIU=": not installed"
continue=true
;;
* ) echo "invalid"
;;
esac
done
# ------------
echo $'\n----- Slack:\n'
# Con SnapCraft genero problemas, instalar en .deb
echo $'First, download file from direct link: https://slack.com/intl/es-ar/downloads/instructions/ubuntu\n'
continue=false
while [ "$continue" == false ]
do
read -p "The download of the .deb was done in ~/Downloads? (y/n) " choice
case "$choice" in
y|Y )
mkdir -p ~/Temp && cd ~/Temp
downloadedFileName="slack-desktop-*-amd64.deb"
mv ~/Downloads/$downloadedFileName ~/Temp
sudo dpkg -i slack-desktop-*
echo "Success: Slack"
continue=true
;;
n|N )
slack=": not installed"
continue=true
;;
* ) echo "invalid"
;;
esac
done
# ------------
echo $'\n----- Apache Tomcat:\n'
: '
Precondition: Run as sudo
Source:
. linuxize.com/post/how-to-install-tomcat-9-on-ubuntu-18-04
. https://stackoverflow.com/a/62381751/5279996
'
echo $'First, download file from "Source Code Distribution" in direct link: https://tomcat.apache.org/download-80.cgi\n'
continue=false
while [ "$continue" == false ]
do
read -p "The download of the .tar.gz was done in ~/Downloads? (y/n) " choice
case "$choice" in
y|Y )
mkdir -p ~/Temp && cd ~/Temp
downloadedFileName="apache-tomcat-*.tar.gz"
mv ~/Downloads/$downloadedFileName ~/Temp
tar -xvzf ~/Temp/$downloadedFileName
sudo mkdir /opt/tomcat
sudo mkdir /opt/tomcat/latest
tomcatDir="apache-tomcat-*"
sudo mv ~/Temp/$tomcatDir /opt/tomcat
# To have more control over Tomcat versions and updates, create a symbolic link
# For upgrade, simply unpack the newer version and change the symlink
sudo ln -s /opt/tomcat/$tomcatDir /opt/tomcat/latest
sudo chmod 755 -R /opt/tomcat
# Create a systemd Unit File
# “m” or “M” for MB, or “g” or “G” for GB
cat <<EOF >/etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat 9 servlet container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"
Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms1G -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl status tomcat
# Enable the Tomcat service to be automatically started at boot time
sudo systemctl enable tomcat
echo "Success: Apache Tomcat"
continue=true
;;
n|N )
ApacheTomcat=": not installed"
continue=true
;;
* ) echo "invalid"
;;
esac
done
# ------------
echo $'\n----- Gofogle Chrome Stable:\n'
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
# ------------
echo $'\n----- Open JDK:\n'
sudo apt-get install openjdk-8-jdk
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk
echo $JAVA_HOME
# ------------
# HARDWARE:
echo $'\n----- lm sensors:\n'
: '
Monitorices the temp
Using:
$ sudo sensors
$ psensor # launch UI
'
sudo apt-get install lm-sensors
sudo sensors-detect # configure
sudo apt-get install psensor
# ------------
# Terminal
echo $'\n----- TLDR: helper\n'
sudo apt-get install tldr
# using: $ tldr ls
echo $'\n----- FZF: selector with filter\n'
sudo apt-get install fzf
# using: $ ls | fzf
# ------------
echo $'\n----- Zoom:\n'
wget https://zoom.us/client/latest/zoom_amd64.deb
sudo apt install ./zoom_amd64.deb
# ------------
echo $'\n----- Git:\n'
sudo apt-get install git
echo "
Installed:
Gimp
Git
Google Chrome Stable
lm sensors
oh-my-zsh
Open JDK
Postman
Speedtest-cli
Sublime Text
Telegram
TLDR
Zoom
$resultInstalled
Not installed:
$resultNotInstalled
Jetbrains:
Android Studio Canary $AndroidStudio
ApacheTomcat $ApacheTomcat
Intellij IDEA Ultimate $IdeaIU
Jetbrains Toolbox $JetbrainsToolbox
"
: '
\n----- Oh My Zsh:\n
Precondition: Install last because script execution ends
Postcondition: Log out from SO is required
Observation: Dont remember config plugins.
Source: github.com/robbyrussell/oh-my-zsh
'
echo $'\n----- Oh My Zsh:\n'
sudo apt install zsh
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
chsh -s $(which zsh)
sudo apt-get install tig
echo "Log out from SO is required by Oh My Zsh"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment