new seeds feature: alternatives in germinate 2.4.2

Julian Andres Klode julian.klode at canonical.com
Thu Aug 31 16:23:01 UTC 2023


o/

This week I worked on a new feature in germinate that very
much improves our ability to express dependencies in the
meta packages:

You can now list alternatives for seed entries. For example,
and this is the reason that triggered this feature:

* systemd-timesyncd | time-daemon

How does this work? Germinate will continue to seed the first
package as before, it generally ignores any alternatives present,
but will add them back when generating meta package dependencies.

This means that only the first package ends up getting a Task
field, and hence installation during image build - which uses
the task feature of apt (apt install task-name^) is still as
predictable as before - the resolving there doesn't change
(task-name^ expands to all packages with Task: task-name).

However, you can then later replace the first package with
an alternative. For example, after installing the cloud-minimal
task, you can then install chrony and it will replace systemd-timesyncd
and satisfy the | time-daemon part of ubuntu-cloud-minimal's
dependency.

You can also install the meta package and an alternative
together, but do note that apt may also pick alternatives
for other stuff you did not intend (e.g. if a package was
seeded that depends on firefox | www-browser and you install
the metapackage and have another www-browser installed, it
would not install firefox whereas apt install seed^ would
still install firefox despite you having another www-browser),
so generally you want to rely on the task field to install
and then install anything conflicting with that later.

I expect this is mostly useful for virtual packages with
a default provider like time-daemon above. It is standard
practice for debs to always have `default | virtual-package`
as the dependency, and now we can express that in the
metapackages as well.

Please make sure to use germinate 2.4.2 which will land
in mantic probably tomorrow (it needs to be synced from
Debian) to update ubuntu-meta to ensure that the alternatives
are present.

Thank you!

-- 
debian developer - deb.li/jak | jak-linux.org - free software dev
ubuntu core developer                              i speak de, en
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.ubuntu.com/archives/ubuntu-devel/attachments/20230831/e2dc8fbb/attachment.sig>


More information about the ubuntu-devel mailing list