-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathsysup.sh
More file actions
106 lines (102 loc) · 4.99 KB
/
Copy pathsysup.sh
File metadata and controls
106 lines (102 loc) · 4.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/bin/bash
# name: sysup
# description: sysup_desc
# icon: topgrade.svg
# revert: no
# compat: !ostree, !ublue
source "$SCRIPT_DIR/libs/linuxtoys.lib"
_lang_
[ ! -n "$UPD_SERVICE" ] && sudo_rq
needs_reboot() {
if is_fedora || is_rhel; then
if ! { [ "$UPD_SERVICE" = "1" ] && dnf needs-restarting -r; } || sudo dnf needs-restarting -r 2>&1; then
return 1
else
return 0
fi
elif is_debian || is_ubuntu; then
[ -f /var/run/reboot-required ]
elif is_arch || is_cachy || is_manjaro; then
return 0 # no way of reliably checking for this on Arch-based distros, leave that to the user but always recommend it anyway
elif is_suse; then
sudo zypper needs-rebooting
elif is_solus; then
return 0 # no way of reliably checking for this on Solus, leave that to the user but always recommend it anyway
fi
}
release_upgrade() {
[ "$UPD_SERVICE" = "1" ] && return 1 # don't check for release upgrades if we're running as a background service
if is_ubuntu; then
{ do-release-upgrade -c && return 0; } || return 1
elif is_fedora; then
pkg_install jq
fedora_version=$(curl -s https://fedoraproject.org/releases.json | jq -r '.[] | select(.version | test("Beta") | not) | .version' | sort -rn | head -1)
if [[ -z "$fedora_version" ]]; then
return 1 # Failed to fetch version info
fi
{ [ "$VERSION_ID" != "$fedora_version" ] && return 0; } || return 1
fi
}
offer_release_upgrade() {
zenity --question --text="$sysup_available" --title="Release Upgrade" || return 1
}
if [ "$UPD_SERVICE" = "1" ] && [ "$USER" != "root" ]; then
flatpak uninstall --unused --delete-data -y
flatpak update -y
echo "$sysup_completed" && exit 0
fi
echo "$sysup_starting"
if is_fedora || is_rhel; then
{ { [ "$UPD_SERVICE" = "1" ] && dnf autoremove -y && dnf clean all && dnf -y makecache --refresh; } || \
{ sudo dnf autoremove -y && sudo dnf clean all && sudo dnf -y makecache --refresh; }; } || die "Failed to remove orphaned packages"
{ [ "$UPD_SERVICE" = "1" ] && dnf --refresh upgrade -y --setopt=throttle=2M; } || sudo dnf --refresh upgrade -y || fatal "Failed to upgrade packages"
is_fedora && { release_upgrade &&
if offer_release_upgrade; then
sudo dnf system-upgrade download --releasever=$fedora_version -y || fatal "Failed to download Fedora $fedora_version upgrade"
sudo dnf system-upgrade reboot || fatal "Failed to reboot for Fedora $fedora_version upgrade"
fi
}
elif is_debian || is_ubuntu; then
interrupted_apt_guard
if { [ "$UPD_SERVICE" = "1" ] && apt-get -s autoremove 2>/dev/null | grep -q '^Remv '; } || sudo apt-get -s autoremove 2>/dev/null | grep -q '^Remv '; then
{ [ "$UPD_SERVICE" = "1" ] && apt-get autoremove -y; } || sudo apt-get autoremove -y || fatal "Failed to remove orphaned packages"
fi
{ [ "$UPD_SERVICE" = "1" ] && apt-get upgrade -y --allow-downgrades -o Acquire::http::Dl-Limit=2048 -o Acquire::https::Dl-Limit=2048; } || sudo apt-get upgrade -y --allow-downgrades || fatal "Failed to upgrade packages"
if is_ubuntu && [[ "$ID" == "ubuntu" ]] && release_upgrade; then
if offer_release_upgrade; then
sudo do-release-upgrade || fatal "Failed to start Ubuntu release upgrade"
fi
fi
elif { is_arch || is_cachy; } && ! is_manjaro; then
pacman_lock_guard
orphaned_packages=$(pacman -Qdtq 2>/dev/null || true)
if [[ -n "$orphaned_packages" ]]; then
sudo pacman -Rns $orphaned_packages || fatal "Failed to remove orphaned packages"
fi
sudo pacman -Syu --noconfirm || fatal "Failed to upgrade packages"
elif is_manjaro; then
pamac remove --orphans --no-confirm || fatal "Failed to remove orphaned packages"
pamac update --no-confirm || fatal "Failed to upgrade packages"
elif is_suse; then
orphaned_packages=$(zypper packages --unneeded | awk '/^i/{print $5}')
if [[ -n "$orphaned_packages" ]]; then
sudo zypper rm --clean-deps $orphaned_packages -y || fatal "Failed to remove orphaned packages"
fi
sudo zypper dup -y || fatal "Failed to upgrade packages"
elif is_solus; then
{ [ "$UPD_SERVICE" = "1" ] && eopkg rmo -y; } || sudo eopkg rmo -y || fatal "Failed to remove orphaned packages"
{ [ "$UPD_SERVICE" = "1" ] && eopkg up -y; } || sudo eopkg up -y || fatal "Failed to upgrade packages"
fi
if command -v flatpak >/dev/null 2>&1; then
{ [ "$UPD_SERVICE" = "1" ] && flatpak uninstall --system --unused --delete-data -y; } || flatpak uninstall --unused --delete-data -y || warn "Failed to remove orphaned flatpak packages"
{ [ "$UPD_SERVICE" = "1" ] && flatpak update --system -y; } || flatpak update -y || warn "Failed to upgrade flatpak packages"
fi
if needs_reboot; then
if [ "$UPD_SERVICE" = "1" ]; then
echo "$sysup_rebootreq"
else
zeninf "$sysup_rebootreq"
fi
else
{ [ "$UPD_SERVICE" = "1" ] && echo "$sysup_completed"; } || zeninf "$sysup_completed"
fi