=pod

=encoding utf8

=head1 NAME

cupt.conf - configuration file for Cupt

=head1 SYNOPSIS

$APT_CONFIG, /etc/apt/apt.conf, /etc/apt/apt.conf.d/*,
$CUPT_PRE_CONFIG, /etc/cupt/pre.conf, /etc/cupt/cupt.conf, /etc/cupt/cupt.conf.d/*

=head1 DESCRIPTION

Cupt uses the same configuration syntax as L<apt.conf(5)>, which see.

=head1 CONFIGURATION VARIABLES

Firstly, Cupt uses following APT configuration variables:

acquire::*::dl-limit, acquire::*::timeout, acquire::*::proxy,
acquire::http::allowredirect, acquire::retries, apt::cache::allversions,
apt::cache::important, apt::cache::namesonly, apt::cache::recursedepends,
apt::default-release, apt::install-recommends, apt::install-suggests,
apt::neverautoremove, apt::get::assume-yes, apt::get::allowunauthenticated,
apt::get::automaticremove, apt::get::list-cleanup, apt::get::purge,
apt::update::pre-invoke, apt::update::post-invoke,
apt::update::post-invoke-success, dir, dir::bin::dpkg, dir::cache,
dir::cache::archives, dir::etc, dir::etc::sourcelist, dir::etc::sourceparts,
dir::etc::parts, dir::etc::main, dir::etc::preferences,
dir::ignore-files-silently, dir::state, dir::state::extendedstates,
dir::state::status, dir::etc::trusted, dir::etc::trustedparts
dpkg::options, dpkg::pre-invoke, dpkg::post-invoke,
dpkg::pre-install-pkgs, quiet

See L<apt.conf(5)> for their meanings.

Secondly, Cupt introduces cupt-specific configuration variables.

=head2 variable types

=over

=item boolean

false may be specified as "0" or "false" or "no", everything else interpretes as true

if undefined, interpretes as false

=item integer

signed 32-bit integer on 32-bit systems, signed 64-bit integer on 64-bit systems

if undefined, interpretes as 0

=item string

interpreted as is

if undefined, interpretes as empty string

=item list

list of strings

if undefined, intepretes as empty list

=back

=head2 variables

=over

=item cupt::cache::limit-releases::by-*::type

string, determines the type of limiting repository releases to use

All repository indexes which are disallowed by this option are not added to
the package cache, in other words, they are completely hidden.

'*' can be 'archive' or 'codename'

Possible values:

=over

=item none

No limiting will be done for this category. The default.

=item include

Only values of the 'cupt::cache::limit-releases::by-*' option will be allowed.

=item exclude

Only values which are not present in the value of the 'cupt::cache::limit-releases::by-*' option will be allowed.

=back

Example:

If you set 'cupt::cache::limit-releases::by-archive::type' to 'include' and
'cupt::cache::limit-releases::by-archive' to '{ "stable", "testing" };', only
repositories with archive names 'stable' and 'testing' will be added to the
cache.

=item cupt::cache::limit-releases::by-*

list of allowed/disallowed release attributes, see above

=item cupt::cache::pin::addendums::but-automatic-upgrades

integer, specifies priority change for versions that come only from sources
which have both 'not automatic' and 'but automatic upgrades' flags.
Defaults to 4200.

=item cupt::cache::pin::addendums::downgrade

integer, specifies priority change for versions that are smaller than currently
installed. Defaults to -10000.

=item cupt::cache::pin::addendums::hold

integer, specifies priority increase for versions that are put on hold.
Defaults to 1000000. Set this option to 0 if you do not want to obey holds.
You may want to increase this option in (very unlikely to happen) situations:
when you have thousands of manually installed packages and very large query;
when you have a manually crafted pin priorities system with very large pin
values.

=item cupt::cache::pin::addendums::not-automatic

integer, specifies priority increase for versions that come only from 'not
automatic' sources. Defaults to -4000.

If you change the value of this option, you might want to change the value of
the option L</cupt::cache::pin::addendums::but-automatic-upgrades>
accordingly.

=item cupt::cache::release-file-expiration::ignore

boolean, if set to true, Cupt will ignore the fact that a Release file is
expired and use it anyway. False by default.

B<Warning! Setting this option to true will make the system vulnerable to a replay attack on package manager indexes.>

=item cupt::console::allow-untrusted

boolean, don't treat using untrusted packages as dangerous action

=item cupt::console::assume-yes

boolean, see L<cupt(1)> L<--assume-yes|/--assume-yes>

=item cupt::console::actions-preview::package-indicators::manually-installed

boolean, whether to print C<{m}> prefix for manually installed packages
in non-color mode. Enabled by default.

=item cupt::console::actions-preview::package-indicators::automatically-installed

boolean, whether to print C<{a}> prefix for automatically installed packages
in non-color mode. Disabled by default.

=item cupt::console::actions-preview::show-not-preferred

string, determines whether packages which will have a not preferred version
after the proposed changes are done should be shown in the actions preview.
Defaults to 'for-upgrades'.

Possible values:

=over

=item no

Do not show.

=item for-upgrades

Show for upgrade subcommands (namely, for L</full-upgrade>, L</safe-upgrade>
and the second part of L</dist-upgrade>).

=item yes

Show always.

=back

=item cupt::console::actions-preview::show-archives

boolean, if true, release archive(s) will be shown for each package in the
actions preview. False by default.

=item cupt::console::actions-preview::show-codenames

boolean, if true, release codename(s) will be shown for each package in the
actions preview. False by default.

=item cupt::console::actions-preview::show-components

boolean, if true, release component(s) will be shown for each package in the
actions preview. False by default.

=item cupt::console::actions-preview::show-details

boolean, if true, details of planned actions will be shown in the
actions preview. True by default.

=item cupt::console::actions-preview::show-empty-versions

boolean, if true, empty versions (i.e. removed or not installed packages) will
be shown as '<empty>' instead of being omitted

=item cupt::console::actions-preview::show-size-changes

boolean, if true, a change in the disk space usage will be shown for each
package in the actions preview. False by default.

=item cupt::console::actions-preview::show-reasons

boolean, see L<cupt(1)> L<--show-reasons|/--show-reasons,--show-deps,-D>

=item cupt::console::actions-preview::show-summary

string, tristate ("yes", "no" or "auto"), controls whether summary of planned
actions will be shown in the actions preview or not. Defaults to "yes".

Currently, "auto" means that summary will be shown when there are >= 100 change
entries in total.

=item cupt::console::actions-preview::show-versions

boolean, if true, a version will be shown for each package in the
actions preview. False by default.

=item cupt::console::actions-preview::show-vendors

boolean, if true, a version will be shown for each package in the actions
preview. False by default.

=item cupt::console::show-progress-messages

boolean, if true, package management actions will print stage messages
("Building a cache", "Resolving possible unmet dependencies" etc.). True by default.

=item cupt::console::use-colors

string, specifies whether to use colors in the console interface. Defaults to
"auto".

For now concerns only the action preview.

Available values:

=over

=item no

Don't use colors.

=item yes

Use colors.

=item auto

Use colors if the standard output is a terminal and a terminal type seem to
allow colors.

=back

=item cupt::console::warnings::removal-of-essential

boolean, treat removals of essential packages as dangerous action. True
by default.

=item cupt::console::warnings::removal-of-important

boolean, treat removals of important packages as dangreous action. True
by default.

=item cupt::directory

string, base directory for all cupt::directory::* options

=item cupt::directory::configuration

string, base directory for Cupt-specific configuration files

=item cupt::directory::configuration::main

string, relative file path for the Cupt main configuration file (same format as
L<apt.conf(5)>)

=item cupt::directory::configuration::main-parts

string, relative directory path for additional Cupt configuration files (same
format as L<apt.conf(5)>)

=item cupt::directory::configuration::pre

string, relative file path for the Cupt preconfiguration file which is read
before paths of any other configuration files are calculated. This is the only
place where one can effectively override default values of L<dir::etc> and
L<cupt::directory::configuration> options and/or their suboptions. The
environment variable B<CUPT_PRE_CONFIG> overrides this option if defined.

=item cupt::directory::log

string, relative file path for the log file

=item cupt::directory::state

string, directory which contains Cupt state info

=item cupt::directory::state::lists

string, directory for repository indexes

=item cupt::downloader::max-simultaneous-downloads

integer, positive, specifies maximum number of simultaneous downloads. Defaults to 2.

=item cupt::downloader::protocols::I<protocol>::priority

integer, positive, defines the priority of download protocol I<protocol>, determines an order in which
different URIs for the same file will be tried. Defaults to 100.

=item cupt::downloader::protocols::I<protocol>::methods::I<method>::priority

positive number, defines the priority of download method I<method>, the method
with maximum priority will be used for downloading the URI of protocol
I<protocol>.
Defaults to 100.

=item cupt::downloader::protocols::I<protocol>::methods

list, names of the methods available to download protocol I<protocol>

=item cupt::languages::indexes

string, specifies localizations of what languages should be used for repository
indexes. Defaults to "environment,en".

The value is comma-delimited (no spaces allowed) list of localization specificators. Localization specificator is either:

=over

=item environment

A special string which is substituted by the current locale (precisely, by a
value of the environment variable LC_MESSAGES).

=item none

A special string which indicates no localization.

=item I<language_code>[_I<country_code>]

A language code (for example: 'fi', 'fr', 'ru') or a language code with a
country code (for example, 'pt_BR', 'zh_CN').

=back

If the localization specificator contains a country code, the additional
specificator without a country code will be implicitly used as fallback.

Localization specificators should be listed in the preference order. Duplicates
are allowed but ignored.

Examples:

=over

=item fi,ru,fr

Download Finnish, Russian and French translations. For every description, try
to use Finnish translation; if it's not available, try to use Russian one; if
it's also not available; try to use French one; else use an original one.

=item pt_BR

Download Portuguese (Brazil) and Portuguese localizations. Use Portuguese
(Brazil) translation; if it's not available, use Portuguese translation; else
use an original one.

=item de,environment,fr_FR

(Supposing LC_MESSAGES is 'pl_PL.UTF-8')

Download and use these translations, in the following order: German, Polish
(Poland), Polish, French (France), French.

=back

=item cupt::update::check-release-files

boolean, if set, Release files will be checked for the validity (including the
expiration check and a signature if present) at the download stage. True by default.

=item cupt::update::compression-types::*::priority

integer, defines preference to download compressed files with higher priority first. 100 by default.

'*' can be 'gz', 'bz2', 'lzma', 'xz', and 'uncompressed'.

Set some option to <100 value to make it low-precedence than default, and >100
to make it high-precedence than default.

If some methods have the equal priority (which is the default setting), then
files with smaller size with be chosen over the files with bigger size.

Example:

You have a low-speed CPU but rather high-speed internet connection and want to
prefer gzip over lzma and lzma over bzip2. Then you have to set options like:

  cupt::update::compression-types
  {
    gz::priority "200";
    lzma::priority "150";
  }

Also, if you have a local mirror, which may store uncompressed indexes too
(an official Debian archive doesn't store them), you may set also

cupt::update::compression-types::uncompressed::priority "300";

=item cupt::update::generate-index-of-index

boolean, specifies whether to build "index-of-index" for every Packages and
Sources. If set to true, slightly increases the time of postprocessing after
downloading new metadata files but speedes up significantly the initialization
time for every invocation. True by default.

=item cupt::update::use-index-diffs

boolean, specifies whether to try downloading repository index deltas and apply
them locally before downloading the full index. True by default.

When turned on, this option saves bandwidth but increases CPU and disk usage
while updating. On the fast unlimited connections (say, >= 2 Mbit/s, but
heavily depends on many other factors) you would likely want to turn off this
option.

=item cupt::resolver::keep-recommends

boolean, specifies whether should resolver try to keep already installed
recommended packages or not. True by default.

=item cupt::resolver::keep-suggests

boolean, specifies whether should resolver try to keep already installed
suggested packages or not. False by default.

=item cupt::resolver::auto-remove

boolean, see L<cupt(1)> L<--no-auto-remove|/--no-auto-remove>

=item cupt::resolver::max-leaf-count

integer, specifies how many leaves the solution tree will grow before resolver
will give up. -1 means infinite. -1 by default.

=item cupt::resolver::max-solution-count

integer, positive, see L<cupt(1)> L<--max-solution-count|/--max-solution-count>

=item cupt::resolver::no-autoremove-if-rdepends-exist

list of regular expressions; if the package name matches to any of those
regular expressions it will be not considered for auto-removal if there are any
reverse dependencies installed. Empty by default.

Example (simplified real situation):

 Package: xserver-xorg
 Depends: xserver-xorg-video-all | xorg-driver-video
 
 Package: xserver-xorg-video-nv
 Provides: xorg-driver-video
 
 Package: xserver-xorg-video-radeon
 Provides: xorg-driver-video
 
 You have:
 xserver-xorg: manually installed
 xserver-xorg-video-all: not installed
 xserver-xorg-video-nv: automatically installed
 xserver-xorg-video-radeon: automatically installed

Both xserver-xorg-video-nv and xserver-xorg-video-radeon satisfy the dependency
of xserver-xorg, so only one of them is needed in the system. Therefore, by
default one of these two will be considered for auto-removal. If you add a
regular expression 'xserver-xorg-video.*' to the value of this option, none of
packages providing xorg-driver-video will be considered for auto-removal as
long as xserver-xorg is installed.

=item cupt::resolver::no-remove

boolean, see L<cupt(1)> L<--no-remove|/--no-remove>

=item cupt::resolver::synchronize-by-source-versions

string, this option controls whether and how the native resolver will attempt to keep
all binary packages from the same source package at the same source version

This option uses the information from source packages. No synchronization will
be performed for the versions which have not a corresponding source version in
the repository.

Possible values:

=over

=item none

Don't attempt to synchronize. This is the default value.

=item soft

Don't forbid any modifications to the packages and attempt to synchronize
related binary packages when possible upon the modifications of certain binary
package.

=item hard

Forbid any modifications to the packages when at least one related binary
package cannot be synchronized with the modified one.

=back

=item cupt::resolver::track-reasons

boolean, specifies whether 'suggestedPackages::reasons' is filled in the Resolver::Offer. False by default.

=item cupt::resolver::type

string, see L<cupt(1)> L<--resolver|/--resolver>

=item cupt::resolver::score::<part>

The group of integer options which control internal resolver's score
calculation. Values are absolute.

<part> can be one of:

=over

=item new

installing a new package

=item removal

removal of an existing package

=item removal-of-essential

removal of an existing essential package (a general B<removal> option is applied as well)

=item removal-of-autoinstalled

removal of an automatically installed package (a general B<removal> option is applied as well)

=item upgrade

installing a higher version of an existing package

=item downgrade

installing a lower version of an existing package

=item position-penalty

when several actions may be performed to resolve a problem, apply N penalties
to N-th action (counting from 0)

=item quality-adjustment

the value will be added to each action's score

=item unsatisfied-recommends

some 'recommends' dependency is not satisfied (when requested)

=item unsatisfied-suggests

some 'suggests' dependency is not satisfied (when requested)

=item failed-synchronization

some source version synchronization cannot be performed (when
L<cupt::resolver::synchronize-source-versions|/cupt::resolver::synchronize-source-versions>
is 'soft')

=item version-factor::common

defines (in percents), how much version score difference affects the action score

=item version-factor::negative

defines (in percents) scaling of negative version scores (applied after
B<version-factor>)

=item version-factor::priority-downgrade

defines (in percents) scaling of version score if version priority difference
is negative. For calculations regarding this factor, if there is no original
version, its priority is 0, if there is no supposed version, its priority is
the default priority for versions from a default package archive.

=back

=item cupt::worker::archives-space-limit

integer, bytes, positive, if set, limits the worker to not download more than specified
amount of archives, and use download-install-clean algorithm (download
archives, install packages, clean just downloaded archives).  Worker will try
to split all actions into unrelated changesets so each changeset require only
limited download space. Any system changes will be started only if changesets
are generated successfully.

=item cupt::worker::defer-triggers

string, specifies whether should worker defer dpkg trigger processing to
the end of the whole operation or not. When enabled, speeds up
large-amount actions, but if the operation will somewhy be interrupted, leaves
system in the interim trigger state, which can be fixed by manual run of 'dpkg
--triggers-only --pending' command. Defaults to "auto".

Available values:

=over

=item no

Disable deferring triggers.

=item yes

Enable deferring triggers.

=item auto

Enable deferring triggers if enough recent version of dpkg (1.16.1, where
tiresome trigger-related bug (Debian BTS #526774) is fixed) is installed.

=back

=item cupt::worker::download-only

boolean, see L<cupt(1)> L<--download-only|/--download-only,-d>

=item cupt::worker::log

boolean, whether to log performed actions or not. True by default.

=item cupt::worker::log::levels::metadata

non-negative integer, the log level for the metadata updates. 1 by default.

=item cupt::worker::log::levels::packages

non-negative integer, the log level for the package changes
(install/upgrade/remove etc.). 2 by default.

=item cupt::worker::log::levels::snapshots

non-negative integer, the log level for the snapshot actions. 1 by default.

=item cupt::worker::purge

boolean, specifies whether purge packages in addition to removing or not.
False by default.

=item cupt::worker::simulate

boolean, see L<cupt(1)> L<--simulate|/--simulate,-s>

=item cupt::worker::use-locks

boolean, specifies whether Cupt protects simultaneous runs of itself against
the misuse of the common resources. True by default.

B<Warning! Setting this option to false will allow several non-simulating Cupt
instances to break the system when misused.>

=item debug::resolver

boolean, if true, resolver will print a lot of debug information to the
standard error. False by default.

=item debug::worker

boolean, if true, worker will print some debug information to the
standard error. False by default.

=item debug::gpgv

boolean, if true, cache will print some debug information while verifying
signatures to the standard error. False by default.

=item debug::downloader

boolean, if true, the downloader manager will print some debug messages. False
by default.

=item debug::logger

boolean, if true, the logger will print some debug messages. False by default.

=back

=head1 SEE ALSO

L<cupt(1)>, L<apt.conf(5)>

=cut
