This was both a blessing and curse IME, as in during the recent Packman Mesa updates which were rolled out gradually over the course of 2-3 days, the nightly dup failed without changing vendor. Allowing vendor change resulted in a successful dup, but mixing Mesa packages from both openSUSE and Packman resulted in issues for some users including myself, losing the ability to use Wayland session in Gnome.
Cleaning dependencies have sometimes resulted in a lot of packages (useful) being removed by default. I now check the output with and without clean deps in dry run mode before choosing an appropriate course of action.
erlangen:~ # journalctl -b -1 -u dup -g 'following|Consumed'
Apr 04 18:46:45 erlangen zypper[6996]: The following 3864 packages are going to be upgraded:
Apr 04 18:46:45 erlangen zypper[6996]: The following 35 patterns are going to be upgraded:
Apr 04 18:46:45 erlangen zypper[6996]: The following product is going to be upgraded:
Apr 04 18:46:45 erlangen zypper[6996]: The following 20 NEW packages are going to be installed:
Apr 04 18:46:45 erlangen zypper[6996]: The following package requires a system reboot:
Apr 04 19:02:48 erlangen systemd[1]: dup.service: Consumed 11min 32.408s CPU time.
erlangen:~ #
Thanks, I think I understand your setup/workflow better now.
solver.onlyRequires = true means zypper would only pull in the absolute minimum and everything else would have to be explicitly installed which would prevent any accidental deletions by solver.cleandepsOnRemove = true.
solver.dupAllowVendorChange = true with correct repo priorities means zypper would pull in the highest version from the available vendors without complaining. Performing dup every week or two (possibly on the weekends?) insulates you from Packman for example being a few days late to build their new/higher version of packages, thereby preventing flip-flopping between the two vendors.
6700k:~ # head /etc/zypp/zypp.conf
## Configuration file for software management
## /etc/zypp/zypp.conf
##
## Boolean values are 0 1 yes no on off true false
[main]
techpreview.ZYPP_SINGLE_RPMTRANS=1
##
6700k:~ #
ZYPP_IS_RUNNING=1 Set during commit so packages pre/post/trigger scripts can detect whether rpm was called from within libzypp.
ZYPP_SINGLE_RPMTRANS=1 Enable alternative and !!!experimental!!! commit strategy where all rpm operations are executed in a single rpm transaction, which results in much faster commits.
Backend: classic_rpmtrans
6700k:~ # journalctl -b -1 -u dup -g 'following|Consumed'
Apr 06 05:04:27 6700k zypper[8741]: The following 2605 packages are going to be upgraded:
Apr 06 05:04:27 6700k zypper[8741]: The following 32 patterns are going to be upgraded:
Apr 06 05:04:27 6700k zypper[8741]: The following product is going to be upgraded:
Apr 06 05:04:27 6700k zypper[8741]: The following 17 NEW packages are going to be installed:
Apr 06 05:04:27 6700k zypper[8741]: The following 2 packages are going to be REMOVED:
Apr 06 05:04:27 6700k zypper[8741]: The following package requires a system reboot:
Apr 06 05:20:51 6700k systemd[1]: dup.service: Consumed 11min 39.317s CPU time.
6700k:~ #
Backend: single_rpmtrans
6700k:~ # journalctl -b -u dup -g 'following|Consumed'
Apr 06 05:28:15 6700k zypper[3292]: The following 2605 packages are going to be upgraded:
Apr 06 05:28:15 6700k zypper[3292]: The following 32 patterns are going to be upgraded:
Apr 06 05:28:15 6700k zypper[3292]: The following product is going to be upgraded:
Apr 06 05:28:15 6700k zypper[3292]: The following 17 NEW packages are going to be installed:
Apr 06 05:28:15 6700k zypper[3292]: The following 2 packages are going to be REMOVED:
Apr 06 05:28:15 6700k zypper[3292]: The following package requires a system reboot:
Apr 06 05:39:53 6700k systemd[1]: dup.service: Consumed 9min 6.579s CPU time.
6700k:~ #
11min 39s vs. 9min 6s corresponds to a 28% speedup. Commit time is a small fraction of total time needed to upgrade,
Indeed, the main time sink right now is the sequential processing of RPM scripts.
According to zypp devs, this is an upstream RPM drawback thatās unlikely to be fixed improved in the near future.
Yep. Both zypper and rpm are running single threads. While duping infamous host erlangen is virtually idle. Multi-threaded code nearly always keeps all cores busy:
Yep. Infamous host erlangen is optimized with regard to performance/ā¬ as well as performance/maintenance.
The builtin backup drive holds another Tumbleweed installation which gets quarterly upgrades:
erlangen:/Backup # journalctl --directory /Backup/@/var/log/journal/ -b -u transactional-update.service -g 'following|Consumed'
Apr 07 12:13:35 backup transactional-update[2951]: The following 2664 packages are going to be upgraded:
Apr 07 12:13:35 backup transactional-update[2951]: The following 27 patterns are going to be upgraded:
Apr 07 12:13:35 backup transactional-update[2951]: The following product is going to be upgraded:
Apr 07 12:13:35 backup transactional-update[2951]: The following 33 NEW packages are going to be installed:
Apr 07 12:13:35 backup transactional-update[2951]: The following 10 packages are going to be REMOVED:
Apr 07 12:13:35 backup transactional-update[2951]: The following package requires a system reboot:
Apr 07 12:32:06 backup transactional-update[23336]: The following package is going to be REMOVED:
Apr 07 12:32:08 backup transactional-update[1707]: Warning: The following files were changed in the snapshot, but are shadowed by
Apr 07 12:32:08 backup systemd[1]: transactional-update.service: Consumed 5min 41.734s CPU time.
erlangen:/Backup #
Consumed cpu time is 5min 41s. Total upgrade time including download at 6 MB/s is 18min 33s.
Had a major DE upgrade from Gnome 45 ā 46 on Slowroll today. Smooth upgrade:
pavin@suse-pc:~> sudo journalctl --since today -u bkupd.service -g 'following|consumed'
Apr 09 03:17:51 suse-pc atomic-update[31107]: The following item is locked and will not be changed by any action:
Apr 09 03:17:51 suse-pc atomic-update[31107]: The following 2069 packages are going to be upgraded:
Apr 09 03:17:51 suse-pc atomic-update[31107]: The following 19 patterns are going to be upgraded:
Apr 09 03:17:51 suse-pc atomic-update[31107]: The following product is going to be upgraded:
Apr 09 03:17:51 suse-pc atomic-update[31107]: The following 256 packages are going to be downgraded:
Apr 09 03:17:51 suse-pc atomic-update[31107]: The following 11 packages are going to be reinstalled:
Apr 09 03:17:51 suse-pc atomic-update[31107]: The following 43 NEW packages are going to be installed:
Apr 09 03:17:51 suse-pc atomic-update[31107]: The following 30 packages are going to be REMOVED:
Apr 09 03:50:03 suse-pc systemd[1]: bkupd.service: Consumed 1h 37min 14.888s CPU time.
thinkbook:~ # journalctl -b -u aup -g 'following|Consumed'
Apr 13 08:31:37 thinkbook atomic-update[11434]: The following 2 items are locked and will not be changed by any action:
Apr 13 08:31:37 thinkbook atomic-update[11434]: The following 326 packages are going to be upgraded:
Apr 13 08:31:37 thinkbook atomic-update[11434]: The following 10 patterns are going to be upgraded:
Apr 13 08:31:37 thinkbook atomic-update[11434]: The following product is going to be upgraded:
Apr 13 08:31:37 thinkbook atomic-update[11434]: The following NEW package is going to be installed:
Apr 13 08:32:53 thinkbook systemd[1]: aup.service: Consumed 1min 9.953s CPU time.
thinkbook:~ #
I am wondering about snapshots #506 and #507:
thinkbook:~ # snapper list
# | Type | Pre # | Date | User | Cleanup | Description | Userdata
-----+--------+-------+--------------------------+------+---------+-----------------------+----------------
0 | single | | | root | | current |
1- | single | | Sat Jun 3 10:46:58 2023 | root | | first root filesystem |
474 | pre | | Tue Mar 26 21:51:46 2024 | root | number | zypp(zypper) | important=yes
475 | post | 474 | Tue Mar 26 21:52:01 2024 | root | number | | important=yes
482 | pre | | Thu Mar 28 05:53:53 2024 | root | number | zypp(zypper) | important=yes
493 | pre | | Sat Mar 30 18:35:24 2024 | root | number | zypp(zypper) | important=no
494 | post | 493 | Sat Mar 30 18:35:27 2024 | root | number | | important=no
495 | pre | | Sat Mar 30 22:56:51 2024 | root | number | zypp(zypper) | important=yes
496 | post | 495 | Sat Mar 30 23:01:31 2024 | root | number | | important=yes
497 | pre | | Thu Apr 4 21:25:24 2024 | root | number | zypp(zypper) | important=yes
498 | post | 497 | Thu Apr 4 21:25:56 2024 | root | number | | important=yes
499 | pre | | Thu Apr 4 21:26:26 2024 | root | number | zypp(zypper) | important=yes
500 | post | 499 | Thu Apr 4 21:26:28 2024 | root | number | | important=yes
501 | pre | | Mon Apr 8 15:01:34 2024 | root | number | zypp(zypper) | important=yes
502 | post | 501 | Mon Apr 8 15:02:31 2024 | root | number | | important=yes
503 | pre | | Sat Apr 13 08:24:43 2024 | root | number | zypp(zypper) | important=yes
504 | post | 503 | Sat Apr 13 08:24:48 2024 | root | number | | important=yes
505+ | single | | Sat Apr 13 08:31:34 2024 | root | number | Atomic update of #1 | atomic=finished
506 | pre | | Sat Apr 13 08:31:37 2024 | root | number | zypp(zypper) | important=yes
507 | post | 506 | Sat Apr 13 08:32:52 2024 | root | number | | important=yes
thinkbook:~ #
atomic-update (AU) without options --apply and --reboot and with option --no-verify is only recommended when performing aup interactively.
Otherwise high risk of losing changes made to root filesystem after aup and relatively lower risk of rebooting into or applying a faulty update that breaks existing systemd services. The latter part is where AU has some advantage over TU.
These are read-only snapshots created by the zypper plugin pre/post zypper action. Useful to keep it even when using AU as AU/TU snaps are read-write and thereās the potential to clobber it. No such risk with the read-only snaps even if everything goes catastrophically wrong.
thinkbook:~ # snapper list
# | Type | Pre # | Date | User | Cleanup | Description | Userdata
-----+--------+-------+--------------------------+------+---------+-----------------------+--------------
0 | single | | | root | | current |
1* | single | | Sat Jun 3 10:46:58 2023 | root | | first root filesystem |
501 | pre | | Mon Apr 8 15:01:34 2024 | root | number | zypp(zypper) | important=yes
502 | post | 501 | Mon Apr 8 15:02:31 2024 | root | number | | important=yes
503 | pre | | Sat Apr 13 08:24:43 2024 | root | number | zypp(zypper) | important=yes
504 | post | 503 | Sat Apr 13 08:24:48 2024 | root | number | | important=yes
505 | pre | | Sat Apr 13 12:26:22 2024 | root | number | zypp(zypper) | important=yes
506 | post | 505 | Sat Apr 13 12:27:37 2024 | root | number | | important=yes
507 | pre | | Sat Apr 13 19:57:37 2024 | root | number | zypp(zypper) | important=yes
508 | post | 507 | Sat Apr 13 19:58:10 2024 | root | number | | important=yes
509 | pre | | Sat Apr 13 19:58:39 2024 | root | number | zypp(zypper) | important=yes
510 | post | 509 | Sat Apr 13 19:58:42 2024 | root | number | | important=yes
511 | pre | | Sun Apr 14 03:56:42 2024 | root | number | zypp(zypper) | important=no
512 | post | 511 | Sun Apr 14 03:57:10 2024 | root | number | | important=no
thinkbook:~ #
Deleted subvolume created by AU.
zypper dist-upgrade worked as expected:
thinkbook:~ # journalctl -b -2 -u dup| grep -EA2 'following|Consumed|Tumbleweed'
Apr 13 19:57:37 thinkbook zypper[12293]: The following 75 packages are going to be upgraded:
Apr 13 19:57:37 thinkbook zypper[12293]: akonadi-calendar akonadi-calendar-tools akonadi-calendar-tools-lang akonadi-import-wizard akonadi-import-wizard-lang akonadi-plugin-calendar akregator akregator-lang calendarsupport cpupower cpupower-bash-completion cpupower-lang eventviews grep grep-lang incidenceeditor kaccounts-providers kaccounts-providers-lang kalendarac kdepim-addons kdepim-addons-lang kdepim-runtime kdepim-runtime-lang kdeplasma6-addons kdeplasma6-addons-lang khelpcenter khelpcenter-lang kmail kmail-application-icons kmail-lang kontact kontact-lang korganizer korganizer-lang ktnef lensfun-data libcpupower1 libKPim6AkonadiCalendar6 libKPim6AkonadiCalendar6-lang libKPim6CalendarSupport6 libKPim6CalendarSupport6-lang libKPim6EventViews6 libKPim6EventViews6-lang libKPim6ImportWizard6 libKPim6IncidenceEditor6 libKPim6IncidenceEditor6-lang libKPim6MailCommon6 libksieve libksieve6 libksieve-lang liblensfun1 mailcommon mailcommon-lang mbox-importer mbox-importer-lang messagelib messagelib-lang openSUSE-build-key openSUSE-release openSUSE-release-appliance-custom pam pam-config pam-manpages pim-data-exporter pim-data-exporter-lang pim-sieve-editor pim-sieve-editor-lang plasma6-nm plasma6-nm-lang plasma6-nm-openconnect plasma6-nm-openvpn plasma6-nm-pptp postfix signon-ui update-alternatives
Apr 13 19:57:37 thinkbook zypper[12293]: The following product is going to be upgraded:
Apr 13 19:57:37 thinkbook zypper[12293]: openSUSE Tumbleweed
Apr 13 19:57:37 thinkbook zypper[12293]: 20240411-0 -> 20240412-0
Apr 13 19:57:37 thinkbook zypper[12293]: The following NEW package is going to be installed:
Apr 13 19:57:37 thinkbook zypper[12293]: kernel-default-6.8.5-1.1
Apr 13 19:57:37 thinkbook zypper[12293]: The following package requires a system reboot:
Apr 13 19:57:37 thinkbook zypper[12293]: kernel-default-6.8.5-1.1
Apr 13 19:57:37 thinkbook zypper[12293]: 75 packages to upgrade, 1 new.
--
Apr 13 19:58:10 thinkbook systemd[1]: dup.service: Consumed 32.437s CPU time.
thinkbook:~ #
These are read-only snapshots created by the zypper plugin pre/post zypper action. Useful to keep it even when using AU as AU/TU snaps are read-write and thereās the potential to clobber it. No such risk with the read-only snaps even if everything goes catastrophically wrong.
atomic-update is indeed a safe and convenient way to perform system updates:
without interfering with the running system
roll back if necessary without damaging the system.
I havenāt read this thread fully but just want to point out there are existing packaged solutions with systemd timers for updates/upgrades, one doesnāt need to re-invent the wheel.
For example os-update is available on Leap and Tumbleweed.