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
|
|
|
|
|
|
2025-10-30 23:54:40 +00:00
|
|
|
THISDIR="$(dirname "$(readlink -f "${0}")")"
|
|
|
|
|
# shellcheck disable=SC1091
|
|
|
|
|
. "${THISDIR}/.inc/common"
|
2025-10-29 16:55:38 +00:00
|
|
|
|
|
|
|
|
# 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
|
2025-10-30 23:54:40 +00:00
|
|
|
set -x
|
|
|
|
|
snap remove "${snap_name}" --revision="${snap_revision}"
|
|
|
|
|
set +x
|
2025-10-29 16:55:38 +00:00
|
|
|
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
|