2021-10-18 13:35:33 +00:00
|
|
|
# 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.
|
2019-10-28 13:48:02 +00:00
|
|
|
---
|
|
|
|
#
|
|
|
|
# Which package manager to use, options are:
|
2021-10-18 13:35:33 +00:00
|
|
|
# - apk - Alpine Linux package manager
|
2019-10-28 13:48:02 +00:00
|
|
|
# - apt - APT frontend for DEB and RPM
|
2021-10-18 13:35:33 +00:00
|
|
|
# - dnf - DNF, the new RPM frontend
|
|
|
|
# - entropy - Sabayon package manager (is being deprecated)
|
|
|
|
# - luet - Sabayon package manager (next-gen)
|
|
|
|
# - packagekit - PackageKit CLI tool
|
2019-10-28 13:48:02 +00:00
|
|
|
# - pacman - Pacman
|
2021-10-18 13:35:33 +00:00
|
|
|
# - pamac - Manjaro package manager
|
2019-10-28 13:48:02 +00:00
|
|
|
# - portage - Gentoo package manager
|
2021-10-18 13:35:33 +00:00
|
|
|
# - yum - Yum RPM frontend
|
|
|
|
# - zypp - Zypp RPM frontend
|
|
|
|
#
|
|
|
|
# Not actually a package manager, but suitable for testing:
|
2019-10-28 13:48:02 +00:00
|
|
|
# - dummy - Dummy manager, only logs
|
|
|
|
#
|
|
|
|
backend: dummy
|
|
|
|
|
|
|
|
#
|
|
|
|
# Often package installation needs an internet connection.
|
|
|
|
# Since you may allow system installation without a connection
|
|
|
|
# and want to offer OPTIONAL package installation, it's
|
|
|
|
# possible to have no internet, yet have this packages module
|
|
|
|
# enabled in settings.
|
|
|
|
#
|
|
|
|
# You can skip the whole module when there is no internet
|
|
|
|
# by setting "skip_if_no_internet" to true.
|
|
|
|
#
|
|
|
|
# You can run a package-manager specific update procedure
|
|
|
|
# before installing packages (for instance, to update the
|
|
|
|
# list of packages and dependencies); this is done only if there
|
|
|
|
# is an internet connection.
|
|
|
|
#
|
|
|
|
# Set "update_db" to 'true' for refreshing the database on the
|
|
|
|
# target system. On target installations, which got installed by
|
|
|
|
# unsquashing, a full system update may be needed. Otherwise
|
|
|
|
# post-installing additional packages may result in conflicts.
|
|
|
|
# Therefore set also "update_system" to 'true'.
|
|
|
|
#
|
|
|
|
skip_if_no_internet: false
|
|
|
|
update_db: true
|
|
|
|
update_system: false
|
|
|
|
|
|
|
|
#
|
|
|
|
# List of maps with package operations such as install or remove.
|
|
|
|
# Distro developers can provide a list of packages to remove
|
|
|
|
# from the installed system (for instance packages meant only
|
|
|
|
# for the live system).
|
|
|
|
#
|
|
|
|
# A job implementing a distro specific logic to determine other
|
|
|
|
# packages that need to be installed or removed can run before
|
|
|
|
# this one. Distro developers may want to install locale packages
|
|
|
|
# or remove drivers not needed on the installed system.
|
|
|
|
# Such a job would populate a list of dictionaries in the global
|
|
|
|
# storage called "packageOperations" and that list is processed
|
|
|
|
# after the static list in the job configuration (i.e. the list
|
|
|
|
# that is in this configuration file).
|
|
|
|
#
|
|
|
|
# Allowed package operations are:
|
2021-10-18 13:35:33 +00:00
|
|
|
# - *install*, *try_install*: will call the package manager to
|
2019-10-28 13:48:02 +00:00
|
|
|
# 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.
|
2021-10-18 13:35:33 +00:00
|
|
|
# - *localInstall*: this is used to call the package manager
|
2019-10-28 13:48:02 +00:00
|
|
|
# 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*).
|
2021-10-18 13:35:33 +00:00
|
|
|
# - *remove*, *try_remove*: will call the package manager to
|
2019-10-28 13:48:02 +00:00
|
|
|
# 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.
|
2021-10-18 13:35:33 +00:00
|
|
|
# One additional key is recognized, to help netinstall out:
|
|
|
|
# - *source*: ignored, does get logged
|
|
|
|
# Any other key is ignored, and logged as a warning.
|
2019-10-28 13:48:02 +00:00
|
|
|
#
|
|
|
|
# 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
|
|
|
|
# post-install scripts.
|
|
|
|
#
|
|
|
|
# Here are both formats, for installing vi. The first one just names the
|
|
|
|
# package for vi (using the naming of the installed package manager), while
|
|
|
|
# the second contains three data-items; the pre-script is run before invoking
|
|
|
|
# the package manager, and the post-script runs once it is done.
|
|
|
|
#
|
|
|
|
# - install
|
|
|
|
# - vi
|
|
|
|
# - package: vi
|
|
|
|
# pre-script: touch /tmp/installing-vi
|
|
|
|
# post-script: rm -f /tmp/installing-vi
|
|
|
|
#
|
|
|
|
# The pre- and post-scripts are optional, but you cannot leave both out
|
|
|
|
# if you do use the *package* key: using "package: vi" with neither script
|
|
|
|
# option will trick Calamares into trying to install a package named
|
|
|
|
# "package: vi", which is unlikely to work.
|
|
|
|
#
|
|
|
|
# The pre- and post-scripts are **not** executed by a shell unless you
|
|
|
|
# explicitly invoke `/bin/sh` in them. The command-lines are passed
|
|
|
|
# to exec(), which does not understand shell syntax. In other words:
|
|
|
|
#
|
|
|
|
# pre-script: ls | wc -l
|
|
|
|
#
|
|
|
|
# Will fail, because `|` is passed as a command-line argument to ls,
|
|
|
|
# as are `wc`, and `-l`. No shell pipeline is set up, and ls is likely
|
|
|
|
# to complain. Invoke the shell explicitly:
|
|
|
|
#
|
|
|
|
# pre-script: /bin/sh -c \"ls | wc -l\"
|
|
|
|
#
|
|
|
|
# The above note on shell-expansion applies to versions up-to-and-including
|
|
|
|
# Calamares 3.2.12, but will change in future.
|
|
|
|
#
|
|
|
|
# Any package name may be localized; this is used to install localization
|
|
|
|
# packages for software based on the selected system locale. By including
|
|
|
|
# the string `LOCALE` in the package name, the following happens:
|
|
|
|
#
|
|
|
|
# - if the system locale is English (any variety), then the package is not
|
|
|
|
# installed at all,
|
|
|
|
# - otherwise `$LOCALE` or `${LOCALE}` is replaced by the 'lower-cased' BCP47
|
|
|
|
# name of the 'language' part of the selected system locale (not the
|
|
|
|
# country/region/dialect part), e.g. selecting "nl_BE" will use "nl"
|
|
|
|
# here.
|
|
|
|
#
|
|
|
|
# Take care that just plain `LOCALE` will not be replaced, so `foo-LOCALE` will
|
|
|
|
# be left unchanged, while `foo-$LOCALE` will be changed. However, `foo-LOCALE`
|
|
|
|
# **will** be removed from the list of packages (i.e. not installed), if
|
|
|
|
# English is selected. If a non-English locale is selected, then `foo-LOCALE`
|
|
|
|
# will be installed, unchanged (no language-name-substitution occurs).
|
|
|
|
#
|
|
|
|
# The following installs localizations for vi, if they are relevant; if
|
|
|
|
# there is no localization, installation continues normally.
|
|
|
|
#
|
|
|
|
# - install
|
|
|
|
# - vi-$LOCALE
|
|
|
|
# - package: vi-${LOCALE}
|
|
|
|
# pre-script: touch /tmp/installing-vi
|
|
|
|
# post-script: rm -f /tmp/installing-vi
|
|
|
|
#
|
|
|
|
# When installing packages, Calamares will invoke the package manager
|
|
|
|
# with a list of package names if it can; package-data prevents this because
|
|
|
|
# of the scripts that need to run. In other words, this:
|
|
|
|
#
|
|
|
|
# - install:
|
|
|
|
# - vi
|
|
|
|
# - binutils
|
|
|
|
# - package: wget
|
|
|
|
# pre-script: touch /tmp/installing-wget
|
|
|
|
#
|
|
|
|
# This will invoke the package manager three times, once for each package,
|
|
|
|
# because not all of them are simple package names. You can speed up the
|
|
|
|
# process if you have only a few pre-scripts, by using multiple install targets:
|
|
|
|
#
|
|
|
|
# - install:
|
|
|
|
# - vi
|
|
|
|
# - binutils
|
|
|
|
# - install:
|
|
|
|
# - package: wget
|
|
|
|
# pre-script: touch /tmp/installing-wget
|
|
|
|
#
|
|
|
|
# This will call the package manager once with the package-names "vi" and
|
|
|
|
# "binutils", and then a second time for "wget". When installing large numbers
|
|
|
|
# of packages, this can lead to a considerable time savings.
|
|
|
|
#
|
|
|
|
operations:
|
|
|
|
- install:
|
|
|
|
- vi
|
|
|
|
- vi-${LOCALE}
|
|
|
|
- wget
|
|
|
|
- binutils
|
|
|
|
- remove:
|
|
|
|
- vi
|
|
|
|
- wget
|
|
|
|
- binutils
|