YaST/Development/Minimizing YaST Cross-Dependencies
From openSUSE
Contents |
About
There are/were several cross-dependencies in YaST RPMs in openSUSE 10.3. These cross-dependencies make almost impossible to create install minimal system with dependencies fully-satisfied.
I've started a discussion about this theme at yast-devel mailing-list.
Goals
- Less cross-dependencies
- No build-cycles
Achievements
Well, it's still not complete but there are several achievements done.
Used Tools
- For checking the dependencies, I often used my check_deps script.
- For generating the dependency data-files I used gen_logic_deps script.
- For generating only limited segments of dependency-graphs I used gen_logic_deps_nodes script.
Big Picture
Here you can see a big picture displaying all YaST RPMs that some other YaST RPM depens on. The base package yast2.rpm is not visible because every other single YaST package depends on it.
An arrow-representation means:
this-package -> is required by this-one
openSUSE 10.3
openSUSE 11.0
YaST Runlevel
openSUSE 10.3
- yast2-runlevel required:
- yast2-update required:
- yast2-storage...
- yast2-country...
- yast2-packager...
- yast2-update required:
openSUSE 11.0
- yast2-runlevel doesn't require any additional YaST module
YaST Update
openSUSE 10.3
Here you can see two dependency-loops:
- yast2-update <-> yast2-packager
- yast2-update <-> yast2-storage
The dependency loop actually means that by importing:
- yast2-packager
- yast2-update was required as well
- all RPM dependencies of yast2-update were required as well
- yast2-update was required as well
by importing:
- yast2-storage
- yast2-update was required as well
- all RPM dependencies of yast2-update were required as well
- yast2-update was required as well
openSUSE 11.0
Those dependency loops were removed.
Additionally, these YaST modules don't require yast2-update anymore:
- yast2-bootloader
- yast2-runlevel
YaST Mouse
openSUSE 10.3
- autoyast2-installation required
- yast2-mouse
- and many other YaST modules...
- yast2-mouse required
- autoyast2-installation
So, if any other YaST module had required yast2-mouse, dependency solver would have added all RPM dependencies of autoyast2-installation (which there were many).
Package yast2-mouse is required by yast2-installation and yast2-packager which is needed by many (14) other packages.
openSUSE 11.0
- yast2-mouse doesn't require autoyast2-installation anymore
- By requiring yast2-mouse no other YaST package is needed
YaST Storage
openSUSE 10.3
- yast2-storage required autoyast2-installation
- autoyast2-installation required yast2-storage
- yast2-storage was required by several other modules (that are required by many other YaST modules)
By requiring either yast2-storage or autoyast2-installation, all RPM dependencies of the other one would have been required too.
openSUSE 11.0
- the dependency of yast2-storage on autoyast2-installation has been broken
and more :)









