Hi all,

I'm improving the YaST self-update [1] to avoid applying wrong patches to the installer (i.e. using the SP1 or SP3 update repository in the SP2 installer).

I have already implemented the downgrade check [2] (e.g. using the SP1 updates
in SP2), now I'd like to also implement the other check (using the future SP3
updates in SP2).

However, this case is a bit more complicated, we need to somehow differ between
the "new" (a valid update) and "too new" (update for a newer SP release) 
packages.
And we need some reliable solution for that to avoid false errors.


Here is a summary of my ideas, please comment them or add your own.


1. Compare the major and minor YaST package versions

  As the YaST package versions are bound to specific SP release (e.g.
  4.1.x for SP1, 4.2.x for SP2) we could simply check that the updated
  package version has the same major and minor version as the installed one.
  I.e. allow a difference only in the patch number.

  But unfortunately this is not bullet-proof, we still have some YaST packages
  in version 4.1.x even in SP2. That should be hopefully fixed during branching
  SP2 in Git but it still shows that it's not 100% percent reliable.


2. The RPM "Distribution" value

  Every package has a "Distribution" flag (check with
  "rpm --queryformat '%{DISTRIBUTION}' -q ..." command).

  Unfortunately even for the SP2 the value is still "SUSE Linux Enterprise 15"
  so we cannot differ between the GA/SP1/SP2/... packages. :-/

  And I think it would not work well with unofficial testing packages built
  in your OBS branch project as the "Distribution" then contains the "home:..."
  prefix. So testing would be more difficult.


3. Custom provides flag

  We could possibly use some custom RPM flag, something like
  "Provides: yast-self-update-version(15.2)" added when releasing a self-update.
  We could compare it with the value stored in the /etc/os-release file in the
  inst-sys.

  Because it's enough to have this flag only once in the self-update repository
  we would add it just to the first YaST package released as a self-update.
  The other package updates released later would not need to have this flag.

  I deliberately selected the "15.2" value which corresponds to the "VERSION_ID"
  tag in the /etc/os-release file because this is the same for both SLE-15-SP2
  and Leap 15.2 so we could easily build the same self-update packages also for
  Leap 15.2 if needed.


Any comments, ideas?

Thank you in advance!


[1] https://github.com/yast/yast-installation/blob/master/doc/SELF_UPDATE.md
[2] https://github.com/yast/yast-installation/pull/842

--
Ladislav Slezák
YaST Developer

SUSE LINUX, s.r.o.
Corso IIa
Křižíkova 148/34
18600 Praha 8
--
To unsubscribe, e-mail: yast-devel+unsubscr...@opensuse.org
To contact the owner, e-mail: yast-devel+ow...@opensuse.org

Reply via email to