62 lines
1.1 KiB
Bash
Executable File
62 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
show_help() {
|
|
cat <<'EOF'
|
|
Usage: fullupgrade
|
|
|
|
Updates Arch Linux and performs cleanup:
|
|
- updates archlinux-keyring
|
|
- performs a full system synchronization
|
|
- removes orphaned packages
|
|
- cleans the pacman cache
|
|
|
|
Warning: this script modifies the system and runs without confirmation.
|
|
EOF
|
|
}
|
|
|
|
|
|
require_root() {
|
|
if [ "${EUID:-$(id -u)}" -ne 0 ]; then
|
|
echo "Error: this script must be run as root." >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
cleanup_orphans() {
|
|
local orphans=()
|
|
|
|
mapfile -t orphans < <(pacman -Qqtd)
|
|
|
|
if [ "${#orphans[@]}" -gt 0 ]; then
|
|
pacman -Rns --noconfirm "${orphans[@]}"
|
|
else
|
|
echo "No orphaned packages to remove."
|
|
fi
|
|
}
|
|
|
|
main() {
|
|
if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ]; then
|
|
show_help
|
|
exit 0
|
|
fi
|
|
|
|
require_root
|
|
|
|
echo "Updating archlinux-keyring..."
|
|
pacman -Sy --noconfirm archlinux-keyring
|
|
|
|
echo "Performing full system update..."
|
|
pacman -Syu --noconfirm
|
|
|
|
echo "Searching for orphaned packages..."
|
|
cleanup_orphans
|
|
|
|
echo "Cleaning pacman cache..."
|
|
pacman -Sc --noconfirm
|
|
|
|
echo "Update completed successfully."
|
|
}
|
|
|
|
main "$@"
|