Hello community, here is the log from the commit of package transactional-update for openSUSE:Factory checked in at 2018-08-22 14:19:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/transactional-update (Old) and /work/SRC/openSUSE:Factory/.transactional-update.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "transactional-update" Wed Aug 22 14:19:27 2018 rev:32 rq:630563 version:2.6 Changes: -------- --- /work/SRC/openSUSE:Factory/transactional-update/transactional-update.changes 2018-06-19 12:03:09.659151438 +0200 +++ /work/SRC/openSUSE:Factory/.transactional-update.new/transactional-update.changes 2018-08-22 14:19:43.686262873 +0200 @@ -1,0 +2,17 @@ +Mon Aug 20 15:09:44 UTC 2018 - ifors...@suse.com + +- Update to version 2.6 + - Add --interactive and --non-interactive options to change the default + interactivity for zypper calls. For previously non-interactive calls (e.g. + dup) these options makes it possible to pick the correct solution in case + of conflicts or make sure that a script will never be stuck at an input + prompt. + - Add kured reboot support + - Tries to clean up temporary files and mount points if transactional-update + quits unexpectedly + - Remove trancactional-update-helper (replaced by zypper options) + - Create /var/lib/zypp if not available (boo#1104452) + - Various small fixes +- Changed permissions of systemd script again + +------------------------------------------------------------------- Old: ---- transactional-update-2.5.tar.xz New: ---- transactional-update-2.6.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ transactional-update.spec ++++++ --- /var/tmp/diff_new_pack.3sbKWJ/_old 2018-08-22 14:19:44.106263867 +0200 +++ /var/tmp/diff_new_pack.3sbKWJ/_new 2018-08-22 14:19:44.106263867 +0200 @@ -17,7 +17,7 @@ Name: transactional-update -Version: 2.5 +Version: 2.6 Release: 0 Summary: Transactional Updates with btrfs and snapshots License: GPL-2.0-or-later @@ -25,16 +25,14 @@ URL: https://github.com/openSUSE/transactional-update Source: %{name}-%{version}.tar.xz BuildRequires: fdupes -BuildRequires: gcc-c++ BuildRequires: pkgconfig BuildRequires: rpm-devel BuildRequires: suse-module-tools -BuildRequires: pkgconfig(libzypp) Requires: attr Requires: logrotate Requires: lsof -# psmisc is needed because of fuser Requires: perl-HTML-Parser +# psmisc is needed because of fuser Requires: psmisc Requires: rsync Conflicts: snapper-zypp-plugin @@ -82,13 +80,11 @@ %{_sbindir}/create_dirs_from_rpmdb %{_sbindir}/transactional-update %{_sbindir}/tu-rebuild-kdump-initrd -%{_sbindir}/transactional-update-helper %dir %{_prefix}%{_sysconfdir} %{_prefix}%{_sysconfdir}/transactional-update.conf %dir %{_prefix}/lib/dracut %dir %{_prefix}/lib/dracut/modules.d %{_prefix}/lib/dracut/modules.d/50transactional-update/ -%attr(0644,root,root) %{_prefix}/lib/dracut/modules.d/50transactional-update/transactional-update-etc-cleaner.service %{_mandir}/man5/transactional-update.conf.5%{?ext_man} %{_mandir}/man8/transactional-update.8%{?ext_man} %{_mandir}/man8/transactional-update.timer.8%{?ext_man} ++++++ transactional-update-2.5.tar.xz -> transactional-update-2.6.tar.xz ++++++ ++++ 2317 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/transactional-update-2.5/NEWS new/transactional-update-2.6/NEWS --- old/transactional-update-2.5/NEWS 2018-06-15 14:02:02.000000000 +0200 +++ new/transactional-update-2.6/NEWS 2018-08-20 17:08:14.000000000 +0200 @@ -2,6 +2,19 @@ Copyright (C) 2016, 2017, 2018 Thorsten Kukuk +Version 2.6 +* Add --interactive and --non-interactive options to change the default + interactivity for zypper calls. For previously non-interactive calls (e.g. + dup) these options makes it possible to pick the correct solution in case + of conflicts or make sure that a script will never be stuck at an input + prompt. +* Add kured reboot support +* Tries to clean up temporary files and mount points if transactional-update + quits unexpectedly +* Remove trancactional-update-helper (replaced by zypper options) +* Create /var/lib/zypp if not available (boo#1104452) +* Various small fixes + Version 2.5 * Support for overlayfs attributes like trusted.overlay.opaque - this will avoid disappearing configuration files on system updates diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/transactional-update-2.5/configure.ac new/transactional-update-2.6/configure.ac --- old/transactional-update-2.5/configure.ac 2018-06-15 14:02:29.000000000 +0200 +++ new/transactional-update-2.6/configure.ac 2018-08-17 12:05:34.000000000 +0200 @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT(transactional-update, 2.5) +AC_INIT(transactional-update, 2.6) AM_INIT_AUTOMAKE AC_CONFIG_SRCDIR([sbin/transactional-update.in]) AC_PREFIX_DEFAULT(/usr) @@ -40,17 +40,9 @@ AC_SUBST(LOGROTATEDDIR) AC_PROG_CC -AC_PROG_CXX AC_PROG_INSTALL AC_PROG_LN_S -AX_CHECK_COMPILE_FLAG([-std=c++11], [CXXFLAGS="$CXXFLAGS -std=c++11"]) - -dnl -dnl Check for libzypp -dnl -PKG_CHECK_MODULES(LIBZYPP, libzypp) - dnl dnl Check for librpm dnl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/transactional-update-2.5/dracut/Makefile.am new/transactional-update-2.6/dracut/Makefile.am --- old/transactional-update-2.5/dracut/Makefile.am 2018-06-15 13:38:30.000000000 +0200 +++ new/transactional-update-2.6/dracut/Makefile.am 2018-07-31 16:39:29.000000000 +0200 @@ -4,6 +4,7 @@ modulesdir = @DRACUTDIR@/50transactional-update -modules_SCRIPTS = transactional-update-etc-cleaner.sh transactional-update-etc-cleaner.service module-setup.sh +modules_SCRIPTS = transactional-update-etc-cleaner.sh module-setup.sh +modules_DATA = transactional-update-etc-cleaner.service -EXTRA_DIST = $(SCRIPTS) +EXTRA_DIST = $(SCRIPTS) $(DATA) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/transactional-update-2.5/man/transactional-update.8 new/transactional-update-2.6/man/transactional-update.8 --- old/transactional-update-2.5/man/transactional-update.8 2018-06-15 14:03:40.000000000 +0200 +++ new/transactional-update-2.6/man/transactional-update.8 2018-08-20 17:01:02.000000000 +0200 @@ -2,12 +2,12 @@ .\" Title: transactional-update .\" Author: Thorsten Kukuk <ku...@suse.com> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 06/15/2018 +.\" Date: 08/20/2018 .\" Manual: transactional-update .\" Source: transactional-update .\" Language: English .\" -.TH "TRANSACTIONAL\-UPDAT" "8" "06/15/2018" "transactional-update" "transactional-update" +.TH "TRANSACTIONAL\-UPDAT" "8" "08/20/2018" "transactional-update" "transactional-update" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -158,10 +158,20 @@ .RE .SS "Package Commands" .PP -Package Commands will typically invoke +Package Commands will invoke \fBzypper\fR to perform actions on the RPM packages\&. Only one Package Command can be used at the same time\&. Can be combined with any number of General Commands\&. +.PP +By default commands usually invoked from scripts are called in non\-interactive mode (assuming the default answer in case of questions), commands typically called by the user are called in interactive mode\&. The behaviour can be changed or enforced using the +\fB\-\-interactive\fR +respectively the +\fB\-\-non\-interactive\fR +options\&. +.PP +Note that when using Package Commands non\-interactively and combining them with +General Commands +the General Commands will only be executed if the Package Command updated any packages\&. .sp .it 1 an-trap .nr an-no-space-flag 1 @@ -171,16 +181,6 @@ \fBNon-interactive Package Commands\fR .RS 4 .PP -Non\-interactive Package Commands are designed to be called from scripts and will require no user interaction\&. Note that when combining Non\-interactive Package Commands with -General Commands -those will only be executed if the Package Command updated any packages\&. -.PP -In case a user decision is needed it has to be resolved by using one of the -Interactive Package Commands -or -\fBzypper\fR -first\&. -.PP \fBdup\fR .RS 4 If new updates are available, a new snapshot is created and @@ -211,11 +211,9 @@ \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\&. +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\&. .RE .PP \fBpkg install\fR \fI<RPM> \&.\&.\&. <RPM>\fR @@ -247,6 +245,16 @@ .RE .SH "OPTIONS" .PP +\fB\-\-interactive, \-i\fR +.RS 4 +Ignores package command categorization, calls zypper in interactive mode\&. +.RE +.PP +\fB\-\-non\-interactive, \-n\fR +.RS 4 +Ignores package command categorization, calls zypper in non\-interactive mode\&. +.RE +.PP \fB\-\-no\-selfupdate\fR .RS 4 Skip checking for newer transactional\-update versions\&. @@ -257,7 +265,7 @@ Don\*(Aqt print warnings and informational messages to stdout\&. .RE .PP -\fB\-\-help\fR +\fB\-\-help, \-h\fR .RS 4 Display help and exit .RE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/transactional-update-2.5/man/transactional-update.8.html new/transactional-update-2.6/man/transactional-update.8.html --- old/transactional-update-2.5/man/transactional-update.8.html 2018-06-15 14:03:40.000000000 +0200 +++ new/transactional-update-2.6/man/transactional-update.8.html 2018-08-20 17:01:02.000000000 +0200 @@ -15,7 +15,7 @@ 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 2.5</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 + </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.6</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>standalone-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 @@ -99,20 +99,22 @@ 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> - Package Commands will typically invoke <span class="command"><strong>zypper</strong></span> to perform + Package Commands will invoke <span class="command"><strong>zypper</strong></span> to perform actions on the RPM packages. Only one Package Command can be used at the same time. Can be combined with any number of <a class="link" href="#general_commands" title="General Commands">General Commands</a>. -</p><div class="refsect3"><a name="ni_pkg_commands"></a><h4>Non-interactive Package Commands</h4><p> - Non-interactive Package Commands are designed to be called from scripts and - will require no user interaction. Note that when combining Non-interactive - Package Commands with - <a class="link" href="#general_commands" title="General Commands">General Commands</a> those will only be - executed if the Package Command updated any packages. -</p><p>In case a user decision is needed it has to be resolved by using one - of the <a class="link" href="#i_pkg_commands" title="Interactive Package Commands">Interactive Package Commands</a> or - <span class="command"><strong>zypper</strong></span> first. -</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> +</p><p> + By default commands usually invoked from scripts are called in + non-interactive mode (assuming the default answer in case of questions), + commands typically called by the user are called in interactive mode. + The behaviour can be changed or enforced using the + <code class="option">--interactive</code> respectively the + <code class="option">--non-interactive</code> options. +</p><p> + Note that when using Package Commands non-interactively and combining them + with <a class="link" href="#general_commands" title="General Commands">General Commands</a> the General + Commands 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><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 @@ -127,13 +129,10 @@ <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> + </p></dd></dl></div></div><div class="refsect3"><a name="i_pkg_commands"></a><h4>Interactive Package Commands</h4><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. + made with this option. </p></dd><dt id="pkg install <RPM> ... <RPM>"><span class="term"><code class="option">pkg install</code> <em class="replaceable"><code><RPM> ... <RPM></code></em></span><a class="headerlink" title="Permalink to this term" href="#pkg%20install%20<RPM>%20...%20<RPM>">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p> A PTF or other packages in RPM format can be installed in the system. </p></dd><dt id="pkg remove <RPM> ... <RPM>"><span class="term"><code class="option">pkg remove</code> <em class="replaceable"><code><RPM> ... <RPM></code></em></span><a class="headerlink" title="Permalink to this term" href="#pkg%20remove%20<RPM>%20...%20<RPM>">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p> @@ -152,7 +151,7 @@ the current root file system is made the new default root file system. Otherwise the snapshot with <code class="option">number</code> is made the new default root filesystem. - </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> + </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="--interactive, -i"><span class="term"><code class="option">--interactive, -i</code></span><a class="headerlink" title="Permalink to this term" href="#--interactive,%20-i">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>Ignores package command categorization, calls zypper in interactive mode.</p></dd><dt id="--non-interactive, -n"><span class="term"><code class="option">--non-interactive, -n</code></span><a class="headerlink" title="Permalink to this term" href="#--non-interactive,%20-n">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>Ignores package command categorization, calls zypper in non-interactive mode.</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="--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, -h"><span class="term"><code class="option">--help, -h</code></span><a class="headerlink" title="Permalink to this term" href="#--help,%20-h">¶</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 root filesystem and /etc can be updated. There is also limited handling for adding files and directories to diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/transactional-update-2.5/man/transactional-update.8.xml new/transactional-update-2.6/man/transactional-update.8.xml --- old/transactional-update-2.5/man/transactional-update.8.xml 2018-06-15 13:38:30.000000000 +0200 +++ new/transactional-update-2.6/man/transactional-update.8.xml 2018-08-20 16:59:01.000000000 +0200 @@ -217,23 +217,25 @@ </refsect2> <refsect2 id='pkg_commands'><title>Package Commands</title> <para> - Package Commands will typically invoke <command>zypper</command> to perform + Package Commands will invoke <command>zypper</command> to perform actions on the RPM packages. Only one Package Command can be used at the same time. Can be combined with any number of <link linkend='general_commands'>General Commands</link>. </para> -<refsect3 id='ni_pkg_commands'><title>Non-interactive Package Commands</title> <para> - Non-interactive Package Commands are designed to be called from scripts and - will require no user interaction. Note that when combining Non-interactive - Package Commands with - <link linkend='general_commands'>General Commands</link> those will only be - executed if the Package Command updated any packages. + By default commands usually invoked from scripts are called in + non-interactive mode (assuming the default answer in case of questions), + commands typically called by the user are called in interactive mode. + The behaviour can be changed or enforced using the + <option>--interactive</option> respectively the + <option>--non-interactive</option> options. </para> -<para>In case a user decision is needed it has to be resolved by using one - of the <link linkend='i_pkg_commands'>Interactive Package Commands</link> or - <command>zypper</command> first. +<para> + Note that when using Package Commands non-interactively and combining them + with <link linkend='general_commands'>General Commands</link> the General + Commands will only be executed if the Package Command updated any packages. </para> +<refsect3 id='ni_pkg_commands'><title>Non-interactive Package Commands</title> <variablelist> <varlistentry> <term><option>dup</option></term> @@ -271,10 +273,6 @@ </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> @@ -282,7 +280,7 @@ <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. + made with this option. </para> </listitem> </varlistentry> @@ -339,6 +337,18 @@ <refsect1 id='options'><title>OPTIONS</title> <variablelist> <varlistentry> + <term><option>--interactive, -i</option></term> + <listitem> + <para>Ignores package command categorization, calls zypper in interactive mode.</para> + </listitem> + </varlistentry> + <varlistentry> + <term><option>--non-interactive, -n</option></term> + <listitem> + <para>Ignores package command categorization, calls zypper in non-interactive mode.</para> + </listitem> + </varlistentry> + <varlistentry> <term><option>--no-selfupdate</option></term> <listitem> <para>Skip checking for newer transactional-update versions.</para> @@ -351,7 +361,7 @@ </listitem> </varlistentry> <varlistentry> - <term><option>--help</option></term> + <term><option>--help, -h</option></term> <listitem> <para>Display help and exit</para> </listitem> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/transactional-update-2.5/man/transactional-update.conf.5 new/transactional-update-2.6/man/transactional-update.conf.5 --- old/transactional-update-2.5/man/transactional-update.conf.5 2018-05-07 13:36:13.000000000 +0200 +++ new/transactional-update-2.6/man/transactional-update.conf.5 2018-07-31 17:10:57.000000000 +0200 @@ -2,12 +2,12 @@ .\" Title: transactional-update.conf .\" Author: Ignaz Forster <ifors...@suse.com> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 05/07/2018 +.\" Date: 07/31/2018 .\" Manual: transactional-update.conf .\" Source: transactional-update .\" Language: English .\" -.TH "TRANSACTIONAL\-UPDAT" "5" "05/07/2018" "transactional-update" "transactional-update.conf" +.TH "TRANSACTIONAL\-UPDAT" "5" "07/31/2018" "transactional-update" "transactional-update.conf" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -65,6 +65,11 @@ This is the default value\&. If the option is invalid it will also be used as the fallback value\&. .RE .PP +kured +.RS 4 +Will inform kured (kubernetes reboot daemon) to reboot the system\&. +.RE +.PP salt .RS 4 Will create a Salt grain for signaling Velum to reboot the system\&. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/transactional-update-2.5/man/transactional-update.conf.5.html new/transactional-update-2.6/man/transactional-update.conf.5.html --- old/transactional-update-2.5/man/transactional-update.conf.5.html 2018-05-07 13:36:14.000000000 +0200 +++ new/transactional-update-2.6/man/transactional-update.conf.5.html 2018-07-31 17:10:57.000000000 +0200 @@ -15,7 +15,7 @@ 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 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 + </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.5</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 @@ -27,6 +27,8 @@ </p><p> This is the default value. If the option is invalid it will also be used as the fallback value. + </p></dd><dt id="kured"><span class="term">"<code class="literal">kured</code>"</span><a class="headerlink" title="Permalink to this term" href="#kured">¶</a></dt><dd><p> + Will inform kured (kubernetes reboot daemon) to reboot the system. </p></dd><dt id="salt"><span class="term">"<code class="literal">salt</code>"</span><a class="headerlink" title="Permalink to this term" href="#salt">¶</a></dt><dd><p> Will create a Salt grain for signaling Velum to reboot the system. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/transactional-update-2.5/man/transactional-update.conf.5.xml new/transactional-update-2.6/man/transactional-update.conf.5.xml --- old/transactional-update-2.5/man/transactional-update.conf.5.xml 2018-03-29 11:19:51.000000000 +0200 +++ new/transactional-update-2.6/man/transactional-update.conf.5.xml 2018-07-31 16:39:20.000000000 +0200 @@ -91,6 +91,14 @@ </listitem> </varlistentry> <varlistentry> + <term><literal>kured</literal></term> + <listitem> + <para> + Will inform kured (kubernetes reboot daemon) to reboot the system. + </para> + </listitem> + </varlistentry> + <varlistentry> <term><literal>salt</literal></term> <listitem> <para> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/transactional-update-2.5/man/transactional-update.index.html new/transactional-update-2.6/man/transactional-update.index.html --- old/transactional-update-2.5/man/transactional-update.index.html 2018-06-15 14:03:40.000000000 +0200 +++ new/transactional-update-2.6/man/transactional-update.index.html 2018-08-20 17:01:02.000000000 +0200 @@ -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 2.5</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.6</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' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/transactional-update-2.5/man/transactional-update.service.8.html new/transactional-update-2.6/man/transactional-update.service.8.html --- old/transactional-update-2.5/man/transactional-update.service.8.html 2018-06-15 14:03:40.000000000 +0200 +++ new/transactional-update-2.6/man/transactional-update.service.8.html 2018-08-20 17:01:02.000000000 +0200 @@ -15,7 +15,7 @@ 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 2.5</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 + </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.6</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>standalone-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 @@ -99,20 +99,22 @@ 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> - Package Commands will typically invoke <span class="command"><strong>zypper</strong></span> to perform + Package Commands will invoke <span class="command"><strong>zypper</strong></span> to perform actions on the RPM packages. Only one Package Command can be used at the same time. Can be combined with any number of <a class="link" href="#general_commands" title="General Commands">General Commands</a>. -</p><div class="refsect3"><a name="ni_pkg_commands"></a><h4>Non-interactive Package Commands</h4><p> - Non-interactive Package Commands are designed to be called from scripts and - will require no user interaction. Note that when combining Non-interactive - Package Commands with - <a class="link" href="#general_commands" title="General Commands">General Commands</a> those will only be - executed if the Package Command updated any packages. -</p><p>In case a user decision is needed it has to be resolved by using one - of the <a class="link" href="#i_pkg_commands" title="Interactive Package Commands">Interactive Package Commands</a> or - <span class="command"><strong>zypper</strong></span> first. -</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> +</p><p> + By default commands usually invoked from scripts are called in + non-interactive mode (assuming the default answer in case of questions), + commands typically called by the user are called in interactive mode. + The behaviour can be changed or enforced using the + <code class="option">--interactive</code> respectively the + <code class="option">--non-interactive</code> options. +</p><p> + Note that when using Package Commands non-interactively and combining them + with <a class="link" href="#general_commands" title="General Commands">General Commands</a> the General + Commands 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><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 @@ -127,13 +129,10 @@ <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> + </p></dd></dl></div></div><div class="refsect3"><a name="i_pkg_commands"></a><h4>Interactive Package Commands</h4><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. + made with this option. </p></dd><dt id="pkg install <RPM> ... <RPM>"><span class="term"><code class="option">pkg install</code> <em class="replaceable"><code><RPM> ... <RPM></code></em></span><a class="headerlink" title="Permalink to this term" href="#pkg%20install%20<RPM>%20...%20<RPM>">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p> A PTF or other packages in RPM format can be installed in the system. </p></dd><dt id="pkg remove <RPM> ... <RPM>"><span class="term"><code class="option">pkg remove</code> <em class="replaceable"><code><RPM> ... <RPM></code></em></span><a class="headerlink" title="Permalink to this term" href="#pkg%20remove%20<RPM>%20...%20<RPM>">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p> @@ -152,7 +151,7 @@ the current root file system is made the new default root file system. Otherwise the snapshot with <code class="option">number</code> is made the new default root filesystem. - </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> + </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="--interactive, -i"><span class="term"><code class="option">--interactive, -i</code></span><a class="headerlink" title="Permalink to this term" href="#--interactive,%20-i">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>Ignores package command categorization, calls zypper in interactive mode.</p></dd><dt id="--non-interactive, -n"><span class="term"><code class="option">--non-interactive, -n</code></span><a class="headerlink" title="Permalink to this term" href="#--non-interactive,%20-n">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>Ignores package command categorization, calls zypper in non-interactive mode.</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="--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, -h"><span class="term"><code class="option">--help, -h</code></span><a class="headerlink" title="Permalink to this term" href="#--help,%20-h">¶</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 root filesystem and /etc can be updated. There is also limited handling for adding files and directories to diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/transactional-update-2.5/man/transactional-update.timer.8.html new/transactional-update-2.6/man/transactional-update.timer.8.html --- old/transactional-update-2.5/man/transactional-update.timer.8.html 2018-06-15 14:03:40.000000000 +0200 +++ new/transactional-update-2.6/man/transactional-update.timer.8.html 2018-08-20 17:01:02.000000000 +0200 @@ -15,7 +15,7 @@ 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 2.5</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 + </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.6</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>standalone-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 @@ -99,20 +99,22 @@ 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> - Package Commands will typically invoke <span class="command"><strong>zypper</strong></span> to perform + Package Commands will invoke <span class="command"><strong>zypper</strong></span> to perform actions on the RPM packages. Only one Package Command can be used at the same time. Can be combined with any number of <a class="link" href="#general_commands" title="General Commands">General Commands</a>. -</p><div class="refsect3"><a name="ni_pkg_commands"></a><h4>Non-interactive Package Commands</h4><p> - Non-interactive Package Commands are designed to be called from scripts and - will require no user interaction. Note that when combining Non-interactive - Package Commands with - <a class="link" href="#general_commands" title="General Commands">General Commands</a> those will only be - executed if the Package Command updated any packages. -</p><p>In case a user decision is needed it has to be resolved by using one - of the <a class="link" href="#i_pkg_commands" title="Interactive Package Commands">Interactive Package Commands</a> or - <span class="command"><strong>zypper</strong></span> first. -</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> +</p><p> + By default commands usually invoked from scripts are called in + non-interactive mode (assuming the default answer in case of questions), + commands typically called by the user are called in interactive mode. + The behaviour can be changed or enforced using the + <code class="option">--interactive</code> respectively the + <code class="option">--non-interactive</code> options. +</p><p> + Note that when using Package Commands non-interactively and combining them + with <a class="link" href="#general_commands" title="General Commands">General Commands</a> the General + Commands 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><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 @@ -127,13 +129,10 @@ <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> + </p></dd></dl></div></div><div class="refsect3"><a name="i_pkg_commands"></a><h4>Interactive Package Commands</h4><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. + made with this option. </p></dd><dt id="pkg install <RPM> ... <RPM>"><span class="term"><code class="option">pkg install</code> <em class="replaceable"><code><RPM> ... <RPM></code></em></span><a class="headerlink" title="Permalink to this term" href="#pkg%20install%20<RPM>%20...%20<RPM>">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p> A PTF or other packages in RPM format can be installed in the system. </p></dd><dt id="pkg remove <RPM> ... <RPM>"><span class="term"><code class="option">pkg remove</code> <em class="replaceable"><code><RPM> ... <RPM></code></em></span><a class="headerlink" title="Permalink to this term" href="#pkg%20remove%20<RPM>%20...%20<RPM>">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p> @@ -152,7 +151,7 @@ the current root file system is made the new default root file system. Otherwise the snapshot with <code class="option">number</code> is made the new default root filesystem. - </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> + </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="--interactive, -i"><span class="term"><code class="option">--interactive, -i</code></span><a class="headerlink" title="Permalink to this term" href="#--interactive,%20-i">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>Ignores package command categorization, calls zypper in interactive mode.</p></dd><dt id="--non-interactive, -n"><span class="term"><code class="option">--non-interactive, -n</code></span><a class="headerlink" title="Permalink to this term" href="#--non-interactive,%20-n">¶</a></dt><dd xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" xmlns:exsl="http://exslt.org/common"><p>Ignores package command categorization, calls zypper in non-interactive mode.</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="--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, -h"><span class="term"><code class="option">--help, -h</code></span><a class="headerlink" title="Permalink to this term" href="#--help,%20-h">¶</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 root filesystem and /etc can be updated. There is also limited handling for adding files and directories to diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/transactional-update-2.5/sbin/Makefile.am new/transactional-update-2.6/sbin/Makefile.am --- old/transactional-update-2.5/sbin/Makefile.am 2018-06-15 13:38:30.000000000 +0200 +++ new/transactional-update-2.6/sbin/Makefile.am 2018-07-31 16:55:22.000000000 +0200 @@ -3,9 +3,7 @@ # sbin_SCRIPTS = transactional-update tu-rebuild-kdump-initrd -sbin_PROGRAMS = transactional-update-helper create_dirs_from_rpmdb -transactional_update_helper_SOURCES = transactional-update-helper.cpp -transactional_update_helper_LDADD = @LIBZYPP_LIBS@ +sbin_PROGRAMS = create_dirs_from_rpmdb create_dirs_from_rpmdb_SOURCES = create_dirs_from_rpmdb.c create_dirs_from_rpmdb_LDADD = @LIBRPM_LIBS@ CLEANFILES = transactional-update diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/transactional-update-2.5/sbin/transactional-update-helper.cpp new/transactional-update-2.6/sbin/transactional-update-helper.cpp --- old/transactional-update-2.5/sbin/transactional-update-helper.cpp 2018-06-15 13:38:30.000000000 +0200 +++ new/transactional-update-2.6/sbin/transactional-update-helper.cpp 1970-01-01 01:00:00.000000000 +0100 @@ -1,68 +0,0 @@ -/* transactional-update-helper - native helper scripts for transactional-update - - Author: Ignaz Forster <ifors...@suse.de> - Copyright (C) 2018 SUSE Linux GmbH - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <iostream> -#include <zypp/ZYppFactory.h> -#include <zypp/RepoManager.h> -using namespace std; - -void usage(string command) { - cout << "Usage: " << command << " [disable-optical]" << endl; -} - -int disable_optical() { - const zypp::Pathname &sysroot = "/"; - zypp::RepoManager repoManager(sysroot); - zypp::RepoInfoList repos = repoManager.knownRepositories(); - - if (repos.empty()) { - cerr << "No repositories found in " << sysroot << endl; - return 2; - } - - for_(it, repos.begin(), repos.end()) { - zypp::RepoInfo &repo(*it); - if (repo.url().schemeIsVolatile() && repo.enabled()) { - cout << "Disabling optical media repository " << repo.name() << "..." << endl; - repo.setEnabled(false); - try { - repoManager.modifyRepository(repo.alias(), repo); - } catch (const zypp::Exception &e) { - cerr << "Error while disabling repository '" << repo.name() << "': " << e << endl; - } - } - } - return 0; -} - -int main(int argc, char** argv) { - if (argc == 1) { - usage(argv[0]); - return 1; - } - - string command = argv[1]; - if (command == "disable-optical") { - disable_optical(); - } else { - usage(argv[0]); - } - return 0; -} - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/transactional-update-2.5/sbin/transactional-update.in new/transactional-update-2.6/sbin/transactional-update.in --- old/transactional-update-2.5/sbin/transactional-update.in 2018-06-15 13:38:30.000000000 +0200 +++ new/transactional-update-2.6/sbin/transactional-update.in 2018-08-20 16:57:14.000000000 +0200 @@ -47,13 +47,7 @@ LOGFILE="/var/log/transactional-update.log" STATE_FILE="/var/lib/misc/transactional-update.state" NEW_SNAPSHOT_FLAG="/var/lib/overlay/transactional-update.newsnapshot" -SELF_PATH="`dirname $0`" -PACKAGE_UPDATES=0 ZYPPER_AUTO_IMPORT_KEYS=0 -HAS_SEPARATE_VAR=0 -SNAPSHOT_ID="" -BACKUP_SNAPSHOT_ID="" -SNAPPER_NO_DBUS="" # Load config if [ -r ${SYSTEMCONFFILE} ]; then @@ -63,6 +57,16 @@ . ${CONFFILE} fi +# Initialize internal variables +HAS_SEPARATE_VAR=0 +FORCE_NONINTERACTIVE="" +SNAPSHOT_ID="" +BACKUP_SNAPSHOT_ID="" +SNAPSHOT_DIR="" +MOUNT_DIR="" +SNAPPER_NO_DBUS="" +TMPFILE="" + # Log stderr to log file exec 4>&2 2> >(tee -a "${LOGFILE}") @@ -99,31 +103,34 @@ echo "system." echo "" echo "General Commands:" - echo "cleanup Mark unused snapshots for snapper removal" - echo "grub.cfg Regenerate grub.cfg" - echo "bootloader Reinstall the bootloader" - echo "initrd Regenerate initrd" - echo "kdump Regenerate kdump initrd" - echo "shell Open rw shell in new snapshot before exiting" - echo "reboot Reboot after update" + echo "cleanup Mark unused snapshots for snapper removal" + echo "grub.cfg Regenerate grub.cfg" + echo "bootloader Reinstall the bootloader" + echo "initrd Regenerate initrd" + echo "kdump Regenerate kdump initrd" + echo "shell Open rw shell in new snapshot before exiting" + echo "reboot Reboot after update" 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 "dup Call 'zypper dup --no-allow-vendor-change' (n)" + echo "up Call 'zypper up' (n)" + echo "patch Call 'zypper patch' (n)" + echo "migration Updates systems registered via SCC / SMT (i)" + echo "pkg install ... Install individual packages (i)" + echo "pkg remove ... Remove individual packages (i)" + echo "pkg update ... Updates individual packages (i)" + echo "Defaults: (i) interactive command; (n) non-interactive command" echo "" echo "Standalone Commands:" - echo "rollback <number> Set given snapshot as default snapshot" + 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" + echo "--interactive, -i Use interactive mode for package command" + echo "--non-interactive, -n Use non-interactive mode for package command" + echo "--no-selfupdate Skip checking for newer version" + echo "--quiet Don't print warnings and infos to stdout" + echo "--help, -h Display this help and exit" + echo "--version Display version and exit" exit $1 } @@ -141,7 +148,7 @@ log_error() { echo `date "+%Y-%m-%d %H:%M"` "$@" >> ${LOGFILE} - echo "$@" 1>&2 + echo "$@" 1>&4 } bashlock() { @@ -199,6 +206,16 @@ # Only called in error case; reverts everything to previous state. quit() { + teardown + + # Wait for things to settle down + for delay in {1..10}; do + if [ -z "${SNAPSHOT_DIR}" -o -z "`lsof "${SNAPSHOT_DIR}" 2>/dev/null`" ]; then + break + fi + sleep $delay + done + if [ -n "${SNAPSHOT_ID}" ] ; then log_error "Removing snapshot #${SNAPSHOT_ID}..." snapper ${SNAPPER_NO_DBUS} delete ${SNAPSHOT_ID} |& tee -a ${LOGFILE} @@ -225,6 +242,66 @@ exit $1 } +# Called on exit (both on success and failure); cleans up temporary files, +# mount points and variables +teardown() { + # Unset variable + unset TRANSACTIONAL_UPDATE + + # Cleanup temporary files + rm -f ${TMPFILE} + + # The following commands only make sense if snapshot dir is set already + if [ "${SNAPSHOT_DIR}" = "" ]; then + return + fi + + # Delete temporary data before unmounting everything: + if [ ${HAS_SEPARATE_VAR} -eq 1 ]; then + rm -rf ${SNAPSHOT_DIR}/var/tmp + rm -rf ${SNAPSHOT_DIR}/var/lib/zypp + fi + + # Unmount everything we don't need anymore: + for directory in proc sys $DIR_TO_MOUNT .snapshots ; do + # Only try unmount if directory is mounted + if ! findmnt ${SNAPSHOT_DIR}/$directory >/dev/null; then + continue; + fi + umount -R ${SNAPSHOT_DIR}/$directory + if [ $? -ne 0 ]; then + log_error "ERROR: umount of $directory failed!" + fuser -v ${SNAPSHOT_DIR}/$directory >> ${LOGFILE} + lsof ${SNAPSHOT_DIR}/$directory >> ${LOGFILE} + # Try again after some time + sleep 30 + umount -R ${SNAPSHOT_DIR}/$directory + if [ $? -ne 0 ]; then + log_error "ERROR 2nd try: umount of $directory failed!" + EXITCODE=1; + fi + fi + done + if findmnt ${MOUNT_DIR} >/dev/null; then + umount -R ${MOUNT_DIR} + fi + + # Cleanup of temporary mount point + if [ -e ${MOUNT_DIR} ]; then + rmdir ${MOUNT_DIR} + fi + + # Cleanup other stuff + # Cleanup cache directory + if [ $VAR_CACHE_CLEANUP -eq 1 ]; then + rm -rf ${SNAPSHOT_DIR}/var/cache/* + fi + # systemd-tmpfiles creates directories/files even if /run is no tmpfs: + rm -rf ${SNAPSHOT_DIR}/run/* + # WARNING: /var/spool/ can contain changes through RPM! + rm -rf ${SNAPSHOT_DIR}/var/spool/* +} + reboot_via_salt() { log_info "transactional-update finished - created salt grains" if [ -f /etc/salt/grains ]; then @@ -261,6 +338,12 @@ exit 0 } +reboot_via_kured() { + log_info "transactional-update finished - informed kured" + touch /var/run/reboot-required + exit 0 +} + reboot_autodetect() { if [ -x /usr/sbin/rebootmgrctl ]; then reboot_via_rebootmgr @@ -331,7 +414,7 @@ ;; dup) DO_DUP=1 - ZYPPER_ARG="dup --no-allow-vendor-change" + ZYPPER_ARG="--no-cd dup --no-allow-vendor-change" shift ;; up|patch) @@ -343,6 +426,8 @@ if [ $# -eq 0 ]; then usage 1 fi + # Interactively run installing PTFs + ZYPPER_NONINTERACTIVE="${FORCE_NONINTERACTIVE:-}" case "$1" in install|in) ZYPPER_ARG="install" @@ -350,6 +435,9 @@ ;; remove|rm) ZYPPER_ARG="remove" + if [ -n "${ZYPPER_NONINTERACTIVE}" ]; then + ZYPPER_NONINTERACTIVE="-y" + fi shift ;; update|up) @@ -373,13 +461,18 @@ shift fi done - # Interactively run installing PTFs - ZYPPER_NONINTERACTIVE="" ;; migration) + __NO_RESET=0 DO_MIGRATION=1 - ZYPPER_NONINTERACTIVE="" - ZYPPER_ARG="migration --no-snapshots" + ZYPPER_ARG="migration --no-snapshots --no-selfupdate" + if [ -n "${FORCE_NONINTERACTIVE}" ]; then + # non interative option is named different for + # different commands ... + ZYPPER_NONINTERACTIVE="--non-interactive --auto-agree-with-licenses" + else + ZYPPER_NONINTERACTIVE="" + fi shift ;; bootloader) @@ -423,6 +516,14 @@ REBOOT_METHOD="salt" shift ;; + -i|--interactive) + ZYPPER_NONINTERACTIVE="" + shift + ;; + -n|--non-interactive) + FORCE_NONINTERACTIVE="${ZYPPER_NONINTERACTIVE}" + shift + ;; --no-selfupdate) DO_SELF_UPDATE=0 shift @@ -480,6 +581,9 @@ trap 'rm -f "$LOCKFILE" && rm -rf "${TA_UPDATE_TMPFILE}" && unset TA_UPDATE_TMPFILE' EXIT fi +# Clean up in case the application is interrupted +trap 'echo -e "\nReceived termination signal..." && quit 1' HUP INT QUIT TERM + # Load old state file if [ -f ${STATE_FILE} ]; then . ${STATE_FILE} @@ -639,9 +743,6 @@ # a registration, as this can change the zypper result. if [ -n "${ZYPPER_ARG}" -a -n "${ZYPPER_NONINTERACTIVE}" \ -a ${DO_REGISTRATION} -eq 0 ]; then - if [ $DO_DUP -eq 1 ]; then - "${SELF_PATH}"/transactional-update-helper disable-optical - fi TMPFILE=`mktemp /tmp/transactional-update.XXXXXXXXXX` zypper --xml ${ZYPPER_ARG} ${ZYPPER_NONINTERACTIVE} --dry-run "${ZYPPER_ARG_PKGS[@]}" > ${TMPFILE} @@ -649,7 +750,8 @@ 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):" log_error "${LOG_MESSAGES}" - rm -f ${TMPFILE} + rm -f ${TMPFILE} + echo "Use '--interactive' for manual problem resolution." quit 1 fi PACKAGE_UPDATES=`grep "install-summary download-size" ${TMPFILE} | sed -e 's|.*install-summary download-size=\"\(.*\)\" space-usage-diff.*|\1|g'` @@ -675,7 +777,6 @@ # Hint: The rw subvolume is not shown in grub2. log_info "Creating read-only snapshot of current system state (#${CURRENT_SNAPSHOT_ID})" BACKUP_SNAPSHOT_ID=`snapper create -p -t pre -c number -u "important=yes" -d "RO-Clone of #${CURRENT_SNAPSHOT_ID}"` - BACKUP_SNAPSHOT_DIR=/.snapshots/${BACKUP_SNAPSHOT_ID}/snapshot if [ $? -ne 0 ]; then SNAPPER_NO_DBUS="--no-dbus" BACKUP_SNAPSHOT_ID=`snapper --no-dbus create -p -t pre -c number -u "important=yes" -d "RO-Clone of #${CURRENT_SNAPSHOT_ID}"` @@ -684,6 +785,7 @@ quit 1 fi fi + BACKUP_SNAPSHOT_DIR=/.snapshots/${BACKUP_SNAPSHOT_ID}/snapshot # Make the backup snapshot read-write: btrfs property set ${BACKUP_SNAPSHOT_DIR} ro false @@ -789,6 +891,7 @@ # will delete again later. if [ ${HAS_SEPARATE_VAR} -eq 1 ]; then mkdir ${SNAPSHOT_DIR}/var/tmp + mkdir -p ${SNAPSHOT_DIR}/var/lib/zypp cp /var/lib/zypp/RequestedLocales ${SNAPSHOT_DIR}/var/lib/zypp/ fi @@ -823,29 +926,38 @@ 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} - RETVAL=${PIPESTATUS[0]} + # In non-interactive mode, we redirect everything to a log file + if [ ${DO_MIGRATION} -eq 1 ]; then + # transactional-update migration + env DISABLE_RESTART_ON_UPDATE=yes zypper ${ZYPPER_ARG} --root ${MOUNT_DIR} ${ZYPPER_NONINTERACTIVE} "${ZYPPER_ARG_PKGS[@]}" |& tee -a ${LOGFILE} + RETVAL=${PIPESTATUS[0]} + else + env DISABLE_RESTART_ON_UPDATE=yes zypper -R ${MOUNT_DIR} ${ZYPPER_ARG} ${ZYPPER_NONINTERACTIVE} "${ZYPPER_ARG_PKGS[@]}" |& tee -a ${LOGFILE} + RETVAL=${PIPESTATUS[0]} + fi else - # transactional-update migration + # in interactive mode, we don't redirect to a log file if [ ${DO_MIGRATION} -eq 1 ]; then - chroot ${MOUNT_DIR} env DISABLE_RESTART_ON_UPDATE=yes zypper ${ZYPPER_ARG} "${ZYPPER_ARG_PKGS[@]}" + # transactional-update migration + env DISABLE_RESTART_ON_UPDATE=yes zypper ${ZYPPER_ARG} --root ${MOUNT_DIR} "${ZYPPER_ARG_PKGS[@]}" RETVAL=$? - # Reset registration until reboot. Needed in both cases, - # whether an error occured or whether we had success. - test -x /usr/sbin/rollback-reset-registration && /usr/sbin/rollback-reset-registration - if [ $RETVAL -eq 0 ]; then - # Create the trigger to re-register the system as new version after next - # 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[@]}" RETVAL=$? fi fi + # in case of migration, we need to do a little bit more: + if [ ${DO_MIGRATION} -eq 1 ]; then + # Reset registration until reboot. Needed in both cases, + # whether an error occured or whether we had success. + test -x /usr/sbin/SUSEConnect && /usr/sbin/SUSEConnect --rollback + if [ $RETVAL -eq 0 ]; then + # Create the trigger to re-register the system as new version after next + # reboot. + check_registration_on_next_reboot + fi + fi if [ $RETVAL -eq 0 -o $RETVAL -eq 102 -o $RETVAL -eq 103 -o \( $DO_DUP -eq 0 -a $RETVAL -eq 106 \) ]; then REBUILD_KDUMP_INITRD=1 @@ -906,45 +1018,7 @@ env PS1="transactional update # " chroot ${MOUNT_DIR} bash 2>&4 fi - # Unset variable - unset TRANSACTIONAL_UPDATE - - # Delete temporary data before unmounting everything: - if [ ${HAS_SEPARATE_VAR} -eq 1 ]; then - rm -rf ${SNAPSHOT_DIR}/var/tmp - rm -f ${SNAPSHOT_DIR}/var/lib/zypp/RequestedLocales - fi - - # Unmount everything we don't need anymore: - for directory in proc sys $DIR_TO_MOUNT .snapshots ; do - umount -R ${SNAPSHOT_DIR}/$directory - if [ $? -ne 0 ]; then - log_error "ERROR: umount of $directory failed!" - fuser -v ${SNAPSHOT_DIR}/$directory >> ${LOGFILE} - lsof ${SNAPSHOT_DIR}/$directory >> ${LOGFILE} - # Try again after some time - sleep 30 - umount -R ${SNAPSHOT_DIR}/$directory - if [ $? -ne 0 ]; then - log_error "ERROR 2nd try: umount of $directory failed!" - EXITCODE=1; - fi - fi - done - umount -R ${MOUNT_DIR} - - # Cleanup of temporary mount point - rmdir ${MOUNT_DIR} - - # Cleanup other stuff - # Cleanup cache directory - if [ $VAR_CACHE_CLEANUP -eq 1 ]; then - rm -rf ${SNAPSHOT_DIR}/var/cache/* - fi - # systemd-tmpfiles creates directories/files even if /run is no tmpfs: - rm -rf ${SNAPSHOT_DIR}/run/* - # WARNING: /var/spool/ can contain changes through RPM! - rm -rf ${SNAPSHOT_DIR}/var/spool/* + teardown # Somersault: if [ $EXITCODE -eq 0 ]; then @@ -998,6 +1072,9 @@ auto) reboot_autodetect ;; + kured) + reboot_via_kured + ;; salt) reboot_via_salt ;;