Hello community,
here is the log from the commit of package transactional-update for openSUSE:Factory checked in at 2018-05-16 11:41:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/transactional-update (Old)
and /work/SRC/openSUSE:Factory/.transactional-update.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "transactional-update"
Wed May 16 11:41:58 2018 rev:29 rq:607522 version:2.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/transactional-update/transactional-update.changes 2018-05-03 12:33:12.342520493 +0200
+++ /work/SRC/openSUSE:Factory/.transactional-update.new/transactional-update.changes 2018-05-16 11:43:50.359394645 +0200
@@ -1,0 +2,13 @@
+Mon May 14 16:16:08 UTC 2018 - iforster@suse.com
+
+- Update to version 2.3
+ - Reformat help text / synopsis
+ - More detailled output (use --quiet for less output)
+ - Log all error messages into log file
+ - Avoid potential lock file race condition on self update
+ - Accept package names with whitespace
+ - Don't wait for user input during self-update
+ - Fix broken error message output when creating new snapshot without reboot
+ - Fix erroneous mounting of stale grub mounts
+
+-------------------------------------------------------------------
Old:
----
transactional-update-2.2.tar.bz2
New:
----
transactional-update-2.3.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ transactional-update.spec ++++++
--- /var/tmp/diff_new_pack.fm9lBL/_old 2018-05-16 11:43:50.991371641 +0200
+++ /var/tmp/diff_new_pack.fm9lBL/_new 2018-05-16 11:43:50.995371496 +0200
@@ -17,7 +17,7 @@
Name: transactional-update
-Version: 2.2
+Version: 2.3
Release: 0
Summary: Transactional Updates with btrfs and snapshots
License: GPL-2.0-or-later
++++++ transactional-update-2.2.tar.bz2 -> transactional-update-2.3.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/transactional-update-2.2/NEWS new/transactional-update-2.3/NEWS
--- old/transactional-update-2.2/NEWS 2018-05-02 10:30:45.000000000 +0200
+++ new/transactional-update-2.3/NEWS 2018-05-14 18:12:56.000000000 +0200
@@ -2,6 +2,16 @@
Copyright (C) 2016, 2017, 2018 Thorsten Kukuk
+Version 2.3
+* Reformat help text / synopsis
+* More detailled output (use --quiet for less output)
+* Log all error messages into log file
+* Avoid potential lock file race condition on self update
+* Accept package names with whitespace
+* Don't wait for user input during self-update
+* Fix broken error message output when creating new snapshot without reboot
+* Fix erroneous mounting of stale grub mounts
+
Version 2.2
* Fix security issue in self update
* Create dirs in /var more reliably by sorting the list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/transactional-update-2.2/configure new/transactional-update-2.3/configure
--- old/transactional-update-2.2/configure 2018-05-02 10:37:54.000000000 +0200
+++ new/transactional-update-2.3/configure 2018-05-14 18:14:16.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for transactional-update 2.2.
+# Generated by GNU Autoconf 2.69 for transactional-update 2.3.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -576,8 +576,8 @@
# Identity of this package.
PACKAGE_NAME='transactional-update'
PACKAGE_TARNAME='transactional-update'
-PACKAGE_VERSION='2.2'
-PACKAGE_STRING='transactional-update 2.2'
+PACKAGE_VERSION='2.3'
+PACKAGE_STRING='transactional-update 2.3'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -1261,7 +1261,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures transactional-update 2.2 to adapt to many kinds of systems.
+\`configure' configures transactional-update 2.3 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1328,7 +1328,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of transactional-update 2.2:";;
+ short | recursive ) echo "Configuration of transactional-update 2.3:";;
esac
cat <<\_ACEOF
@@ -1438,7 +1438,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-transactional-update configure 2.2
+transactional-update configure 2.3
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1531,7 +1531,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by transactional-update $as_me 2.2, which was
+It was created by transactional-update $as_me 2.3, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2394,7 +2394,7 @@
# Define the identity of the package.
PACKAGE='transactional-update'
- VERSION='2.2'
+ VERSION='2.3'
cat >>confdefs.h <<_ACEOF
@@ -5171,7 +5171,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by transactional-update $as_me 2.2, which was
+This file was extended by transactional-update $as_me 2.3, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -5228,7 +5228,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-transactional-update config.status 2.2
+transactional-update config.status 2.3
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/transactional-update-2.2/configure.ac new/transactional-update-2.3/configure.ac
--- old/transactional-update-2.2/configure.ac 2018-05-02 10:31:13.000000000 +0200
+++ new/transactional-update-2.3/configure.ac 2018-05-14 18:13:05.000000000 +0200
@@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT(transactional-update, 2.2)
+AC_INIT(transactional-update, 2.3)
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([sbin/transactional-update.in])
AC_PREFIX_DEFAULT(/usr)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/transactional-update-2.2/doc/transactional-update.xml new/transactional-update-2.3/doc/transactional-update.xml
--- old/transactional-update-2.2/doc/transactional-update.xml 2018-04-30 13:48:03.000000000 +0200
+++ new/transactional-update-2.3/doc/transactional-update.xml 2018-05-04 13:45:50.000000000 +0200
@@ -10,11 +10,6 @@
<surname>Kukuk</surname>
<email>kukuk@thkukuk.de</email>
</author>
- <author>
- <firstname>Ignaz</firstname>
- <surname>Forster</surname>
- <email>iforster@suse.de</email>
- </author>
</authorgroup>
<releaseinfo>Version 0.1, 15. December 2017</releaseinfo>
<abstract>
@@ -34,21 +29,21 @@
<emphasis remap='B'>transactional-update</emphasis>
is an application that allows to apply intrusive updates to a running
system in an <emphasis>atomic</emphasis> way without influencing the
- running system, taking the system down for a longer period or blocking
- the boot process. It is not a package manager - while implemented for
+ running system, taking the system down for a longer period or blocks
+ the boot process. It is not a package manager, while implemented for
zypper with RPMs, it can be changed to use other package managers
- and package formats. The idea and reason for this is being able to
- continue using your existing packages and tool chain to deliver
+ and package formats. The idea and reason for this is, that you can
+ continue to use your existing packages and tool chain to deliver
and apply updates.
</para>
<para>
- To achieve this, <emphasis remap='B'>transactional-update</emphasis>
- every update will create a new snapshot with
+ To archive this, <emphasis remap='B'>transactional-update</emphasis>
+ creates for every update a new snapshot with
<emphasis>btrfs</emphasis> and updates this to the latest version of
the product. Since snapshots contain only the difference between two
- versions this is very space efficient as updates are usually very
- small. This also means there is no limit to two bootable root
- partitions as there can be any number of parallel snapshots.
+ versions and thus are mostly very small, this is very space efficient.
+ Which also means you can have more parallel installations than just
+ two bootable root partitions.
</para>
</section>
@@ -86,7 +81,7 @@
<para>
if the upgrade fails or if the newer software
version is not compatible with your infrastructure, you can
- quickly restore the situation as it was before the upgrade.
+ quickly restore the situation as it was before the upgrade.
</para>
</listitem>
</itemizedlist>
@@ -335,7 +330,7 @@
</chapter>
<chapter id="tu-setup">
- <title>Setup of system</title>
+ <title> Setup of system </title>
<para>
Read-only root filesystem or Read-Write filesystem? Requirements for
RPMs, what is allowed and what not. Config files in /etc with
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/transactional-update-2.2/man/transactional-update.8 new/transactional-update-2.3/man/transactional-update.8
--- old/transactional-update-2.2/man/transactional-update.8 2018-04-17 16:40:32.000000000 +0200
+++ new/transactional-update-2.3/man/transactional-update.8 2018-05-09 16:49:05.000000000 +0200
@@ -1,13 +1,13 @@
'\" t
.\" Title: transactional-update
.\" Author: Thorsten Kukuk
-.\" Generator: DocBook XSL Stylesheets v1.78.1 http://docbook.sf.net/
-.\" Date: 04/17/2018
+.\" Generator: DocBook XSL Stylesheets vsnapshot http://docbook.sf.net/
+.\" Date: 05/09/2018
.\" Manual: transactional-update
.\" Source: transactional-update
.\" Language: English
.\"
-.TH "TRANSACTIONAL\-UPDAT" "8" "04/17/2018" "transactional-update" "transactional-update"
+.TH "TRANSACTIONAL\-UPDAT" "8" "05/09/2018" "transactional-update" "transactional-update"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -31,15 +31,9 @@
transactional-update, transactional-update.service, transactional-update.timer \- Apply updates to the system in an atomic way via transactional updates\&.
.SH "SYNOPSIS"
.HP \w'\fBtransactional\-update\fR\ 'u
-\fBtransactional\-update\fR [\-\-help] [\-\-version]
+\fBtransactional\-update\fR [\fIoptions\fR...] [\fIgeneral\-command\fR...] [\fIpackage\-command\fR\ [\fIcommand\-argument\fR...]]
.HP \w'\fBtransactional\-update\fR\ 'u
-\fBtransactional\-update\fR [\-\-no\-selfupdate] [cleanup] [up | dup | patch | bootloader | initrd] [kdump] [reboot]
-.HP \w'\fBtransactional\-update\fR\ 'u
-\fBtransactional\-update\fR [\-\-no\-selfupdate] [cleanup] [reboot] pkg install | remove | update <RPM>\&.\&.\&.<RPM>
-.HP \w'\fBtransactional\-update\fR\ 'u
-\fBtransactional\-update\fR [\-\-no\-selfupdate] migration
-.HP \w'\fBtransactional\-update\fR\ 'u
-\fBtransactional\-update\fR rollback [number]
+\fBtransactional\-update\fR [\fIoptions\fR] \fIindividual\-command\fR
.PP
transactional\-update\&.service
.PP
@@ -62,7 +56,11 @@
/etc/systemd/system/transactional\-update\&.timer\&.d/local\&.conf\&. See
\fBsystemd.unit\fR(5)
for more informations\&.
-.SH "OPTIONS"
+.SH "COMMANDS"
+.SS "General Commands"
+.PP
+General commands can be used together in any combination; additionally they can be extended with one
+\fBPackage Command\fR\&.
.PP
\fBcleanup\fR
.RS 4
@@ -72,13 +70,6 @@
\fBsnapper\fR(8)\&.
.RE
.PP
-\fBdup\fR
-.RS 4
-If new updates are available, a new snapshot is created and
-\fBzypper dup \-\-no\-allow\-vendor\-change\fR
-is used to update the snapshot\&. Afterwards, the snapshot is activated and will be used as the new root filesystem during next boot\&.
-.RE
-.PP
\fBgrub\&.cfg\fR
.RS 4
\fBgrub2-mkconfig\fR(8)
@@ -102,9 +93,49 @@
A new initrd for kdump is created in a snapshot\&.
.RE
.PP
-\fBmigration\fR
+\fBreboot\fR
.RS 4
-On systems which are registered against the SUSE Customer Center (SCC) or SMT, a migration to a new version of the installed products can be made with this option\&. This is done in an interactive mode\&.
+If a new snapshot with updates was created, the system should be rebooted\&. This option will trigger the necessary reboot\&. If the
+\fBrebootmgrd\fR(8)
+is running,
+\fBtransactional\-update\fR
+will tell the daemon to reboot the system according to the configured policies\&. Else
+\fBsystemctl reboot\fR
+is called\&.
+.RE
+.PP
+\fBshell\fR
+.RS 4
+After all actions are done, before the snapshot with the changes is unmounted and switched to read\-only, a shell is started in the new snapshot as chroot environment for testing and debugging\&.
+.RE
+.SS "Package Commands"
+.PP
+Only one package command can be used at the same time\&. Note that when combining non\-interactive package commands with
+\fBGeneral Commands\fR
+those will only be executed if the package command updated any packages\&.
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.ps +1
+\fBNon-interactive Package Commands\fR
+.RS 4
+.PP
+Non\-interactive Package Commands will require no user interaction\&.
+.PP
+\fBdup\fR
+.RS 4
+If new updates are available, a new snapshot is created and
+\fBzypper dup \-\-no\-allow\-vendor\-change\fR
+is used to update the snapshot\&. Afterwards, the snapshot is activated and will be used as the new root filesystem during next boot\&.
+.RE
+.PP
+\fBup\fR
+.RS 4
+If new updates are available, a new snapshot is created and
+\fBzypper up\fR
+is used to update the snapshot\&. Afterwards, the snapshot is activated and will be used as the new root filesystem during next boot\&.
.RE
.PP
\fBpatch\fR
@@ -113,6 +144,22 @@
\fBzypper patch\fR
is used to update the snapshot\&. Afterwards, the snapshot is activated and will be used as the new root filesystem during next boot\&.
.RE
+.RE
+.sp
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.br
+.ps +1
+\fBInteractive Package Commands\fR
+.RS 4
+.PP
+Interactive Package Commands may require user interaction to solve conflicts or make decisions\&.
+.PP
+\fBmigration\fR
+.RS 4
+On systems which are registered against the SUSE Customer Center (SCC) or SMT, a migration to a new version of the installed products can be made with this option\&. This is done in an interactive mode\&.
+.RE
.PP
\fBpkg install\fR \fI<RPM> \&.\&.\&. <RPM>\fR
.RS 4
@@ -128,42 +175,28 @@
.RS 4
Packages installed as RPMs can be updated\&.
.RE
-.PP
-\fBreboot\fR
-.RS 4
-If a new snapshot with updates was created, the system should be rebooted\&. This option will trigger the necessary reboot\&. If the
-\fBrebootmgrd\fR(8)
-is running,
-\fBtransactional\-update\fR
-will tell the daemon to reboot the system according to the configured policies\&. Else
-\fBsystemctl reboot\fR
-is called\&.
.RE
+.SS "Individual Commands"
.PP
\fBrollback\fR [\fInumber\fR]
.RS 4
Sets the default subvolume\&. On systems with read\-write filesystem,
-\fBsnapper\fR(8)\fB rollback\fR
+\fBsnapper\fR(8)
+\fB rollback\fR
is called\&. On a read\-only filesystem, without argument, the current system is made the new default root filesystem\&. Else the snapshot with
\fBnumber\fR
is made the new default root filesystem\&. On a read\-only filesystem, no additional snapshots are created\&.
.RE
+.SH "OPTIONS"
.PP
-\fBshell\fR
-.RS 4
-After all actions are done, before the snapshot with the changes is unmounted and switched to read\-only, a shell is started in the new snapshot as chroot environment for testing and debugging\&.
-.RE
-.PP
-\fBup\fR
+\fB\-\-no\-selfupdate\fR
.RS 4
-If new updates are available, a new snapshot is created and
-\fBzypper up\fR
-is used to update the snapshot\&. Afterwards, the snapshot is activated and will be used as the new root filesystem during next boot\&.
+Skip checking for newer transactional\-update versions\&.
.RE
.PP
-\fB\-\-no\-selfupdate\fR
+\fB\-\-quiet\fR
.RS 4
-Skip checking for newer transactional\-update versions\&.
+Don\*(Aqt print warnings and informational messages to stdout\&.
.RE
.PP
\fB\-\-help\fR
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/transactional-update-2.2/man/transactional-update.8.html new/transactional-update-2.3/man/transactional-update.8.html
--- old/transactional-update-2.2/man/transactional-update.8.html 2018-04-17 16:40:32.000000000 +0200
+++ new/transactional-update-2.3/man/transactional-update.8.html 2018-05-09 16:49:06.000000000 +0200
@@ -1,4 +1,4 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>transactional-update</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><style xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>transactional-update</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><style xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common">
a.headerlink {
color: #c60f0f;
font-size: 0.8em;
@@ -15,8 +15,10 @@
h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, dt:hover > a.headerlink {
visibility: visible;
}
- </style><a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="transactional-update.index.html">Index </a><span xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" style="float:right">transactional-update 1.28</span><hr xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><div class="refentry"><a name="transactional-update.8"></a><div class="titlepage"></div><div class="refnamediv"><a name="name"></a><h2>Name</h2><p>transactional-update, transactional-update.service, transactional-update.timer — Apply updates to the system in an atomic way via transactional
- updates.</p></div><div class="refsynopsisdiv"><a name="synopsis"></a><h2>Synopsis</h2><div class="cmdsynopsis"><p><code class="command">transactional-update</code> [--help] [--version]</p></div><div class="cmdsynopsis"><p><code class="command">transactional-update</code> [--no-selfupdate] [cleanup] [ up | dup | patch | bootloader | initrd ] [kdump] [reboot]</p></div><div class="cmdsynopsis"><p><code class="command">transactional-update</code> [--no-selfupdate] [cleanup] [reboot] pkg install | remove | update <RPM>...<RPM> </p></div><div class="cmdsynopsis"><p><code class="command">transactional-update</code> [--no-selfupdate] migration </p></div><div class="cmdsynopsis"><p><code class="command">transactional-update</code> rollback [number]</p></div><p>transactional-update.service</p><p>transactional-update.timer</p></div><div class="refsect1"><a name="description"></a><h2 id="DESCRIPTION">DESCRIPTION<a class="headerlink" title="Permalink to this headline" href="#DESCRIPTION">¶</a></h2><p><span class="command"><strong>transactional-update</strong></span> updates the system
+ </style><a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="transactional-update.index.html">Index </a><span xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" style="float:right">transactional-update 2.2</span><hr xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><div class="refentry"><a name="transactional-update.8"></a><div class="titlepage"></div><div class="refnamediv"><a name="name"></a><h2>Name</h2><p>transactional-update, transactional-update.service, transactional-update.timer — Apply updates to the system in an atomic way via transactional
+ updates.</p></div><div class="refsynopsisdiv"><a name="synopsis"></a><h2>Synopsis</h2><div class="cmdsynopsis"><p><code class="command">transactional-update</code> [<em class="replaceable"><code>options</code></em>...] [<em class="replaceable"><code>general-command</code></em>...] [<em class="replaceable"><code>package-command</code></em>
+ [<em class="replaceable"><code>command-argument</code></em>...]
+ ]</p></div><div class="cmdsynopsis"><p><code class="command">transactional-update</code> [<em class="replaceable"><code>options</code></em>] <em class="replaceable"><code>individual-command</code></em> </p></div><p>transactional-update.service</p><p>transactional-update.timer</p></div><div class="refsect1"><a name="description"></a><h2 id="DESCRIPTION">DESCRIPTION<a class="headerlink" title="Permalink to this headline" href="#DESCRIPTION">¶</a></h2><p><span class="command"><strong>transactional-update</strong></span> updates the system
in a transactional way, which means: it is atomic, so either the patches are
fully applied or nothing is changed. The update does not influence your
running system and it can be rolled back. To activate the changes, the system
@@ -36,18 +38,16 @@
/etc/systemd/system/transactional-update.timer.d/local.conf. See
<a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="https://www.freedesktop.org/software/systemd/man/systemd.unit.html"><span class="citerefentry"><span class="refentrytitle">systemd.unit</span>(5)</span></a>
for more informations.
-</p></div><div class="refsect1"><a name="options"></a><h2 id="OPTIONS">OPTIONS<a class="headerlink" title="Permalink to this headline" href="#OPTIONS">¶</a></h2><div class="variablelist"><dl class="variablelist"><dt id="cleanup"><span class="term"><code class="option">cleanup</code></span><a class="headerlink" title="Permalink to this term" href="#cleanup">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>If the current root filesystem is identical to the active root
+</p></div><div class="refsect1"><a name="commands"></a><h2 id="COMMANDS">COMMANDS<a class="headerlink" title="Permalink to this headline" href="#COMMANDS">¶</a></h2><div class="refsect2"><a name="general_commands"></a><h3 id="General Commands">General Commands<a class="headerlink" title="Permalink to this headline" href="#General%20Commands">¶</a></h3><p>
+ General commands can be used together in any combination; additionally
+ they can be extended with one <code class="option">Package Command</code>.
+</p><div class="variablelist"><dl class="variablelist"><dt id="cleanup"><span class="term"><code class="option">cleanup</code></span><a class="headerlink" title="Permalink to this term" href="#cleanup">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>If the current root filesystem is identical to the active root
filesystem (means after a reboot, before
<span class="command"><strong>transactional-update</strong></span> creates a new snapshot with
updates), all old snapshots without a cleanup algorithm get a cleanup
algorithm set. This is to make sure, that old snapshots will be deleted
by snapper. See the section about cleanup algorithms in
<a href="http://snapper.io/manpages/snapper.html"><span class="citerefentry"><span class="refentrytitle">snapper</span>(8)</span></a>.
- </p></dd><dt id="dup"><span class="term"><code class="option">dup</code></span><a class="headerlink" title="Permalink to this term" href="#dup">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
- If new updates are available, a new snapshot is created and
- <span class="command"><strong>zypper dup --no-allow-vendor-change</strong></span> is used to
- update the snapshot. Afterwards, the snapshot is activated and will be
- used as the new root filesystem during next boot.
</p></dd><dt id="grub.cfg"><span class="term"><code class="option">grub.cfg</code></span><a class="headerlink" title="Permalink to this term" href="#grub.cfg">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
<a href="https://www.linux.org/docs/man8/grub2-mkconfig.html"><span class="citerefentry"><span class="refentrytitle">grub2-mkconfig</span>(8)</span></a>
is called to create a new /boot/grub2/grub.cfg
@@ -59,15 +59,46 @@
A new initrd is created in a snapshot.
</p></dd><dt id="kdump"><span class="term"><code class="option">kdump</code></span><a class="headerlink" title="Permalink to this term" href="#kdump">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
A new initrd for kdump is created in a snapshot.
- </p></dd><dt id="migration"><span class="term"><code class="option">migration</code></span><a class="headerlink" title="Permalink to this term" href="#migration">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
- On systems which are registered against the SUSE Customer Center (SCC)
- or SMT, a migration to a new version of the installed products can be
- made with this option. This is done in an interactive mode.
+ </p></dd><dt id="reboot"><span class="term"><code class="option">reboot</code></span><a class="headerlink" title="Permalink to this term" href="#reboot">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
+ If a new snapshot with updates was created, the system should be
+ rebooted. This option will trigger the necessary reboot. If the
+ <a href="rebootmgrd.8.html"><span class="citerefentry"><span class="refentrytitle">rebootmgrd</span>(8)</span></a>
+ is running, <span class="command"><strong>transactional-update</strong></span> will tell the
+ daemon to reboot the system according to the configured policies. Else
+ <span class="command"><strong>systemctl reboot</strong></span> is called.
+ </p></dd><dt id="shell"><span class="term"><code class="option">shell</code></span><a class="headerlink" title="Permalink to this term" href="#shell">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
+ After all actions are done, before the snapshot with the changes is
+ unmounted and switched to read-only, a shell is started in the new
+ snapshot as chroot environment for testing and debugging.
+ </p></dd></dl></div></div><div class="refsect2"><a name="pkg_commands"></a><h3 id="Package Commands">Package Commands<a class="headerlink" title="Permalink to this headline" href="#Package%20Commands">¶</a></h3><p>
+ Only one package command can be used at the same time. Note that when
+ combining non-interactive package commands with
+ <code class="option">General Commands</code> those will only be executed if the package
+ command updated any packages.
+</p><div class="refsect3"><a name="ni_pkg_commands"></a><h4>Non-interactive Package Commands</h4><p>
+ Non-interactive Package Commands will require no user interaction.
+</p><div class="variablelist"><dl class="variablelist"><dt id="dup"><span class="term"><code class="option">dup</code></span><a class="headerlink" title="Permalink to this term" href="#dup">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
+ If new updates are available, a new snapshot is created and
+ <span class="command"><strong>zypper dup --no-allow-vendor-change</strong></span> is used to
+ update the snapshot. Afterwards, the snapshot is activated and will be
+ used as the new root filesystem during next boot.
+ </p></dd><dt id="up"><span class="term"><code class="option">up</code></span><a class="headerlink" title="Permalink to this term" href="#up">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
+ If new updates are available, a new snapshot is created and
+ <span class="command"><strong>zypper up</strong></span> is used to update the snapshot.
+ Afterwards, the snapshot is activated and will be used as the new root
+ filesystem during next boot.
</p></dd><dt id="patch"><span class="term"><code class="option">patch</code></span><a class="headerlink" title="Permalink to this term" href="#patch">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
If new updates are available, a new snapshot is created and
<span class="command"><strong>zypper patch</strong></span> is used to update the snapshot.
Afterwards, the snapshot is activated and will be used as the new root
filesystem during next boot.
+ </p></dd></dl></div></div><div class="refsect3"><a name="i_pkg_commands"></a><h4>Interactive Package Commands</h4><p>
+ Interactive Package Commands may require user interaction to solve conflicts
+ or make decisions.
+</p><div class="variablelist"><dl class="variablelist"><dt id="migration"><span class="term"><code class="option">migration</code></span><a class="headerlink" title="Permalink to this term" href="#migration">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
+ On systems which are registered against the SUSE Customer Center (SCC)
+ or SMT, a migration to a new version of the installed products can be
+ made with this option. This is done in an interactive mode.
</p></dd><dt id="pkg install <RPM> ... <RPM>"><span class="term"><code class="option">pkg install</code> <em class="replaceable"><code><RPM> ... <RPM></code></em></span><a class="headerlink" title="Permalink to this term" href="#pkg%20install%20<RPM>%20...%20<RPM>">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
A PTF or other packages in RPM format can be installed in the system.
</p></dd><dt id="pkg remove <RPM> ... <RPM>"><span class="term"><code class="option">pkg remove</code> <em class="replaceable"><code><RPM> ... <RPM></code></em></span><a class="headerlink" title="Permalink to this term" href="#pkg%20remove%20<RPM>%20...%20<RPM>">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
@@ -75,14 +106,7 @@
the system.
</p></dd><dt id="pkg update <RPM> ... <RPM>"><span class="term"><code class="option">pkg update</code> <em class="replaceable"><code><RPM> ... <RPM></code></em></span><a class="headerlink" title="Permalink to this term" href="#pkg%20update%20<RPM>%20...%20<RPM>">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
Packages installed as RPMs can be updated.
- </p></dd><dt id="reboot"><span class="term"><code class="option">reboot</code></span><a class="headerlink" title="Permalink to this term" href="#reboot">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
- If a new snapshot with updates was created, the system should be
- rebooted. This option will trigger the necessary reboot. If the
- <a href="rebootmgrd.8.html"><span class="citerefentry"><span class="refentrytitle">rebootmgrd</span>(8)</span></a>
- is running, <span class="command"><strong>transactional-update</strong></span> will tell the
- daemon to reboot the system according to the configured policies. Else
- <span class="command"><strong>systemctl reboot</strong></span> is called.
- </p></dd>
-.\" Generator: DocBook XSL Stylesheets v1.78.1 http://docbook.sf.net/
-.\" Date: 04/09/2018
+.\" Generator: DocBook XSL Stylesheets vsnapshot http://docbook.sf.net/
+.\" Date: 05/07/2018
.\" Manual: transactional-update.conf
.\" Source: transactional-update
.\" Language: English
.\"
-.TH "TRANSACTIONAL\-UPDAT" "5" "04/09/2018" "transactional-update" "transactional-update.conf"
+.TH "TRANSACTIONAL\-UPDAT" "5" "05/07/2018" "transactional-update" "transactional-update.conf"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -31,7 +31,7 @@
transactional-update.conf \- transactional\-update configuration file
.SH "SYNOPSIS"
.PP
-/usr/etc/transactional\-update\&.conf
+/etc/transactional\-update\&.conf
.SH "DESCRIPTION"
.PP
This configuration file controls and defines the behaviour of
@@ -43,7 +43,7 @@
PARAMETER=value\&.
.PP
A reference file (also used for reading the default values) can be found in
-/usr/usr/etc/transactional\-update\&.conf\&.
+/usr/etc/transactional\-update\&.conf\&.
.SH "OPTIONS"
.PP
The following options are available in the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/transactional-update-2.2/man/transactional-update.conf.5.html new/transactional-update-2.3/man/transactional-update.conf.5.html
--- old/transactional-update-2.2/man/transactional-update.conf.5.html 2018-04-09 13:34:09.000000000 +0200
+++ new/transactional-update-2.3/man/transactional-update.conf.5.html 2018-05-07 13:36:14.000000000 +0200
@@ -1,4 +1,4 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>transactional-update.conf</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><style xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>transactional-update.conf</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><style xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common">
a.headerlink {
color: #c60f0f;
font-size: 0.8em;
@@ -15,11 +15,11 @@
h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, dt:hover > a.headerlink {
visibility: visible;
}
- </style><a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="transactional-update.index.html">Index </a><span xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" style="float:right">transactional-update 1.28</span><hr xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><div class="refentry"><a name="transactional-update.conf.5"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>transactional-update.conf — transactional-update configuration file</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><p>/usr/etc/transactional-update.conf</p></div><div class="refsect1"><a name="id-1.5"></a><h2 id="Description">Description<a class="headerlink" title="Permalink to this headline" href="#Description">¶</a></h2><p>This configuration file controls and defines the behaviour of
+ </style><a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="transactional-update.index.html">Index </a><span xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" style="float:right">transactional-update 2.2</span><hr xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><div class="refentry"><a name="transactional-update.conf.5"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>transactional-update.conf — transactional-update configuration file</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><p>/etc/transactional-update.conf</p></div><div class="refsect1"><a name="id-1.5"></a><h2 id="Description">Description<a class="headerlink" title="Permalink to this headline" href="#Description">¶</a></h2><p>This configuration file controls and defines the behaviour of
<a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="transactional-update.8.html"><span class="citerefentry"><span class="refentrytitle">transactional-update</span>(8)</span></a>.</p><p>The transactional-update.conf file uses shell
style assignments, e.g. <code class="code">PARAMETER=value</code>.</p><p>A reference file (also used for reading the default values) can be
found in
- /usr/usr/etc/transactional-update.conf.</p></div><div class="refsect1"><a name="id-1.6"></a><h2 id="Options">Options<a class="headerlink" title="Permalink to this headline" href="#Options">¶</a></h2><p>The following options are available in the
+ /usr/etc/transactional-update.conf.</p></div><div class="refsect1"><a name="id-1.6"></a><h2 id="Options">Options<a class="headerlink" title="Permalink to this headline" href="#Options">¶</a></h2><p>The following options are available in the
"<code class="literal">transactional-update</code>" section:
</p><div class="variablelist"><dl class="variablelist"><dt id="REBOOT_METHOD"><span class="term"><code class="varname">REBOOT_METHOD</code></span><a class="headerlink" title="Permalink to this term" href="#REBOOT_METHOD">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>Specify the reboot method to use.</p><div class="variablelist"><dl class="variablelist"><dt id="auto"><span class="term">"<code class="literal">auto</code>"</span><a class="headerlink" title="Permalink to this term" href="#auto">¶</a></dt><dd><p>
Uses "<code class="literal">rebootmgr</code>" if available and active;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/transactional-update-2.2/man/transactional-update.index.html new/transactional-update-2.3/man/transactional-update.index.html
--- old/transactional-update-2.2/man/transactional-update.index.html 2018-04-17 16:40:32.000000000 +0200
+++ new/transactional-update-2.3/man/transactional-update.index.html 2018-05-09 16:49:06.000000000 +0200
@@ -1,4 +1,4 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>transactional-update.index</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><style xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>transactional-update.index</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><style xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common">
a.headerlink {
color: #c60f0f;
font-size: 0.8em;
@@ -15,4 +15,4 @@
h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, dt:hover > a.headerlink {
visibility: visible;
}
- </style><a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="transactional-update.index.html">Index </a><span xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" style="float:right">transactional-update 1.28</span><hr xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><div class="refentry"><a name="transactional-update.index"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>transactional-update.index — List all manpages from the transactional-update project</p></div><div class="refsect1"><a name="id-1.4"></a><h2 id="T">T<a class="headerlink" title="Permalink to this headline" href="#T">¶</a></h2><p><a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="transactional-update.8.html"><span class="citerefentry"><span class="refentrytitle">transactional-update</span>(8)</span></a> -- Apply updates to the system in an atomic way via transactional updates.<br><a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="transactional-update.conf.5.html"><span class="citerefentry"><span class="refentrytitle">transactional-update.conf</span>(5)</span></a> -- transactional-update configuration file<br><a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="transactional-update.service.8.html"><span class="citerefentry"><span class="refentrytitle">transactional-update.service</span>(8)</span></a> -- Apply updates to the system in an atomic way via transactional updates.<br><a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="transactional-update.timer.8.html"><span class="citerefentry"><span class="refentrytitle">transactional-update.timer</span>(8)</span></a> -- Apply updates to the system in an atomic way via transactional updates.<br></p></div><div class="refsect1"><a name="id-1.5"></a><p><a name="counts"></a>This index contains 4 entries, referring to 2 individual manual pages.</p></div></div></body></html>
+ </style><a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="transactional-update.index.html">Index </a><span xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" style="float:right">transactional-update 2.2</span><hr xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><div class="refentry"><a name="transactional-update.index"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>transactional-update.index — List all manpages from the transactional-update project</p></div><div class="refsect1"><a name="id-1.4"></a><h2 id="T">T<a class="headerlink" title="Permalink to this headline" href="#T">¶</a></h2><p><a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="transactional-update.8.html"><span class="citerefentry"><span class="refentrytitle">transactional-update</span>(8)</span></a> -- Apply updates to the system in an atomic way via transactional updates.<br><a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="transactional-update.conf.5.html"><span class="citerefentry"><span class="refentrytitle">transactional-update.conf</span>(5)</span></a> -- transactional-update configuration file<br><a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="transactional-update.service.8.html"><span class="citerefentry"><span class="refentrytitle">transactional-update.service</span>(8)</span></a> -- Apply updates to the system in an atomic way via transactional updates.<br><a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="transactional-update.timer.8.html"><span class="citerefentry"><span class="refentrytitle">transactional-update.timer</span>(8)</span></a> -- Apply updates to the system in an atomic way via transactional updates.<br></p></div><div class="refsect1"><a name="id-1.5"></a><p><a name="counts"></a>This index contains 4 entries, referring to 2 individual manual pages.</p></div></div></body></html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/transactional-update-2.2/man/transactional-update.service.8.html new/transactional-update-2.3/man/transactional-update.service.8.html
--- old/transactional-update-2.2/man/transactional-update.service.8.html 2018-04-17 16:40:32.000000000 +0200
+++ new/transactional-update-2.3/man/transactional-update.service.8.html 2018-05-09 16:49:06.000000000 +0200
@@ -1,4 +1,4 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>transactional-update</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><style xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>transactional-update</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><style xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common">
a.headerlink {
color: #c60f0f;
font-size: 0.8em;
@@ -15,8 +15,10 @@
h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, dt:hover > a.headerlink {
visibility: visible;
}
- </style><a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="transactional-update.index.html">Index </a><span xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" style="float:right">transactional-update 1.28</span><hr xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><div class="refentry"><a name="transactional-update.8"></a><div class="titlepage"></div><div class="refnamediv"><a name="name"></a><h2>Name</h2><p>transactional-update, transactional-update.service, transactional-update.timer — Apply updates to the system in an atomic way via transactional
- updates.</p></div><div class="refsynopsisdiv"><a name="synopsis"></a><h2>Synopsis</h2><div class="cmdsynopsis"><p><code class="command">transactional-update</code> [--help] [--version]</p></div><div class="cmdsynopsis"><p><code class="command">transactional-update</code> [--no-selfupdate] [cleanup] [ up | dup | patch | bootloader | initrd ] [kdump] [reboot]</p></div><div class="cmdsynopsis"><p><code class="command">transactional-update</code> [--no-selfupdate] [cleanup] [reboot] pkg install | remove | update <RPM>...<RPM> </p></div><div class="cmdsynopsis"><p><code class="command">transactional-update</code> [--no-selfupdate] migration </p></div><div class="cmdsynopsis"><p><code class="command">transactional-update</code> rollback [number]</p></div><p>transactional-update.service</p><p>transactional-update.timer</p></div><div class="refsect1"><a name="description"></a><h2 id="DESCRIPTION">DESCRIPTION<a class="headerlink" title="Permalink to this headline" href="#DESCRIPTION">¶</a></h2><p><span class="command"><strong>transactional-update</strong></span> updates the system
+ </style><a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="transactional-update.index.html">Index </a><span xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" style="float:right">transactional-update 2.2</span><hr xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><div class="refentry"><a name="transactional-update.8"></a><div class="titlepage"></div><div class="refnamediv"><a name="name"></a><h2>Name</h2><p>transactional-update, transactional-update.service, transactional-update.timer — Apply updates to the system in an atomic way via transactional
+ updates.</p></div><div class="refsynopsisdiv"><a name="synopsis"></a><h2>Synopsis</h2><div class="cmdsynopsis"><p><code class="command">transactional-update</code> [<em class="replaceable"><code>options</code></em>...] [<em class="replaceable"><code>general-command</code></em>...] [<em class="replaceable"><code>package-command</code></em>
+ [<em class="replaceable"><code>command-argument</code></em>...]
+ ]</p></div><div class="cmdsynopsis"><p><code class="command">transactional-update</code> [<em class="replaceable"><code>options</code></em>] <em class="replaceable"><code>individual-command</code></em> </p></div><p>transactional-update.service</p><p>transactional-update.timer</p></div><div class="refsect1"><a name="description"></a><h2 id="DESCRIPTION">DESCRIPTION<a class="headerlink" title="Permalink to this headline" href="#DESCRIPTION">¶</a></h2><p><span class="command"><strong>transactional-update</strong></span> updates the system
in a transactional way, which means: it is atomic, so either the patches are
fully applied or nothing is changed. The update does not influence your
running system and it can be rolled back. To activate the changes, the system
@@ -36,18 +38,16 @@
/etc/systemd/system/transactional-update.timer.d/local.conf. See
<a xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common" href="https://www.freedesktop.org/software/systemd/man/systemd.unit.html"><span class="citerefentry"><span class="refentrytitle">systemd.unit</span>(5)</span></a>
for more informations.
-</p></div><div class="refsect1"><a name="options"></a><h2 id="OPTIONS">OPTIONS<a class="headerlink" title="Permalink to this headline" href="#OPTIONS">¶</a></h2><div class="variablelist"><dl class="variablelist"><dt id="cleanup"><span class="term"><code class="option">cleanup</code></span><a class="headerlink" title="Permalink to this term" href="#cleanup">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>If the current root filesystem is identical to the active root
+</p></div><div class="refsect1"><a name="commands"></a><h2 id="COMMANDS">COMMANDS<a class="headerlink" title="Permalink to this headline" href="#COMMANDS">¶</a></h2><div class="refsect2"><a name="general_commands"></a><h3 id="General Commands">General Commands<a class="headerlink" title="Permalink to this headline" href="#General%20Commands">¶</a></h3><p>
+ General commands can be used together in any combination; additionally
+ they can be extended with one <code class="option">Package Command</code>.
+</p><div class="variablelist"><dl class="variablelist"><dt id="cleanup"><span class="term"><code class="option">cleanup</code></span><a class="headerlink" title="Permalink to this term" href="#cleanup">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>If the current root filesystem is identical to the active root
filesystem (means after a reboot, before
<span class="command"><strong>transactional-update</strong></span> creates a new snapshot with
updates), all old snapshots without a cleanup algorithm get a cleanup
algorithm set. This is to make sure, that old snapshots will be deleted
by snapper. See the section about cleanup algorithms in
<a href="http://snapper.io/manpages/snapper.html"><span class="citerefentry"><span class="refentrytitle">snapper</span>(8)</span></a>.
- </p></dd><dt id="dup"><span class="term"><code class="option">dup</code></span><a class="headerlink" title="Permalink to this term" href="#dup">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
- If new updates are available, a new snapshot is created and
- <span class="command"><strong>zypper dup --no-allow-vendor-change</strong></span> is used to
- update the snapshot. Afterwards, the snapshot is activated and will be
- used as the new root filesystem during next boot.
</p></dd><dt id="grub.cfg"><span class="term"><code class="option">grub.cfg</code></span><a class="headerlink" title="Permalink to this term" href="#grub.cfg">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
<a href="https://www.linux.org/docs/man8/grub2-mkconfig.html"><span class="citerefentry"><span class="refentrytitle">grub2-mkconfig</span>(8)</span></a>
is called to create a new /boot/grub2/grub.cfg
@@ -59,15 +59,46 @@
A new initrd is created in a snapshot.
</p></dd><dt id="kdump"><span class="term"><code class="option">kdump</code></span><a class="headerlink" title="Permalink to this term" href="#kdump">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
A new initrd for kdump is created in a snapshot.
- </p></dd><dt id="migration"><span class="term"><code class="option">migration</code></span><a class="headerlink" title="Permalink to this term" href="#migration">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
- On systems which are registered against the SUSE Customer Center (SCC)
- or SMT, a migration to a new version of the installed products can be
- made with this option. This is done in an interactive mode.
+ </p></dd><dt id="reboot"><span class="term"><code class="option">reboot</code></span><a class="headerlink" title="Permalink to this term" href="#reboot">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
+ If a new snapshot with updates was created, the system should be
+ rebooted. This option will trigger the necessary reboot. If the
+ <a href="rebootmgrd.8.html"><span class="citerefentry"><span class="refentrytitle">rebootmgrd</span>(8)</span></a>
+ is running, <span class="command"><strong>transactional-update</strong></span> will tell the
+ daemon to reboot the system according to the configured policies. Else
+ <span class="command"><strong>systemctl reboot</strong></span> is called.
+ </p></dd><dt id="shell"><span class="term"><code class="option">shell</code></span><a class="headerlink" title="Permalink to this term" href="#shell">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
+ After all actions are done, before the snapshot with the changes is
+ unmounted and switched to read-only, a shell is started in the new
+ snapshot as chroot environment for testing and debugging.
+ </p></dd></dl></div></div><div class="refsect2"><a name="pkg_commands"></a><h3 id="Package Commands">Package Commands<a class="headerlink" title="Permalink to this headline" href="#Package%20Commands">¶</a></h3><p>
+ Only one package command can be used at the same time. Note that when
+ combining non-interactive package commands with
+ <code class="option">General Commands</code> those will only be executed if the package
+ command updated any packages.
+</p><div class="refsect3"><a name="ni_pkg_commands"></a><h4>Non-interactive Package Commands</h4><p>
+ Non-interactive Package Commands will require no user interaction.
+</p><div class="variablelist"><dl class="variablelist"><dt id="dup"><span class="term"><code class="option">dup</code></span><a class="headerlink" title="Permalink to this term" href="#dup">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
+ If new updates are available, a new snapshot is created and
+ <span class="command"><strong>zypper dup --no-allow-vendor-change</strong></span> is used to
+ update the snapshot. Afterwards, the snapshot is activated and will be
+ used as the new root filesystem during next boot.
+ </p></dd><dt id="up"><span class="term"><code class="option">up</code></span><a class="headerlink" title="Permalink to this term" href="#up">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
+ If new updates are available, a new snapshot is created and
+ <span class="command"><strong>zypper up</strong></span> is used to update the snapshot.
+ Afterwards, the snapshot is activated and will be used as the new root
+ filesystem during next boot.
</p></dd><dt id="patch"><span class="term"><code class="option">patch</code></span><a class="headerlink" title="Permalink to this term" href="#patch">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
If new updates are available, a new snapshot is created and
<span class="command"><strong>zypper patch</strong></span> is used to update the snapshot.
Afterwards, the snapshot is activated and will be used as the new root
filesystem during next boot.
+ </p></dd></dl></div></div><div class="refsect3"><a name="i_pkg_commands"></a><h4>Interactive Package Commands</h4><p>
+ Interactive Package Commands may require user interaction to solve conflicts
+ or make decisions.
+</p><div class="variablelist"><dl class="variablelist"><dt id="migration"><span class="term"><code class="option">migration</code></span><a class="headerlink" title="Permalink to this term" href="#migration">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
+ On systems which are registered against the SUSE Customer Center (SCC)
+ or SMT, a migration to a new version of the installed products can be
+ made with this option. This is done in an interactive mode.
</p></dd><dt id="pkg install <RPM> ... <RPM>"><span class="term"><code class="option">pkg install</code> <em class="replaceable"><code><RPM> ... <RPM></code></em></span><a class="headerlink" title="Permalink to this term" href="#pkg%20install%20<RPM>%20...%20<RPM>">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
A PTF or other packages in RPM format can be installed in the system.
</p></dd><dt id="pkg remove <RPM> ... <RPM>"><span class="term"><code class="option">pkg remove</code> <em class="replaceable"><code><RPM> ... <RPM></code></em></span><a class="headerlink" title="Permalink to this term" href="#pkg%20remove%20<RPM>%20...%20<RPM>">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
@@ -75,14 +106,7 @@
the system.
</p></dd><dt id="pkg update <RPM> ... <RPM>"><span class="term"><code class="option">pkg update</code> <em class="replaceable"><code><RPM> ... <RPM></code></em></span><a class="headerlink" title="Permalink to this term" href="#pkg%20update%20<RPM>%20...%20<RPM>">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
Packages installed as RPMs can be updated.
- </p></dd><dt id="reboot"><span class="term"><code class="option">reboot</code></span><a class="headerlink" title="Permalink to this term" href="#reboot">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>
- If a new snapshot with updates was created, the system should be
- rebooted. This option will trigger the necessary reboot. If the
- <a href="rebootmgrd.8.html"><span class="citerefentry"><span class="refentrytitle">rebootmgrd</span>(8)</span></a>
- is running, <span class="command"><strong>transactional-update</strong></span> will tell the
- daemon to reboot the system according to the configured policies. Else
- <span class="command"><strong>systemctl reboot</strong></span> is called.
- </p></dd>&2 2> >(tee -a "${LOGFILE}")
+
self_update() {
if [ ${DO_SELF_UPDATE} == 0 ]; then
return
fi
- echo "Checking for newer version."
- if zypper info transactional-update | grep -q '^Status *: out-of-date'; then
- echo "New version found - updating..."
+ log_info "Checking for newer version."
+ if zypper --non-interactive info transactional-update | grep -q '^Status *: out-of-date'; then
+ log_info "New version found - updating..."
TA_UPDATE_TMPFILE="`mktemp -d /tmp/transactional-update.XXXXXXXXXX`"
if [ $? -ne 0 ]; then
- quit 1;
+ log_error "ERROR: Couldn't create temporary directory for self-update."
+ quit 1
fi
export TA_UPDATE_TMPFILE
cd "${TA_UPDATE_TMPFILE}"
- zypper --pkg-cache-dir "${TA_UPDATE_TMPFILE}" download transactional-update
- find . -name transactional-update*.rpm -exec rpm2cpio {} \; | cpio -idmv >/dev/null
- rm -f "${LOCKFILE}"
+ zypper --non-interactive --pkg-cache-dir "${TA_UPDATE_TMPFILE}" download transactional-update
+ find . -name transactional-update*.rpm -exec rpm2cpio {} \; | cpio -idmv 2>/dev/null
+ if [ $? -ne 0 ]; then
+ log_error "ERROR: Couldn't extract the update."
+ quit 1
+ fi
exec "${TA_UPDATE_TMPFILE}/usr/sbin/transactional-update" "$@"
fi
}
usage() {
- echo "Usage: transactional-update --help|--version"
- echo " transactional-update [--no-selfupdate] [cleanup][up|dup|patch|initrd][kdump][reboot]"
- echo " transactional-update [--no-selfupdate] [cleanup] [reboot] pkg install|remove|update PKG1..PKGN"
- echo " transactional-update [--no-selfupdate] migration"
- echo " transactional-update [--no-selfupdate] register -p <product> [-r <registration code>]"
- echo " transactional-update rollback [number]"
+ echo "Syntax: transactional-update [options] [general-command...] [package-command]"
+ echo " transactional-update [options] individual-command"
+ echo ""
+ echo "Applies modifications to the system to a new snapshot without touching"
+ echo "the running system."
+ echo ""
+ echo "General Commands:"
+ echo "cleanup Mark removable snapshots"
+ echo "grub.cfg Regenerate grub.cfg"
+ echo "bootloader Reinstall the bootloader"
+ echo "initrd Regenerate initrd"
+ echo "kdump Regenerate kdump initrd"
+ echo "reboot Reboot after update"
+ echo "shell Open rw shell in snapshot before exiting"
+ echo ""
+ echo "Package Commands:"
+ echo "dup Call 'zypper dup --no-allow-vendor-change'"
+ echo "up Call 'zypper up'"
+ echo "patch Call 'zypper patch'"
+ echo "migration Updates systems registered via SCC / SMT"
+ echo "pkg install ... Install individual packages"
+ echo "pkg remove ... Remove individual packages"
+ echo "pkg update ... Updates individual packages"
+ echo ""
+ echo "Individual Commands:"
+ echo "rollback <number> Set given snapshot as default snapshot"
+ echo ""
+ echo "Options:"
+ echo "--no-selfupdate Skip checking for newer version"
+ echo "--quiet Don't print warnings and infos to stdout"
+ echo "--help Display this help and exit"
+ echo "--version Display version and exit"
exit $1
}
print_version() {
echo "transactional-update @VERSION@"
- exit 0;
+ exit 0
}
log_info() {
echo `date "+%Y-%m-%d %H:%M"` "$@" >> ${LOGFILE}
+ if [ ${VERBOSITY} -ge 2 ]; then
+ echo "$@"
+ fi
}
log_error() {
- echo `date "+%Y-%m-%d %H:%M "` "$@" >> ${LOGFILE}
+ echo `date "+%Y-%m-%d %H:%M"` "$@" >> ${LOGFILE}
echo "$@" 1>&2
}
@@ -320,7 +357,7 @@
if [ $# -eq 0 ]; then
break;
else
- ZYPPER_ARG_PKGS="${ZYPPER_ARG_PKGS} $1";
+ ZYPPER_ARG_PKGS+=("$1");
shift
fi
done
@@ -378,6 +415,10 @@
DO_SELF_UPDATE=0
shift
;;
+ --quiet)
+ VERBOSITY=1
+ shift
+ ;;
register)
DO_REGISTRATION=1
shift
@@ -411,19 +452,20 @@
done
if [ $# -ne 0 ]; then
- usage 1;
+ usage 1
fi
+# Check if this is a self-updated transactional-update; if it isn't lock and
+# check for update
if [ -z "${TA_UPDATE_TMPFILE}" ]; then
- self_update "${ORIG_ARGS[@]}"
-else
- trap 'rm -rf "${TA_UPDATE_TMPFILE}" && unset TA_UPDATE_TMPFILE' EXIT
-fi
-
-bashlock "/var/run/transactional-update.pid"
-if [ $? -ne 0 ]; then
- echo "Couldn't get lock, is another instance already running?"
- exit 1;
+ bashlock "/var/run/transactional-update.pid"
+ if [ $? -ne 0 ]; then
+ echo "Couldn't get lock, is another instance already running?"
+ exit 1
+ fi
+ self_update "${ORIG_ARGS[@]}"
+else # Set exit handler to clean up artifacts of the self-update
+ trap 'rm -f "$LOCKFILE" && rm -rf "${TA_UPDATE_TMPFILE}" && unset TA_UPDATE_TMPFILE' EXIT
fi
# Load old state file
@@ -474,18 +516,18 @@
NEED_REBOOT_WARNING=0
fi
- echo "Rollback to snapshot ${ROLLBACK_SNAPSHOT}..."
+ log_info "Rollback to snapshot ${ROLLBACK_SNAPSHOT}..."
if [ ${RO_ROOT} == "true" ]; then
BTRFS_ID=`btrfs subvolume list / |grep /.snapshots/${ROLLBACK_SNAPSHOT}/snapshot | awk '{print $2}'`
if [ -z $BTRFS_ID ]; then
log_error "ERROR: couldn't determine btrfs subvolume ID"
- exit 1
+ quit 1
else
btrfs subvolume set-default $BTRFS_ID /.snapshots
if [ $? -ne 0 ]; then
log_error "ERROR: btrfs set-default $BTRFS_ID failed!"
- exit 1
+ quit 1
fi
# Create the trigger to re-register the system as new version after next
# reboot.
@@ -500,7 +542,7 @@
if [ ${NEED_REBOOT_WARNING} -eq 1 ]; then
echo "Please reboot to finish rollback!"
fi
- exit 0;
+ exit 0
fi
#
@@ -577,8 +619,8 @@
# If the current snapshot and the default snapshot differ
# there have been changes that we are now discarding.
if [ "${DEFAULT_SNAPSHOT_ID}" -ne "${CURRENT_SNAPSHOT_ID}" ]; then
- log_error: "WARNING: Default snapshot differs from current snapshot."
- log_error: "WARNING: Any changes within the previous snapshot will be discarded!"
+ log_info "WARNING: Default snapshot differs from current snapshot."
+ log_info "WARNING: Any changes within the previous snapshot will be discarded!"
fi
# Check if there are updates at all. Don't check if we do
@@ -590,7 +632,7 @@
fi
TMPFILE=`mktemp /tmp/transactional-update.XXXXXXXXXX`
- zypper --xml ${ZYPPER_ARG} ${ZYPPER_NONINTERACTIVE} --dry-run ${ZYPPER_ARG_PKGS} > ${TMPFILE}
+ zypper --xml ${ZYPPER_ARG} ${ZYPPER_NONINTERACTIVE} --dry-run "${ZYPPER_ARG_PKGS[@]}" > ${TMPFILE}
if [ $? -ne 0 ]; then
LOG_MESSAGES=`awk -v RS='<' -v FS='>' '{if ($1 ~ /^(message|description)/) print $2}' ${TMPFILE} | perl -MHTML::Entities -pe 'decode_entities($_);'`
log_error "ERROR: Zypper failed with the following message(s):"
@@ -627,7 +669,7 @@
BACKUP_SNAPSHOT_ID=`snapper --no-dbus create -p -t pre -c number -u "important=yes" -d "RO-Clone of #${CURRENT_SNAPSHOT_ID}"`
if [ $? -ne 0 ]; then
log_error "ERROR: snapper create failed!"
- exit 1
+ quit 1
fi
fi
@@ -635,15 +677,15 @@
btrfs property set ${BACKUP_SNAPSHOT_DIR} ro false
if [ $? -ne 0 ]; then
log_error "ERROR: changing ${BACKUP_SNAPSHOT_DIR} to read-write failed!"
- quit 1;
+ quit 1
fi
# Copy the contents of /etc into the backup snapshot
log_info "Copying /etc state into backup snapshot"
- rsync --archive --xattrs --acls --quiet --delete-excluded /etc ${BACKUP_SNAPSHOT_DIR}
+ rsync --archive --xattrs --acls --quiet /etc ${BACKUP_SNAPSHOT_DIR}
if [ $? -ne 0 ]; then
log_error "ERROR: copying of /etc into backup snapshot failed!"
- quit 1;
+ quit 1
fi
# Create the working snapshot
@@ -663,7 +705,7 @@
btrfs property set ${SNAPSHOT_DIR} ro false
if [ $? -ne 0 ]; then
log_error "ERROR: changing ${SNAPSHOT_DIR} to read-write failed!"
- quit 1;
+ quit 1
fi
# Remember all snapshots we create for update. If transactional-update is
@@ -677,7 +719,7 @@
touch ${SNAPSHOT_DIR}/var/tmp/update_snapshot.test
if [ $? -ne 0 ]; then
log_error "ERROR: System installation is too old!"
- quit 1;
+ quit 1
fi
rm -f ${SNAPSHOT_DIR}/var/tmp/update_snapshot.test
else
@@ -686,7 +728,7 @@
touch ${SNAPSHOT_DIR}/var/update_snapshot.test
if [ $? -ne 0 ]; then
log_error "ERROR: System installation is broken!"
- quit 1;
+ quit 1
fi
rm -f ${SNAPSHOT_DIR}/var/update_snapshot.test
fi
@@ -699,19 +741,18 @@
# Check which directories in /boot/grub2 need to be mounted,
# otherwise grub2 will not boot after a version update.
- DIR_TO_MOUNT="${DIR_TO_MOUNT} $(awk '$2 ~ /\/boot\/grub2\// { print $2 }' /proc/mounts)"
-
+ DIR_TO_MOUNT="${DIR_TO_MOUNT} $(awk '$2 ~ /^\/boot\/grub2\// { print $2 }' /proc/mounts)"
# Mount everything we need:
mount -t proc none ${SNAPSHOT_DIR}/proc
if [ $? -ne 0 ]; then
log_error "ERROR: mount of proc failed!"
- quit 1;
+ quit 1
fi
mount -t sysfs sys ${SNAPSHOT_DIR}/sys
if [ $? -ne 0 ]; then
log_error "ERROR: mount of sys failed!"
- quit 1;
+ quit 1
fi
if [ -x /usr/sbin/selinuxenabled ]; then
/usr/sbin/selinuxenabled
@@ -719,7 +760,7 @@
mount -t selinuxfs selinux ${SNAPSHOT_DIR}/sys/fs/selinux
if [ $? -ne 0 ]; then
log_error "ERROR: mount of sys failed!"
- quit 1;
+ quit 1
fi
fi
fi
@@ -730,16 +771,16 @@
mount -o bind /$directory ${SNAPSHOT_DIR}/$directory
if [ $? -ne 0 ]; then
log_error "ERROR: mount of $directory failed!"
- quit 1;
+ quit 1
fi
done
# Copy the contents of /etc
log_info "Copying /etc state into snapshot"
- rsync --archive --xattrs --acls --quiet --delete-excluded /etc ${SNAPSHOT_DIR}
+ rsync --archive --xattrs --acls --quiet /etc ${SNAPSHOT_DIR}
if [ $? -ne 0 ]; then
log_error "ERROR: copying of /etc into snapshot failed!"
- quit 1;
+ quit 1
fi
# If we have a seperate /var, create some directories which we
@@ -779,12 +820,14 @@
if [ -n "${ZYPPER_ARG}" ]; then
log_info "Calling zypper ${ZYPPER_ARG}"
+ # All transactional-update zypper commands except migration and pkg
if [ -n "${ZYPPER_NONINTERACTIVE}" ]; then
- env DISABLE_RESTART_ON_UPDATE=yes zypper -R ${MOUNT_DIR} ${ZYPPER_ARG} ${ZYPPER_NONINTERACTIVE} ${ZYPPER_ARG_PKGS} |& tee -a ${LOGFILE}
+ env DISABLE_RESTART_ON_UPDATE=yes zypper -R ${MOUNT_DIR} ${ZYPPER_ARG} ${ZYPPER_NONINTERACTIVE} "${ZYPPER_ARG_PKGS[@]}" |& tee -a ${LOGFILE}
RETVAL=${PIPESTATUS[0]}
else
+ # transactional-update migration
if [ ${DO_MIGRATION} -eq 1 ]; then
- chroot ${MOUNT_DIR} env DISABLE_RESTART_ON_UPDATE=yes zypper ${ZYPPER_ARG} ${ZYPPER_ARG_PKGS}
+ chroot ${MOUNT_DIR} env DISABLE_RESTART_ON_UPDATE=yes zypper ${ZYPPER_ARG} "${ZYPPER_ARG_PKGS[@]}"
RETVAL=$?
# Reset registration until reboot. Needed in both cases,
# whether an error occured or whether we had success.
@@ -794,8 +837,9 @@
# reboot.
check_registration_on_next_reboot
fi
+ # transactional-update pkg
else
- env DISABLE_RESTART_ON_UPDATE=yes zypper -R ${MOUNT_DIR} ${ZYPPER_ARG} ${ZYPPER_ARG_PKGS}
+ env DISABLE_RESTART_ON_UPDATE=yes zypper -R ${MOUNT_DIR} ${ZYPPER_ARG} "${ZYPPER_ARG_PKGS[@]}"
RETVAL=$?
fi
fi
@@ -850,7 +894,7 @@
if [ ${RUN_SHELL} -eq 1 ]; then
echo "Opening chroot in snapshot ${SNAPSHOT_ID}, continue with 'exit'"
- env PS1="transactional update # " chroot ${MOUNT_DIR} bash
+ env PS1="transactional update # " chroot ${MOUNT_DIR} bash 2>&4
fi
# Unset variable
@@ -933,6 +977,8 @@
if [ ${EXITCODE} -ne 0 ]; then
quit ${EXITCODE}
+ elif [ $REBOOT_AFTERWARDS -eq 0 ]; then
+ echo "Please reboot your machine to activate the changes and avoid data loss."
fi
fi
@@ -957,10 +1003,8 @@
reboot_autodetect
;;
esac
- echo "The system couldn't be rebooted using method '{$REBOOT_METHOD}'. Please reboot the system"
+ echo "The system couldn't be rebooted using method '${REBOOT_METHOD}'. Please reboot the system"
echo "manually."
- elif [ $PACKAGE_UPDATES -gt 1 ]; then
- echo "Please reboot your machine to activate the changes and avoid data loss"
fi
fi