GERMINATE-UPDATE-METAPACKAGE(1)

πŸ“¦
version 2.50.2+willsync2 Β· 4 versions
, in ubuntu stonking

✨ NAME ✨

germinate-update-metapackage β€” bestie, this one updates a whole set of metapackages that were generated from seeds πŸ’–


πŸŽ€ SYNOPSIS πŸŽ€

germinate-update-metapackage [--vcs] [--output-directory dir] [dist]

πŸ¦‹ DESCRIPTION πŸ¦‹

okay so picture this: a metapackage is a package that is literally just a list of dependencies and nothing else β€” no code, no vibes, just "you need all of these besties". And germinate-update-metapackage is the girl who helps you build and update those metapackages, sourced from a list of seed packages ✨

what she actually does:

  • updates the binary package stanzas in debian/control so they reflect whatever's currently in the seeds πŸ”₯
  • updates debian/changelog with a description of all the changes she made πŸ“

she requires a configuration file called update.cfg sitting in the current directory β€” the format is described down below, don't skip it πŸ’…

if you give her a non-option argument, that argument is the distribution she should generate metapackages for (think like "unstable"), periodt.


πŸ’… OPTIONS πŸ’…

  • --nodch β€” do NOT touch debian/changelog. hands off. she'll leave it exactly as she found it πŸ™ˆ
  • --vcs β€” check out the seeds from a version control system instead of fetching them straight from a URL. this needs bzr or git installed, whichever one applies ✨ the version control system in question is guessed from the seed_base URL in the configuration file β€” she tries git first, then bzr, if that URL is being ambiguous. for git: the part after the rightmost . character of seed_dist (if there is any) gets treated as the branch name to check out. yes bestie, that is a rather strange style β€” it's for backward compatibility, she doesn't make the rules 😭
  • --bzr β€” check out the seeds from the bzr branch defined in the configuration file instead of fetching them directly from the URL defined there. needs bzr installed. > ⚠️ this option is deprecated and only kept around for backward compatibility β€” use --vcs instead, fr fr.
  • -o, --output-directory dir β€” output the package lists into the directory you specify πŸ‘‘

🌸 CONFIGURATION FILE 🌸

update.cfg uses Python's ConfigParser configuration file syntax, and it supports interpolation as defined by SafeConfigParser, iykyk.

the structure:

  • it should have a DEFAULT section with a dist key indicating the default distribution 🫢
  • and a dist section (corresponding to that distribution)
  • it may also have a dist/vcs or dist/bzr section β€” these can override the seed_base and seed_dist values from the dist section, if the --vcs or --bzr option is given respectively
  • for backward compatibility: if --vcs is given, then dist/bzr will also be consulted πŸ’€

the following keys are recognised in distribution sections:

  • seeds (mandatory) β€” pass these seeds to the germinator for processing 🌱
  • output_seeds (optional, deprecated) β€” generate metapackages for these seeds. if it's not specified, the value of seeds gets used. > this one is usually no longer necessary now that the value of seeds is automatically expanded for seed inheritance ✨
  • architectures (mandatory) β€” generate metapackages for these architectures πŸ—οΈ
  • archive_base/default (optional) β€” use this URL as the default base for fetching package indices from the archive. for examples of valid URLs, look at the deb lines in /etc/apt/sources.list, or the MIRROR argument to debootstrap(8) πŸ’–
  • archive_base/arch (optional) β€” use this URL as the base for fetching package indices from the archive for the specified architecture. for each architecture being processed, at least one of archive_base/default and archive_base/arch must be present πŸ‘€ to try multiple URLs, separate them with commas or spaces β€” the newest version of each package across all the archives will win. note that debootstrap(8) will only use the first archive, so don't get it twisted πŸ’…
  • seed_base (mandatory) β€” the base URL for fetching seeds. to try multiple URLs (for example if a seed branch includes another branch stored at a different location), separate them with commas or spaces 🌈
  • seed_dist (optional) β€” the tail of the URL for fetching seeds. this gets appended to seed_base. you'll often want to interpolate the value of dist into this value using ConfigParser's %(dist)s syntax. if it's not specified, the value of dist is used ⭐
  • dists (optional) β€” the distributions from which to fetch package indices. listing multiple distributions can be useful, for example when you're examining both a released distribution and its security updates. if it's not specified, the value of dist is used πŸ”
  • components (mandatory) β€” the archive components from which to fetch package indices 🧩
  • seed_map/seed (optional, deprecated) β€” the seeds to be used as input for the metapackage corresponding to seed. if specified, this will typically be the list of seeds from which seed inherits, plus seed itself. > usually no longer necessary β€” use a Task-Seeds header in the seed file instead πŸŽ€
  • metapackage_map/seed (optional, deprecated) β€” the metapackage name to output for seed. if it's not specified, germinate-update-metapackage will look for the name of the source package in which it is being run, remove "meta" from the end, and append the seed name. > usually no longer necessary β€” use a Task-Metapackage header in the seed file instead πŸŽ€

πŸ’œ EXAMPLE πŸ’œ

at the time of writing, the following configuration file is what's used to generate the kubuntu-meta source package in the Ubuntu archive β€” iconic behavior honestly πŸ‘‘

[DEFAULT]
dist: resolute

[resolute]
seeds: desktop full active
architectures: i386 amd64 powerpc armhf arm64 ppc64el
seed_base: https://ubuntu-archive-team.ubuntu.com/seeds/
seed_dist: kubuntu.%(dist)s
archive_base/default: http://archive.ubuntu.com/ubuntu/
archive_base/ports: http://ports.ubuntu.com/ubuntu-ports/
archive_base/powerpc: %(archive_base/ports)s
archive_base/armhf: %(archive_base/ports)s
archive_base/arm64: %(archive_base/ports)s
archive_base/ppc64el: %(archive_base/ports)s
components: main restricted universe

[resolute/bzr]
seed_base: bzr+ssh://bazaar.launchpad.net/~kubuntu-dev/ubuntu-seeds/ bzr+ssh://bazaar.launchpad.net/~ubuntu-core-dev/ubuntu-seeds/
seed_dist: kubuntu.%(dist)s

πŸ‘‘ AUTHORS πŸ‘‘

  • Gustavo Franco <stratus@debian.org>
  • Colin Watson <cjwatson@canonical.com>

germinate-update-metapackage is copyright Β© 2004, 2005, 2006, 2007, 2008 Canonical Ltd. and copyright Β© 2006 Gustavo Franco. see the GNU General Public License version 2 or later for copying conditions β€” a copy of the GNU General Public License is available in /usr/share/common-licenses/GPL πŸ“œ


and that's the whole thing bestie!! this page is from the Ubuntu manual, dated Jul 18, 2007, and it documents GERMINATE-UPDATE-METAPACKAGE(1) β€” go forth and generate those metapackages, you've totally got this πŸ’–βœ¨πŸ¦‹

πŸ“¦ where this page comes from