useful-scripts/bin/system-update

67 lines
1.6 KiB
Text
Raw Normal View History

2025-10-29 16:55:38 +00:00
#!/bin/sh
# name: system-update
# summary: - runs all relevant update commands for a machine
# - automatically detects and handles apt, snap and flatpak
# - fully POSIX shell compliant
# params: none
# check if a command is available
has_command() { # $command
command -v "$1" 1>/dev/null 2>/dev/null
}
# run self as root
if [ "$(id -u)" -ne 0 ]; then
if has_command sudo; then
# shellcheck disable=SC2068
exec sudo "$(readlink -f "$0")" $@
else
echo "This script is designed to be run as root!"
exit 1
fi
fi
# handle apt packages
if has_command apt-get; then
set -ex
# update package sources
apt-get --yes update
# upgrade installed packages
apt-get --yes dist-upgrade
# remove unused dependencies
apt-get --yes --purge autoremove
# remove leftover local archives
apt-get --yes autoclean
# remove leftover config files
apt-get --yes purge '?config-files'
set +ex
fi
# handle snaps
if has_command snap; then
set -ex
# upgrade installed snaps
snap refresh
# remove disabled snaps: https://askubuntu.com/a/1040131
set +x
env LANG=en_US.UTF-8 snap list --all \
| awk '/disabled/{print $1, $3}' \
| while read -r snap_name snap_revision; do
set -x
snap remove "${snap_name}" --revision="${snap_revision}"
set +x
done
set +ex
fi
# handle flatpaks
if has_command flatpak; then
set -ex
# upgrade installed flatpaks
flatpak update --noninteractive
# remove unused flatpaks
flatpak uninstall --noninteractive --unused
set +ex
fi