in vbox guest, what controls yast2/zypper wanting to install virtualbox-guest-*

I know I can mark virtualbox-guest-* as taboo (which goes into /etc/zypp/locks) to avoid re-installation (as I manually installed guest additions), but what configuration / chunk of code knows to otherwise install virtualbox-guest-* packages? In Yast2, right click “show solver information” has been broken for a long time. Is this hard-wired into Yast2? Is there an obscure config file added by the installer that lists these packages as required as the base installation?

I enumerated all installed packages, and listed their requires. None ask for virtualbox-guest-* so how is it being demanded?

Perhaps /var/cache/zypp/solv/repo-{oss,update}/solv is the control point?

That’s not quite true. :wink:

You need to install libqdialogsolver1 for this functionality.
This was broken for some time (basically it installed the files to the wrong place after some change in libzypp), then it got fixed about a year ago. (I know, as it was me that pushed the online update for 12.3 and 13.1… :wink: )
But now the problem is that YaST has been ported to Qt5 for 13.2, while libqdialogsolver is still using Qt4 (actually much Qt3 compatibility stuff which is not available in Qt5 any more, otherwise it would have been ported already), causing YaST to crash. So it is disabled for now, until it is ported to Qt5.

Is this hard-wired into Yast2?

No.

Is there an obscure config file added by the installer that lists these packages as required as the base installation?

No.

I enumerated all installed packages, and listed their requires. None ask for virtualbox-guest-* so how is it being demanded?

The packages specify that they “supplement” certain “hardware” (virtual hardware in this case, namely the emulated video card). If that hardware is present, the package management treats that package as “recommended” and tries to install it by default (the same happens with the nvidia driver packages e.g.).

In detail, virtualbox-guest-tools has this line in the specfile:

Supplements:    modalias(pci:v000080EEd0000BEEFsv*sd*bc*sc*i*)

which basically means “install this package if a PCI device with a matching id is present”.

virtualbox-guest-x11 (the Xorg video driver) has this:

Supplements:    modalias(xorg-x11-server:pci:v000080EEd0000BEEFsv*sd*bc*sc*i*)

which is similar, but only triggers if xorg-x11-server is installed as well.

And the virtualbox-guest-kmp-xxx package is required by those other two.

Thanks again, wolfi323. Actually, I see this is a semi-regular question, though stated in different ways.

(And I am guessing all such rpm info is summarized in the solv file somehow, since nobody downloads all the packages to get all the rules and recommendations!)

Yes.
All the dependencies information of the packages (along with their name, description, etc) are stored in the repo’s metadata, which zypper/YaST downloads when it refreshes the configured repositories.
The packages themselves are only downloaded when you install them of course.