The command line is by far the easiest way to update Tumbleweed

Updates of Tumbleweed are distribution upgrades

Display the list of repos:

**erlangen:~ #** **zypper repos --alias --uri --refresh --show-enabled-only --priority** 
#  | Alias         | Enabled | GPG Check | Refresh | Priority | URI 
---+---------------+---------+-----------+---------+----------+------------------------------------------------------- 
 6 | Packman       | Yes     | (r ) Yes  | Yes     |   90     | https://ftp.fau.de/packman/suse/openSUSE_Tumbleweed/ 
20 | non-oss       | Yes     | (r ) Yes  | Yes     |   99     | https://download.opensuse.org/tumbleweed/repo/non-oss/ 
22 | oss           | Yes     | (r ) Yes  | Yes     |   99     | https://download.opensuse.org/tumbleweed/repo/oss/ 
29 | update        | Yes     | (r ) Yes  | Yes     |   99     | https://download.opensuse.org/update/tumbleweed/ 
10 | google-chrome | Yes     | (r ) Yes  | No      |  100     | https://dl.google.com/linux/chrome/rpm/stable/x86_64 
17 | jalbum        | Yes     | (  ) No   | Yes     |  100     | https://jalbum.net/download/software/yumrepo/ 
19 | myrepo        | Yes     | (  ) No   | Yes     |  100     | dir:/home/karl/Downloads/myrepo 
**erlangen:~ #**

Priorities do matter:

openSUSE Conference 2018 - Repository priorities for the real world user

Check for pending updates and download packages:

**erlangen:~ #** **zypper --non-interactive dist-upgrade --download-only --dry-run**  
Loading repository data... 
Reading installed packages... 
Warning: You are about to do a distribution upgrade with all enabled repositories. Make sure these repositori
es are compatible before you continue. See 'man zypper' for more information about this command. 
Computing distribution upgrade... 

The following package is going to be upgraded:
  google-chrome-stable 

1 package to upgrade. 
Overall download size: 0 B. Already cached: 87.5 MiB. Download only. 
**Continue? [y/n/v/...? shows all options] (y): **y 
In cache google-chrome-stable-106.0.5249.61-1.x86_64.rpm                (1/1),  87.5 MiB (286.1 MiB unpacked) 

Checking for file conflicts: ..........................................................................[done] 
**erlangen:~ #**

Install pending packages:

**erlangen:~ #** **zypper --non-interactive dist-upgrade** 
Loading repository data... 
Reading installed packages... 
Warning: You are about to do a distribution upgrade with all enabled repositories. Make sure these repositori
es are compatible before you continue. See 'man zypper' for more information about this command. 
Computing distribution upgrade... 

The following package is going to be upgraded:
  google-chrome-stable 

1 package to upgrade. 
Overall download size: 0 B. Already cached: 87.5 MiB. After the operation, additional 2.2 MiB will be used. 
**Continue? [y/n/v/...? shows all options] (y): **y 
In cache google-chrome-stable-106.0.5249.61-1.x86_64.rpm                (1/1),  87.5 MiB (286.1 MiB unpacked) 

Checking for file conflicts: ..........................................................................[done] 
(1/1) Installing: google-chrome-stable-106.0.5249.61-1.x86_64 .........................................[done] 
There are running programs which still use files and libraries deleted or updated by recent upgrades. They sh
ould be restarted to benefit from the latest updates. Run 'zypper ps -s' to list these programs. 
  
**erlangen:~ #**

Aliases

**erlangen:~ #** alias repos dupd dupi 
alias repos='zypper repos --alias --uri --refresh --show-enabled-only --priority' 
alias dupd='zypper --non-interactive dist-upgrade --dry-run --download-only' 
alias dupi='zypper --non-interactive dist-upgrade' 
**erlangen:~ #**

Configuring defaults

onlyRequires causes the solver to ignore recommended packages. Allowing downgrade and vendor change reduces number of questions asked by the solver:

**erlangen:~ #** **grep ^solver /etc/zypp/zypp.conf** 
solver.onlyRequires = true 
solver.dupAllowDowngrade = true 
solver.dupAllowVendorChange = true 
**erlangen:~ #** 

** Running dist-upgrade as a systemd service**

Benefits:

  • Services are running in the system slice
  • Journal logging available

Service for downloading and executing a dry run:

**erlangen:~ #** **systemctl cat dup.service** 
**# /etc/systemd/system/dup.service**
[Unit] 
Description=Dist Upgrade Download 

[Service] 
ExecStart=/usr/bin/zypper --non-interactive dist-upgrade --dry-run --download-only 
**erlangen:~ #**

Querying the journal:

**erlangen:~ #** **journalctl --boot 0 --unit dup --identifier zypper --grep packages** 
Sep 29 21:19:58 erlangen zypper[27919]: Reading installed packages... 
Sep 29 21:19:59 erlangen zypper[27919]: The following 182 packages are going to be upgraded: 
Sep 29 21:19:59 erlangen zypper[27919]: 182 packages to upgrade, 1 new. 
**erlangen:~ #**