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 - [email protected]
+
+- 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>[email protected]</email>
       </author>
-      <author>
-        <firstname>Ignaz</firstname>
-        <surname>Forster</surname>
-        <email>[email protected]</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 <[email protected]>
-.\" 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    &lt;RPM&gt;...&lt;RPM&gt; 
</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 &lt;RPM&gt; ... &lt;RPM&gt;"><span 
class="term"><code class="option">pkg install</code> <em 
class="replaceable"><code>&lt;RPM&gt; ... &lt;RPM&gt;</code></em></span><a 
class="headerlink" title="Permalink to this term" 
href="#pkg%20install%20&lt;RPM&gt;%20...%20&lt;RPM&gt;">¶</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 &lt;RPM&gt; ... &lt;RPM&gt;"><span 
class="term"><code class="option">pkg remove</code> <em 
class="replaceable"><code>&lt;RPM&gt; ... &lt;RPM&gt;</code></em></span><a 
class="headerlink" title="Permalink to this term" 
href="#pkg%20remove%20&lt;RPM&gt;%20...%20&lt;RPM&gt;">¶</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 &lt;RPM&gt; ... &lt;RPM&gt;"><span 
class="term"><code class="option">pkg update</code> <em 
class="replaceable"><code>&lt;RPM&gt; ... &lt;RPM&gt;</code></em></span><a 
class="headerlink" title="Permalink to this term" 
href="#pkg%20update%20&lt;RPM&gt;%20...%20&lt;RPM&gt;">¶</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><dt id="rollback
+      </p></dd></dl></div></div></div><div class="refsect2"><a 
name="individual_commands"></a><h3 id="Individual Commands">Individual 
Commands<a class="headerlink" title="Permalink to this headline" 
href="#Individual%20Commands">¶</a></h3><div class="variablelist"><dl 
class="variablelist"><dt id="rollback
     number"><span class="term"><code class="option">rollback</code>
     [<span class="optional"><em 
class="replaceable"><code>number</code></em></span>]</span><a 
class="headerlink" title="Permalink to this term" 
href="#rollback%0A%20%20%20%20number">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>
        Sets the default subvolume. On systems with read-write filesystem,
@@ -92,16 +116,7 @@
        filesystem. Else the snapshot with <code class="option">number</code> 
is made the
        new default root filesystem. On a read-only filesystem, no additional
        snapshots are created.
-      </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><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="--no-selfupdate"><span class="term"><code 
class="option">--no-selfupdate</code></span><a class="headerlink" 
title="Permalink to this term" href="#--no-selfupdate">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Skip checking for newer 
transactional-update versions.</p></dd><dt id="--help"><span class="term"><code 
class="option">--help</code></span><a class="headerlink" title="Permalink to 
this term" href="#--help">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Display help and exit</p></dd><dt 
id="--version"><span class="term"><code 
class="option">--version</code></span><a class="headerlink" title="Permalink to 
this term" href="#--version">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Output version information and 
exit</p></dd></dl></div></div><div class="refsect1"><a name="important"></a><h2 
id="IMPORTANT">IMPORTANT<a class="headerlink" title="Permalink to this 
headline" href="#IMPORTANT">¶</a></h2><p>
+      </p></dd></dl></div></div></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="--no-selfupdate"><span 
class="term"><code class="option">--no-selfupdate</code></span><a 
class="headerlink" title="Permalink to this term" 
href="#--no-selfupdate">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Skip checking for newer 
transactional-update versions.</p></dd><dt id="--quiet"><span 
class="term"><code class="option">--quiet</code></span><a class="headerlink" 
title="Permalink to this term" href="#--quiet">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Don't print warnings and informational 
messages to stdout.</p></dd><dt id="--help"><span class="term"><code 
class="option">--help</code></span><a class="headerlink" title="Permalink to 
this term" href="#--help">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Display help and exit</p></dd><dt 
id="--version"><span class="term"><code 
class="option">--version</code></span><a class="headerlink" title="Permalink to 
this term" href="#--version">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Output version information and 
exit</p></dd></dl></div></div><div class="refsect1"><a name="important"></a><h2 
id="IMPORTANT">IMPORTANT<a class="headerlink" title="Permalink to this 
headline" href="#IMPORTANT">¶</a></h2><p>
   Only RPMs, which are fully part of the snapshot of the root filesystem, can
   be updated. If RPMs contains files outside of the snapshot, the update
   itself can break or can break the system.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/transactional-update-2.2/man/transactional-update.8.xml 
new/transactional-update-2.3/man/transactional-update.8.xml
--- old/transactional-update-2.2/man/transactional-update.8.xml 2018-04-17 
16:36:35.000000000 +0200
+++ new/transactional-update-2.3/man/transactional-update.8.xml 2018-05-09 
15:59:44.000000000 +0200
@@ -55,45 +55,16 @@
   <refsynopsisdiv id='synopsis'>
     <cmdsynopsis>
       <command>transactional-update</command>
-      <arg choice='opt'>--help</arg>
-      <arg choice='opt'>--version</arg>
+      <arg choice='opt' rep='repeat'><replaceable>options</replaceable></arg>
+      <arg choice='opt' 
rep='repeat'><replaceable>general-command</replaceable></arg>
+      <arg choice='opt'><replaceable>package-command</replaceable>
+        <arg choice='opt' 
rep='repeat'><replaceable>command-argument</replaceable></arg>
+      </arg>
     </cmdsynopsis>
     <cmdsynopsis>
       <command>transactional-update</command>
-      <arg choice='opt'>--no-selfupdate</arg>
-      <arg choice='opt'>cleanup</arg>
-      <group choice='opt'>
-       <arg choice='plain'>up</arg>
-       <arg choice='plain'>dup</arg>
-       <arg choice='plain'>patch</arg>
-       <arg choice='plain'>bootloader</arg>
-       <arg choice='plain'>initrd</arg>
-    </group>
-    <arg choice='opt'>kdump</arg>
-    <arg choice='opt'>reboot</arg>
-    </cmdsynopsis>
-    <cmdsynopsis>
-      <command>transactional-update</command>
-      <arg choice='opt'>--no-selfupdate</arg>
-      <arg choice='opt'>cleanup</arg>
-      <arg choice='opt'>reboot</arg>
-      <arg choice='plain'>pkg</arg>
-      <group choice='plain'>
-       <arg choice='plain'>install</arg>
-       <arg choice='plain'>remove</arg>
-       <arg choice='plain'>update</arg>
-      </group>
-      <arg choice='plain'>&lt;RPM&gt;...&lt;RPM&gt;</arg>
-    </cmdsynopsis>
-    <cmdsynopsis>
-      <command>transactional-update</command>
-      <arg choice='opt'>--no-selfupdate</arg>
-      <arg choice='plain'>migration</arg>
-    </cmdsynopsis>
-    <cmdsynopsis>
-      <command>transactional-update</command>
-      <arg choice='plain'>rollback</arg>
-      <arg choice='opt'>number</arg>
+      <arg choice='opt'><replaceable>options</replaceable></arg>
+      <arg choice='plain'><replaceable>individual-command</replaceable></arg>
     </cmdsynopsis>
     <para><filename>transactional-update.service</filename></para>
     <para><filename>transactional-update.timer</filename></para>
@@ -126,7 +97,12 @@
 </para>
 </refsect1>
 
-<refsect1 id='options'><title>OPTIONS</title>
+<refsect1 id='commands'><title>COMMANDS</title>
+<refsect2 id='general_commands'><title>General Commands</title>
+<para>
+  General commands can be used together in any combination; additionally
+  they can be extended with one <option>Package Command</option>.
+</para>
 <variablelist remap='TP'>
   <varlistentry>
     <term><option>cleanup</option></term>
@@ -142,17 +118,6 @@
     </listitem>
   </varlistentry>
   <varlistentry>
-    <term><option>dup</option></term>
-    <listitem>
-      <para>
-       If new updates are available, a new snapshot is created and
-       <command>zypper dup --no-allow-vendor-change</command> is used to
-       update the snapshot. Afterwards, the snapshot is activated and will be
-       used as the new root filesystem during next boot.
-      </para>
-    </listitem>
-  </varlistentry>
-  <varlistentry>
     <term><option>grub.cfg</option></term>
     <listitem>
       <para>
@@ -189,12 +154,61 @@
     </listitem>
   </varlistentry>
   <varlistentry>
-    <term><option>migration</option></term>
+    <term><option>reboot</option></term>
     <listitem>
       <para>
-       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
+       
<citerefentry><refentrytitle>rebootmgrd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+       is running, <command>transactional-update</command> will tell the
+       daemon to reboot the system according to the configured policies. Else
+       <command>systemctl reboot</command> is called.
+      </para>
+    </listitem>
+  </varlistentry>
+  <varlistentry>
+    <term><option>shell</option></term>
+    <listitem>
+      <para>
+       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.
+      </para>
+    </listitem>
+  </varlistentry>
+</variablelist>
+</refsect2>
+<refsect2 id='pkg_commands'><title>Package Commands</title>
+<para>
+  Only one package command can be used at the same time. Note that when
+  combining non-interactive package commands with
+  <option>General Commands</option> those will only be executed if the package
+  command updated any packages.
+</para>
+<refsect3 id='ni_pkg_commands'><title>Non-interactive Package Commands</title>
+<para>
+  Non-interactive Package Commands will require no user interaction.
+</para>
+<variablelist>
+  <varlistentry>
+    <term><option>dup</option></term>
+    <listitem>
+      <para>
+       If new updates are available, a new snapshot is created and
+       <command>zypper dup --no-allow-vendor-change</command> is used to
+       update the snapshot. Afterwards, the snapshot is activated and will be
+       used as the new root filesystem during next boot.
+      </para>
+    </listitem>
+  </varlistentry>
+  <varlistentry>
+    <term><option>up</option></term>
+    <listitem>
+      <para>
+       If new updates are available, a new snapshot is created and
+       <command>zypper up</command> is used to update the snapshot.
+       Afterwards, the snapshot is activated and will be used as the new root
+       filesystem during next boot.
       </para>
     </listitem>
   </varlistentry>
@@ -209,6 +223,24 @@
       </para>
     </listitem>
   </varlistentry>
+</variablelist>
+</refsect3>
+<refsect3 id='i_pkg_commands'><title>Interactive Package Commands</title>
+<para>
+  Interactive Package Commands may require user interaction to solve conflicts
+  or make decisions.
+</para>
+<variablelist>
+  <varlistentry>
+    <term><option>migration</option></term>
+    <listitem>
+      <para>
+       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.
+      </para>
+    </listitem>
+  </varlistentry>
   <varlistentry>
     <term><option>pkg install</option> <replaceable>&lt;RPM&gt; ... 
&lt;RPM&gt;</replaceable></term>
     <listitem>
@@ -234,19 +266,11 @@
       </para>
     </listitem>
   </varlistentry>
-  <varlistentry>
-    <term><option>reboot</option></term>
-    <listitem>
-      <para>
-       If a new snapshot with updates was created, the system should be
-       rebooted. This option will trigger the necessary reboot. If the
-       
<citerefentry><refentrytitle>rebootmgrd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
-       is running, <command>transactional-update</command> will tell the
-       daemon to reboot the system according to the configured policies. Else
-       <command>systemctl reboot</command> is called.
-      </para>
-    </listitem>
-  </varlistentry>
+</variablelist>
+</refsect3>
+</refsect2>
+<refsect2 id='individual_commands'><title>Individual Commands</title>
+<variablelist>
   <varlistentry>
     <term><option>rollback</option>
     <optional><replaceable>number</replaceable></optional></term>
@@ -263,31 +287,21 @@
       </para>
     </listitem>
   </varlistentry>
+</variablelist>
+</refsect2>
+</refsect1>
+<refsect1 id='options'><title>OPTIONS</title>
+<variablelist>
   <varlistentry>
-    <term><option>shell</option></term>
-    <listitem>
-      <para>
-       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.
-      </para>
-    </listitem>
-  </varlistentry>
-  <varlistentry>
-    <term><option>up</option></term>
+    <term><option>--no-selfupdate</option></term>
     <listitem>
-      <para>
-       If new updates are available, a new snapshot is created and
-       <command>zypper up</command> is used to update the snapshot.
-       Afterwards, the snapshot is activated and will be used as the new root
-       filesystem during next boot.
-      </para>
+      <para>Skip checking for newer transactional-update versions.</para>
     </listitem>
   </varlistentry>
   <varlistentry>
-    <term><option>--no-selfupdate</option></term>
+    <term><option>--quiet</option></term>
     <listitem>
-      <para>Skip checking for newer transactional-update versions.</para>
+      <para>Don't print warnings and informational messages to stdout.</para>
     </listitem>
   </varlistentry>
   <varlistentry>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/transactional-update-2.2/man/transactional-update.conf.5 
new/transactional-update-2.3/man/transactional-update.conf.5
--- old/transactional-update-2.2/man/transactional-update.conf.5        
2018-04-09 13:34:09.000000000 +0200
+++ new/transactional-update-2.3/man/transactional-update.conf.5        
2018-05-07 13:36:13.000000000 +0200
@@ -1,13 +1,13 @@
 '\" t
 .\"     Title: transactional-update.conf
 .\"    Author: Ignaz Forster <[email protected]>
-.\" 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    &lt;RPM&gt;...&lt;RPM&gt; 
</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 &lt;RPM&gt; ... &lt;RPM&gt;"><span 
class="term"><code class="option">pkg install</code> <em 
class="replaceable"><code>&lt;RPM&gt; ... &lt;RPM&gt;</code></em></span><a 
class="headerlink" title="Permalink to this term" 
href="#pkg%20install%20&lt;RPM&gt;%20...%20&lt;RPM&gt;">¶</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 &lt;RPM&gt; ... &lt;RPM&gt;"><span 
class="term"><code class="option">pkg remove</code> <em 
class="replaceable"><code>&lt;RPM&gt; ... &lt;RPM&gt;</code></em></span><a 
class="headerlink" title="Permalink to this term" 
href="#pkg%20remove%20&lt;RPM&gt;%20...%20&lt;RPM&gt;">¶</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 &lt;RPM&gt; ... &lt;RPM&gt;"><span 
class="term"><code class="option">pkg update</code> <em 
class="replaceable"><code>&lt;RPM&gt; ... &lt;RPM&gt;</code></em></span><a 
class="headerlink" title="Permalink to this term" 
href="#pkg%20update%20&lt;RPM&gt;%20...%20&lt;RPM&gt;">¶</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><dt id="rollback
+      </p></dd></dl></div></div></div><div class="refsect2"><a 
name="individual_commands"></a><h3 id="Individual Commands">Individual 
Commands<a class="headerlink" title="Permalink to this headline" 
href="#Individual%20Commands">¶</a></h3><div class="variablelist"><dl 
class="variablelist"><dt id="rollback
     number"><span class="term"><code class="option">rollback</code>
     [<span class="optional"><em 
class="replaceable"><code>number</code></em></span>]</span><a 
class="headerlink" title="Permalink to this term" 
href="#rollback%0A%20%20%20%20number">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>
        Sets the default subvolume. On systems with read-write filesystem,
@@ -92,16 +116,7 @@
        filesystem. Else the snapshot with <code class="option">number</code> 
is made the
        new default root filesystem. On a read-only filesystem, no additional
        snapshots are created.
-      </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><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="--no-selfupdate"><span class="term"><code 
class="option">--no-selfupdate</code></span><a class="headerlink" 
title="Permalink to this term" href="#--no-selfupdate">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Skip checking for newer 
transactional-update versions.</p></dd><dt id="--help"><span class="term"><code 
class="option">--help</code></span><a class="headerlink" title="Permalink to 
this term" href="#--help">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Display help and exit</p></dd><dt 
id="--version"><span class="term"><code 
class="option">--version</code></span><a class="headerlink" title="Permalink to 
this term" href="#--version">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Output version information and 
exit</p></dd></dl></div></div><div class="refsect1"><a name="important"></a><h2 
id="IMPORTANT">IMPORTANT<a class="headerlink" title="Permalink to this 
headline" href="#IMPORTANT">¶</a></h2><p>
+      </p></dd></dl></div></div></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="--no-selfupdate"><span 
class="term"><code class="option">--no-selfupdate</code></span><a 
class="headerlink" title="Permalink to this term" 
href="#--no-selfupdate">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Skip checking for newer 
transactional-update versions.</p></dd><dt id="--quiet"><span 
class="term"><code class="option">--quiet</code></span><a class="headerlink" 
title="Permalink to this term" href="#--quiet">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Don't print warnings and informational 
messages to stdout.</p></dd><dt id="--help"><span class="term"><code 
class="option">--help</code></span><a class="headerlink" title="Permalink to 
this term" href="#--help">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Display help and exit</p></dd><dt 
id="--version"><span class="term"><code 
class="option">--version</code></span><a class="headerlink" title="Permalink to 
this term" href="#--version">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Output version information and 
exit</p></dd></dl></div></div><div class="refsect1"><a name="important"></a><h2 
id="IMPORTANT">IMPORTANT<a class="headerlink" title="Permalink to this 
headline" href="#IMPORTANT">¶</a></h2><p>
   Only RPMs, which are fully part of the snapshot of the root filesystem, can
   be updated. If RPMs contains files outside of the snapshot, the update
   itself can break or can break the system.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/transactional-update-2.2/man/transactional-update.timer.8.html 
new/transactional-update-2.3/man/transactional-update.timer.8.html
--- old/transactional-update-2.2/man/transactional-update.timer.8.html  
2018-04-17 16:40:32.000000000 +0200
+++ new/transactional-update-2.3/man/transactional-update.timer.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    &lt;RPM&gt;...&lt;RPM&gt; 
</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 &lt;RPM&gt; ... &lt;RPM&gt;"><span 
class="term"><code class="option">pkg install</code> <em 
class="replaceable"><code>&lt;RPM&gt; ... &lt;RPM&gt;</code></em></span><a 
class="headerlink" title="Permalink to this term" 
href="#pkg%20install%20&lt;RPM&gt;%20...%20&lt;RPM&gt;">¶</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 &lt;RPM&gt; ... &lt;RPM&gt;"><span 
class="term"><code class="option">pkg remove</code> <em 
class="replaceable"><code>&lt;RPM&gt; ... &lt;RPM&gt;</code></em></span><a 
class="headerlink" title="Permalink to this term" 
href="#pkg%20remove%20&lt;RPM&gt;%20...%20&lt;RPM&gt;">¶</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 &lt;RPM&gt; ... &lt;RPM&gt;"><span 
class="term"><code class="option">pkg update</code> <em 
class="replaceable"><code>&lt;RPM&gt; ... &lt;RPM&gt;</code></em></span><a 
class="headerlink" title="Permalink to this term" 
href="#pkg%20update%20&lt;RPM&gt;%20...%20&lt;RPM&gt;">¶</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><dt id="rollback
+      </p></dd></dl></div></div></div><div class="refsect2"><a 
name="individual_commands"></a><h3 id="Individual Commands">Individual 
Commands<a class="headerlink" title="Permalink to this headline" 
href="#Individual%20Commands">¶</a></h3><div class="variablelist"><dl 
class="variablelist"><dt id="rollback
     number"><span class="term"><code class="option">rollback</code>
     [<span class="optional"><em 
class="replaceable"><code>number</code></em></span>]</span><a 
class="headerlink" title="Permalink to this term" 
href="#rollback%0A%20%20%20%20number">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>
        Sets the default subvolume. On systems with read-write filesystem,
@@ -92,16 +116,7 @@
        filesystem. Else the snapshot with <code class="option">number</code> 
is made the
        new default root filesystem. On a read-only filesystem, no additional
        snapshots are created.
-      </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><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="--no-selfupdate"><span class="term"><code 
class="option">--no-selfupdate</code></span><a class="headerlink" 
title="Permalink to this term" href="#--no-selfupdate">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Skip checking for newer 
transactional-update versions.</p></dd><dt id="--help"><span class="term"><code 
class="option">--help</code></span><a class="headerlink" title="Permalink to 
this term" href="#--help">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Display help and exit</p></dd><dt 
id="--version"><span class="term"><code 
class="option">--version</code></span><a class="headerlink" title="Permalink to 
this term" href="#--version">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Output version information and 
exit</p></dd></dl></div></div><div class="refsect1"><a name="important"></a><h2 
id="IMPORTANT">IMPORTANT<a class="headerlink" title="Permalink to this 
headline" href="#IMPORTANT">¶</a></h2><p>
+      </p></dd></dl></div></div></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="--no-selfupdate"><span 
class="term"><code class="option">--no-selfupdate</code></span><a 
class="headerlink" title="Permalink to this term" 
href="#--no-selfupdate">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Skip checking for newer 
transactional-update versions.</p></dd><dt id="--quiet"><span 
class="term"><code class="option">--quiet</code></span><a class="headerlink" 
title="Permalink to this term" href="#--quiet">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Don't print warnings and informational 
messages to stdout.</p></dd><dt id="--help"><span class="term"><code 
class="option">--help</code></span><a class="headerlink" title="Permalink to 
this term" href="#--help">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Display help and exit</p></dd><dt 
id="--version"><span class="term"><code 
class="option">--version</code></span><a class="headerlink" title="Permalink to 
this term" href="#--version">¶</a></dt><dd 
xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0"; 
xmlns:exsl="http://exslt.org/common";><p>Output version information and 
exit</p></dd></dl></div></div><div class="refsect1"><a name="important"></a><h2 
id="IMPORTANT">IMPORTANT<a class="headerlink" title="Permalink to this 
headline" href="#IMPORTANT">¶</a></h2><p>
   Only RPMs, which are fully part of the snapshot of the root filesystem, can
   be updated. If RPMs contains files outside of the snapshot, the update
   itself can break or can break the system.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/transactional-update-2.2/sbin/transactional-update.in 
new/transactional-update-2.3/sbin/transactional-update.in
--- old/transactional-update-2.2/sbin/transactional-update.in   2018-04-30 
13:53:13.000000000 +0200
+++ new/transactional-update-2.3/sbin/transactional-update.in   2018-05-14 
18:05:00.000000000 +0200
@@ -22,9 +22,10 @@
 
 DIR_TO_MOUNT="dev opt var/log"
 EXITCODE=0
+VERBOSITY=2
 ZYPPER_ARG=""
 ZYPPER_NONINTERACTIVE="-y --auto-agree-with-product-licenses"
-ZYPPER_ARG_PKGS=""
+ZYPPER_ARG_PKGS=()
 REWRITE_BOOTLOADER=0
 REWRITE_GRUB_CFG=0
 REWRITE_INITRD=0
@@ -62,48 +63,84 @@
     . ${CONFFILE}
 fi
 
+# Log stderr to log file
+exec 4>&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
 


Reply via email to