#!/bin/bash # Universal updater by Andrew Schott andrew@schotty.com # Will detect and update via various packaging formats for distros I currently use. # Globals # edit as needed to set colors and soforth # presuming echo thus tput is chosen here as default\ # tput text formatting # bold=bold dim=dimmed # rev=reverse bel=bell sound # smul=underline on rmul=underline off # setaf=foreground setab=background # sgr0=clear # # Colors # 0 Black 1 Red 2 Green 3 Yellow # 4 Blue 5 Magenta 6 Cyan 7 White # # Default is # * green for a true finding # * yellow for a false finding # * clear at the end to resume normal output for said command's output CMD_NOTIFY="tput rev bold setaf 7 setab 0" CMD_TRUE="tput rev bold setaf 2 setab 0" CMD_FALSE="tput rev bold setaf 1 setab 7" CMD_CLEAR="tput sgr0" echo $($CMD_NOTIFY)"Looking for native package managers"$($CMD_CLEAR) # apt -- Debian and derivatives if `which apt &> /dev/null 2>&1` then echo $($CMD_TRUE)"Found apt. Updating: ($(which apt))"$($CMD_CLEAR) sudo apt udate -y sudo apt upgrade -y else echo $($CMD_FALSE)"apt not found/needed"$($CMD_CLEAR) fi # dnf -- RHEL 8+, Fedora, Openmandriva, and derivatives if `which dnf &> /dev/null 2>&1` then echo $($CMD_TRUE)"Found dnf. Updating: ($(which dnf))"$($CMD_CLEAR) sudo dnf --refresh --skip-broken --nobest -y update else echo $($CMD_FALSE)"dnf not found/needed"$($CMD_CLEAR) fi # pacman -- arch & arch derivatives if `which pacman &> /dev/null 2>&1` then echo $($CMD_TRUE)"Found pacman. Updating: ($(which pacman))"$($CMD_CLEAR) sudo pacman -Syu else echo $($CMD_FALSE)"pacman not found/needed"$($CMD_CLEAR) fi # yum -- RHEL 7 > (Ignored if dnf is present) if `which yum &> /dev/null 2>&1` && ! `which dnf &> /dev/null 2>&1` then echo $($CMD_TRUE)"Found yum. Updating: ($(which yum))"$($CMD_CLEAR) sudo yum --refresh --skip-broken --nobest -y update else echo $($CMD_FALSE)"yum not found/needed"$($CMD_CLEAR) fi # urpmi -- Mageia if `which urpmi &> /dev/null 2>&1` && ! `which dnf &> /dev/null 2>&1` then echo $($CMD_TRUE)"Found urpmi. Updating: ($(which urpmi))"$($CMD_CLEAR) sudo urpmi --auto-update -y else echo $($CMD_FALSE)"urpmi not found/needed"$($CMD_CLEAR) fi # zypper -- SuSE products if `which zypper &> /dev/null 2>&1` then echo $($CMD_TRUE)"Found zypper. Updating: ($(which zypper))"$($CMD_CLEAR) sudo zypper in -y else echo $($CMD_FALSE)"zypper not found/needed"$($CMD_CLEAR) fi echo $($CMD_NOTIFY)"Looking for sandboxed package managers"$($CMD_CLEAR) # flatpak if `which flatpak &> /dev/null 2>&1` then echo $($CMD_TRUE)"Found flatpak. Updating: ($(which flatpak))"$($CMD_CLEAR) flatpak update --user -y sudo flatpak update -y else echo $($CMD_FALSE)"flatpak not found/needed"$($CMD_CLEAR) fi # snap if `which snap &> /dev/null 2>&1` then echo $($CMD_TRUE)"Found snap. Updating: ($(which snap))"$($CMD_CLEAR) sudo snap refresh -y else echo $($CMD_FALSE)"snap not found/needed"$($CMD_CLEAR) fi