# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2024-03-01 17:11+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: TH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SYSTEMD\\&.OFFLINE-UPDATES" msgstr "" #. type: TH #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "systemd 255" msgstr "" #. type: TH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "systemd.offline-updates" msgstr "" #. ----------------------------------------------------------------- #. * MAIN CONTENT STARTS HERE * #. ----------------------------------------------------------------- #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NAME" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "systemd.offline-updates - Implementation of offline updates in systemd" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "IMPLEMENTING OFFLINE SYSTEM UPDATES" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "This man page describes how to implement \"offline\" system updates with " "systemd\\&. By \"offline\" OS updates we mean package installations and " "updates that are run with the system booted into a special system update " "mode, in order to avoid problems related to conflicts of libraries and " "services that are currently running with those on disk\\&. This document is " "inspired by this \\m[blue]B\\m[]\\&\\s-2\\u[1]\\d\\s+2\\&." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "The logic:" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The package manager prepares system updates by downloading all (\\&.rpm or " "\\&.deb or whatever) packages to update off-line in a special directory /var/" "lib/system-update (or another directory of the package/upgrade " "manager\\*(Aqs choice)\\&." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "When the user OK\\*(Aqed the update, the symlink /system-update or /etc/" "system-update is created that points to /var/lib/system-update (or wherever " "the directory with the upgrade files is located) and the system is " "rebooted\\&. This symlink is in the root directory, since we need to check " "for it very early at boot, at a time where /var/ is not available yet\\&." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Very early in the new boot B(8) checks " "whether /system-update or /etc/system-update exists\\&. If so, it " "(temporarily and for this boot only) redirects (i\\&.e\\&. symlinks) " "default\\&.target to system-update\\&.target, a special target that pulls in " "the base system (i\\&.e\\&. sysinit\\&.target, so that all file systems are " "mounted but little else) and the system update units\\&." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The system now continues to boot into default\\&.target, and thus into " "system-update\\&.target\\&. This target pulls in all system update units\\&. " "Only one service should perform an update (see the next point), and all the " "other ones should exit cleanly with a \"success\" return code and without " "doing anything\\&. Update services should be ordered after sysinit\\&.target " "so that the update starts after all file systems have been mounted\\&." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "As the first step, an update service should check if the /system-update or /" "etc/system-update symlink points to the location used by that update " "service\\&. In case it does not exist or points to a different location, the " "service must exit without error\\&. It is possible for multiple update " "services to be installed, and for multiple update services to be launched in " "parallel, and only the one that corresponds to the tool that I the " "symlink before reboot should perform any actions\\&. It is unsafe to run " "multiple updates in parallel\\&." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The update service should now do its job\\&. If applicable and possible, it " "should create a file system snapshot, then install all packages\\&. After " "completion (regardless whether the update succeeded or failed) the machine " "must be rebooted, for example by calling B\\&. In " "addition, on failure the script should revert to the old file system " "snapshot (without the symlink)\\&." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The update scripts should exit only after the update is finished\\&. It is " "expected that the service which performs the update will cause the machine " "to reboot after it is done\\&. If the system-update\\&.target is " "successfully reached, i\\&.e\\&. all update services have run, and the /" "system-update or /etc/system-update symlink still exists, it will be removed " "and the machine rebooted as a safety measure\\&." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "After a reboot, now that the /system-update and /etc/system-update symlink " "is gone, the generator won\\*(Aqt redirect default\\&.target anymore and the " "system now boots into the default target again\\&." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "RECOMMENDATIONS" msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "To make things a bit more robust we recommend hooking the update script into " "system-update\\&.target via a \\&.wants/ symlink in the distribution " "package, rather than depending on B in the postinst " "scriptlets of your package\\&. More specifically, for your update script " "create a \\&.service file, without [Install] section, and then add a symlink " "like /usr/lib/systemd/system/system-update\\&.target\\&.wants/foobar\\&." "service → \\&.\\&./foobar\\&.service to your package\\&." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Make sure to remove the /system-update and /etc/system-update symlinks as " "early as possible in the update script to avoid reboot loops in case the " "update fails\\&." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Use I in the service file for your update script to " "ensure that a reboot is automatically triggered if the update fails\\&. " "I makes sure that the specified unit is activated if your " "script exits uncleanly (by non-zero error code, or signal/coredump)\\&. If " "your script succeeds you should trigger the reboot in your own code, for " "example by invoking logind\\*(Aqs B call or calling B\\&. See B(5) for details about the logind D-" "Bus API\\&." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The update service should declare I, " "I, I, I, I and explicitly pull " "in any other services it requires\\&." msgstr "" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed msgid "" "It may be desirable to always run an auxiliary unit when booting into " "offline-updates mode, which itself does not install updates\\&. To do this " "create a \\&.service file with I and " "I and add a symlink to that file under /" "usr/lib/systemd/system-update\\&.target\\&.wants \\&." msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "SEE ALSO" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B(1), B(7), B(8), B(8)" msgstr "" #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "NOTES" msgstr "" #. type: IP #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid " 1." msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "GNOME design whiteboard" msgstr "" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "\\%https://wiki.gnome.org/Design/OS/SoftwareUpdates" msgstr "" #. type: TH #: debian-bookworm opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "systemd 254" msgstr "" #. type: Plain text #: debian-bookworm msgid "" "To make things a bit more robust we recommend hooking the update script into " "system-update\\&.target via a \\&.wants/ symlink in the distribution " "package, rather than depending on B in the postinst " "scriptlets of your package\\&. More specifically, for your update script " "create a \\&.service file, without [Install] section, and then add a symlink " "like /lib/systemd/system/system-update\\&.target\\&.wants/foobar\\&.service " "→ \\&.\\&./foobar\\&.service to your package\\&." msgstr "" #. type: Plain text #: debian-bookworm msgid "" "It may be desirable to always run an auxiliary unit when booting into " "offline-updates mode, which itself does not install updates\\&. To do this " "create a \\&.service file with I and " "I and add a symlink to that file under /" "lib/systemd/system-update\\&.target\\&.wants \\&." msgstr ""