Using Germinate

What is Germinate?

Germinate is a package available in Debian which starts with lists of packages (called seeds) and grows them into a full list of packages including dependencies and (in additional lists) suggests, recommends, and sources for each of these lists.

Files You Need

The minimum set of seeds this author has used is:

It might be possible to exclude some of these, but this set works and at least some of these are hard-coded into germinate.

Each required seed is a file that must exist. However any file you don't actually want to use may be an empty file (e.g. created with  touch filename 

Special Files

STRUCTURE is special in that it is not actually a list of packages, rather it is the list of seeds and how they depend on each other.

An example STRUCTURE is:

minimal: required
standard: required minimal

The first thing on each line is the name of a seed followed by a colon. For any seed list so defined, a file of the same name must exist in the same directory as the STRUCTURE file.

After the colon is a space and a space separated list of seeds the first seed on the line depends on. This is used in generating the output such that each seed has a corresponding output list of packages which includes the packages and depends in the seed itself, plus any packages and dependencies for the seeds listed as dependencies for the seed (recursively).

blacklist is also special in that it doesn't define a list of packages to include. Instead it lists packages which will never be included in the output of germinate.

Seed lists

For each seed you actually use, list each package you want to include on line in wiki bullet list format. E.g.

 * packagename

If you wish you can use some additional wiki formatting for header and text. Anything that is not a bullet item (i.e. package to include), is ignored by germinate, but could be useful if you want to use a wiki to group edit the lists.

Germinate Invocation

Assuming you have your seeds in the directory /home/user/projects/seeds/debian.etch and you are currently in /home/user/projects, you would use the following command to generate the output files (in /home/user/projects}}}):

germinate -S file:///home/user/projects/seeds/ -s debian.etch -m -d etch,etch-updates -a i386 -c main,contrib,non-free