The base list for a platform is mostly just all the required, important and standard packages. On top of that are the packages necessary to satisfy the dependencies for the LCFG core and standard component along with utilities that administrators would expect to have available as standard on all machines. We are still working on that list and it is likely to continue evolving for a while. See lcfg_ubu2004_base.pkgs for the latest available.
Mostly this can be generated quite easily with a small Python script which uses the python-apt module to examine the repository.
As with EL7 we need a list of package updates which should be applied to fix security issues and other serious problems. We do this through the LCFG profile rather than allowing the package manager to blindly apply all upgrades as soon as they become available so that we have time to test the updates and, if necessary, avoid applying updates if they might cause problems.
In EL7 only the packages in the
updates/security are used by default. Occasionally extra packages are manually selected from
updates/fastbugs to resolve serious functionality (i.e. non-security) problems. In Ubuntu the repository is split into 4 components – main, universe, multiverse and restricted. For each there are several types of updates available – security, updates, proposed and backports. The LCFG updates list will contain the security and updates packages for all 4 components.
To generate the Ubuntu updates lists the pkglist-tools have had a big overhaul. The chance was also taken to update the scripts to use the LCFG::Package Perl modules provided in the LCFG core. Currently these scripts query an external package server and I am regularly experiencing problems with the server giving 403 errors which makes generating them a bit of a pain. Although we mostly just do HEAD requests, it appears there is some Denial of Service protection in place and the rate of requests regularly exceeds the allowed limit. Once we have a local package mirror in place that issue will thankfully disappear.
See lcfg_ubu2004_updates.pkgs for the latest available.
The options list makes it easy to add extra packages and their dependencies to a machine through the LCFG profile. This is done by just adding an extra option to the
profile.pkgcppopts resource (e.g.
In EL7 we generate the list using the lcfg-yummy tool which was based on yum and used a chroot which I would generate using updaterpms. For Ubuntu a replacement tool – lcfg-soy – has been created which can do a similar job using the python-apt modules. This similarly can use a chroot, this is easily created using the standard debootstrap tool.
I’ve been working with lcfg-soy recently and I am very impressed with what it can do. I particularly appreciate being able to declare that options depend on other options, this helps to massively reduce the size of the generated package list. See lcfg_ubu2004_options.pkgs for the latest available.
It is so easy to generate the options package list for a new platform that I intend to move all packages provided as part of the standard distribution out of the LCFG headers into the options list. This should hugely reduce the ongoing essential maintenance effort.