aboutsummaryrefslogtreecommitdiff
path: root/adu-upgrade
diff options
context:
space:
mode:
authorAdam Spragg <adam@spra.gg>2022-03-13 17:36:46 +0000
committerAdam Spragg <adam@spra.gg>2022-03-13 17:36:46 +0000
commitab3461e792a3b9a525a895bb0b3a70e55955efb6 (patch)
treed8abe25eab49ade25880946a40451f42249e5e97 /adu-upgrade
First (mostly) working version apt-desktop-upgrades
Diffstat (limited to 'adu-upgrade')
-rwxr-xr-xadu-upgrade45
1 files changed, 45 insertions, 0 deletions
diff --git a/adu-upgrade b/adu-upgrade
new file mode 100755
index 0000000..6566dee
--- /dev/null
+++ b/adu-upgrade
@@ -0,0 +1,45 @@
+#! /bin/sh
+
+# Copyright © 2022 Adam Spragg
+# SPDX-License-Identifier: LGPL-3.0-or-later
+#
+# This file is part of apt-desktop-upgrades
+#
+# apt-desktop-upgrades is free software: you can redistribute it and/or modify
+# under the terms of the GNU Lesser General Public License as published by the
+# Free Software Foundation, either version 3 of the License, or (at your option)
+# any later version.
+#
+# apt-desktop-upgrades is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+# for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License along
+# with apt-desktop-upgrades. If not, see <https://www.gnu.org/licenses/>.
+
+set -e
+
+PREFIX=/usr/local
+SBINDIR="${PREFIX}/sbin"
+
+UPDATE_SYMLINK="/system-update"
+UPDATE_TARGET="${SBINDIR}/adu-upgrade"
+
+if [ x"$(realpath -- "${UPDATE_SYMLINK}")" != x"${UPDATE_TARGET}" ]; then
+ exit 0
+fi
+
+# man:systemd.offline-updates(7):
+# "Make sure to remove the /system-update symlink as early as possible in
+# the update script to avoid reboot loops in case the update fails."
+rm -f -- "${UPDATE_SYMLINK}"
+
+# Do the update
+apt-get upgrade -y --no-download --ignore-missing
+
+# man:systemd.offline-updates(7):
+# "The update service should now do its job. [...] After completion
+# (regardless whether the update succeeded or failed) the machine must be
+# rebooted, for example by calling `systemctl reboot`."
+systemctl reboot