A pure Bash command-line menu tool for installing Ubuntu/Debian software fast
Prononounced mew-er because the g moves in silence like lasagna
- Contents
GMUAR is a pure Bash command-line menu tool program to install a host of common software on Ubuntu/Debian. This helps get software onto fresh Ubuntu installs fast.
I got tired of having to manually sudo apt install
a bunch of software everytime I launched a fresh Ubuntu installation. I wanted the ability to pick and choose what kind of software I would like installed through a terminal menu. That's all
Click to expand
```bash
├── customization
│ └── zsh.sh
├── desktop
│ ├── atom.sh
│ ├── chrome.sh
│ ├── qbittorrent.sh
│ ├── slack.sh
│ ├── spotify.sh
│ ├── sublime.sh
│ ├── vlc.sh
│ └── wavebox.sh
├── development
│ ├── anaconda.sh
│ ├── awscli.sh
│ ├── dvm.sh
│ ├── genymotion.sh
│ ├── go.sh
│ ├── gvm.sh
│ ├── heroku.sh
│ ├── node_n.sh
│ ├── pgadmin4.sh
│ ├── postman.sh
│ ├── rvm.sh
│ ├── vscode.sh
│ ├── workbench.sh
│ └── yarn.sh
├── setup
│ ├── cmake.sh
│ ├── curl.sh
│ ├── git.sh
│ ├── make.sh
│ └── pip3.sh
└── utilities
├── docker.sh
├── fuck.sh
├── htop.sh
├── mlocate.sh
├── nettools.sh
└── qv2ray.sh
```
Clone this repository
git clone https://github.com/emmanuelnk/GetMeUpAndRunning.git && cd GetMeUpAndRunning
Give ./gmuar.sh
permissions to launch
chmod +x ./gmuar.sh
Run it!
./gmaur.sh
It's pretty straight-forward. When you run ./gmuar.sh
a menu prompt will open showing you what programs are already installed and what you can install.
Simply follow the instructions.
- ▣ selected -- will be installed
- □ unselected -- will not be installed
If a program is already installed, it will have the tag [INSTALLED]
beside its name e.g.
You can run ./gmuar -p
to pre-select all the software that you don't have installed. By default, GMUAR will not pre-select uninstalled software in the menu.
- Simply create a new
.sh
file under the relevant category. - You can also create new categories, just remember to add them in the
categories_arr
in thedescriptions.sh
file - The order of insatallation of categories is determined by the order of categories in
categories_arr
.
If I want to add gimp
to GMUAR. I consider it a category desktop
software:
touch categories/desktop/gimp.sh
Open the file and add:
#!/bin/bash
# name of the package in apt (like in `sudo apt install gimp`)
package_name="gimp"
# name of this file i.e. gimp.sh without the extension
script_name="gimp"
# installation function should be script_name.ub()
gimp.ub() {
# print what you are installing
echo -e "\n\ninstalling Gimp...\n"
# add the commands that would correctly install Gimp
sudo add-apt-repository ppa:otto-kesselgulasch/gimp -y
sudo apt-get update -y
sudo apt-get install gimp -y
}
# installation check function should be script_name.is_installed()
gimp.is_installed() {
# add how you would check if Gimp is install
# if you installed it with apt or the executable is added to PATH (e.g. snap packages)
# then this is enough
check_is_apt_installed $1 $2
}
package_name
andscript_name
MUST be definedpackage_name
is usually the name the package has inapt
script_name
is the name of the.sh
file you just created
If you want to create a new category called business
, create a folder called business under categories folder:
mkdir -p categories/business
- Then add
business
to thecategories_arr
in thedescriptions.sh
file
#!/bin/bash
# arrays
declare -A gmu_packagenames # apt package names of programs
declare -A gmu_descriptions # descriptions of programs
declare -A gmu_categories # category of routine
declare -a categories_arr=("setup" "utilities" "desktop" "development" "customization" "business")
for directory in "${!categories_arr[@]}"; do
for file in "categories/${categories_arr[$directory]}"/*; do
. "$file"
gmu_packagenames[$script_name]=$package_name
gmu_descriptions[$script_name]=$script_name
gmu_categories[$script_name]="${categories_arr[$directory]}"
done
done
- Then you can continue to add your software files in this new category
- If you do not install a program using
apt
you can usecheck_installed_by_files_exist
to check for certain files or binaries:postman.is_installed() { # will check for the file "$HOME/src/Postman/Postman" to see that Postman exists check_installed_by_files_exist $1 $2 "$HOME/src/Postman/Postman" }
- The
check_installed_by_files_exist
function can take multiple args as well as wildcards:your_program.is_installed() { $FILE_1="$HOME/src/your_program/your_program_executable_1" $FILE_2="$HOME/src/your_program/your_program*.config" $FILE_3="$HOME/src/your_program/your_program*.AppImage" check_installed_by_files_exist $1 $2 $FILE_1 $FILE_2 $FILE_3 }
- To get a feel of how this script works, you can clone this repository and run:
docker build -t gmuar/gmuar .
sudo docker run -it gmuar/gmuar:latest /bin/bash
- Go to the Demo
- Run the following commands
cd ~/GetMeUpAndRunningDemo/GetMeUpAndRunning
./gmuar.sh
- If you would like me to add a certain software, just open up an issue
- If you would like to make a contribution, just fork the repo and make a pull request
- All kinds of contributions, optimizations and suggestions etc are welcomed
- These scripts have only been tested on Ubuntu 20.04
- It is your responsibility to check the install scripts and ensure whats to be installed is compatible with your system.