Skip to content

Offline Media Product Dependencies

Ladislav Slezák edited this page Jul 16, 2019 · 2 revisions

⚠️ WIP!

Evaluating the Product Dependencies for the Offline Media

The Problem

When adding the Packages DVD in SLE15 the user originally had to know the dependencies between the extensions and modules and was required to select the dependent modules manually. That was error prone and user unfriendly.

The Solution

The Technical Details

The dependencies are computed dynamically using the package solver, YaST tries marking each product for installation and sees which other products were selected to install as a dependency.

Because there are quite a lot of repositories on the Packages DVD (about 25) this needs to be quick. It turned out that using the full libzypp package manager is quite slow. The problem is that libzypp verifies the GPG signatures for the metadata, builds the binary caches, etc... That is relatively fast for one repository, it takes about one or two seconds, but when it is done 25-times then it takes more then 30 seconds. And that is too much.

To make it faster YaST loads directly the repository metadata into the libsolv dependency solver using its Ruby bindings. With this solution it takes only about two seconds to evaluate all 25 repositories.

When the user selects a repository then it is added to the system using the usual libzypp library. That means all GPG signatures are always later verified, but only for the repositories which were selected by the user in the end.

The Pull Request

The change has been implemented in yast2-packager-4.2.17 (PR) and is available in SLE15-SP2 (and newer).

Screenshots

Graphical (dark SLE installation theme)

offline_addons

Text Mode

new_addon_ncurses