diff --git a/calamares/modules/packages.conf b/calamares/modules/packages.conf index e42e8e9..49fdbb6 100644 --- a/calamares/modules/packages.conf +++ b/calamares/modules/packages.conf @@ -1,15 +1,38 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# +# The configuration for the package manager starts with the +# *backend* key, which picks one of the backends to use. +# In `main.py` there is a base class `PackageManager`. +# Implementations must subclass that and set a (class-level) +# property *backend* to the name of the backend (e.g. "dummy"). +# That property is used to match against the *backend* key here. +# +# You will have to add such a class for your package manager. +# It is fairly simple Python code. The API is described in the +# abstract methods in class `PackageManager`. Mostly, the only +# trick is to figure out the correct commands to use, and in particular, +# whether additional switches are required or not. Some package managers +# have more installer-friendly defaults than others, e.g., DNF requires +# passing --disablerepo=* -C to allow removing packages without Internet +# connectivity, and it also returns an error exit code if the package did +# not exist to begin with. --- # # Which package manager to use, options are: -# - packagekit - PackageKit CLI tool -# - zypp - Zypp RPM frontend -# - yum - Yum RPM frontend -# - dnf - DNF, the new RPM frontend -# - urpmi - Mandriva package manager +# - apk - Alpine Linux package manager # - apt - APT frontend for DEB and RPM +# - dnf - DNF, the new RPM frontend +# - entropy - Sabayon package manager (is being deprecated) +# - luet - Sabayon package manager (next-gen) +# - packagekit - PackageKit CLI tool # - pacman - Pacman +# - pamac - Manjaro package manager # - portage - Gentoo package manager -# - entropy - Sabayon package manager +# - yum - Yum RPM frontend +# - zypp - Zypp RPM frontend +# +# Not actually a package manager, but suitable for testing: # - dummy - Dummy manager, only logs # backend: dummy @@ -55,22 +78,25 @@ update_system: false # that is in this configuration file). # # Allowed package operations are: -# - install, try_install: will call the package manager to +# - *install*, *try_install*: will call the package manager to # install one or more packages. The install target will # abort the whole installation if package-installation # fails, while try_install carries on. Packages may be # listed as (localized) names, or as (localized) package-data. # See below for the description of the format. -# - localInstall: this is used to call the package manager +# - *localInstall*: this is used to call the package manager # to install a package from a path-to-a-package. This is # useful if you have a static package archive on the install media. # The *pacman* package manager is the only one to specially support # this operation (all others treat this the same as *install*). -# - remove, try_remove: will call the package manager to +# - *remove*, *try_remove*: will call the package manager to # remove one or more packages. The remove target will # abort the whole installation if package-removal fails, # while try_remove carries on. Packages may be listed as # (localized) names. +# One additional key is recognized, to help netinstall out: +# - *source*: ignored, does get logged +# Any other key is ignored, and logged as a warning. # # There are two formats for naming packages: as a name or as package-data, # which is an object notation providing package-name, as well as pre- and