+
+ <refsect2><title>dpkg trigger usage (and related options)</title>
+ <para>APT can call &dpkg; in such a way as to let it make aggressive use of triggers over
+ multiple calls of &dpkg;. Without further options &dpkg; will use triggers once each time it runs.
+ Activating these options can therefore decrease the time needed to perform the
+ install or upgrade. Note that it is intended to activate these options per default in the
+ future, but as it drastically changes the way APT calls &dpkg; it needs a lot more testing.
+ <emphasis>These options are therefore currently experimental and should not be used in
+ production environments.</emphasis> It also breaks progress reporting such that all front-ends will
+ currently stay around half (or more) of the time in the 100% state while it actually configures
+ all packages.</para>
+ <para>Note that it is not guaranteed that APT will support these options or that these options will
+ not cause (big) trouble in the future. If you have understand the current risks and problems with
+ these options, but are brave enough to help testing them, create a new configuration file and test a
+ combination of options. Please report any bugs, problems and improvements you encounter and make sure
+ to note which options you have used in your reports. Asking &dpkg; for help could also be useful for
+ debugging proposes, see e.g. <command>dpkg --audit</command>. A defensive option combination would be
+<literallayout>DPkg::NoTriggers "true";
+PackageManager::Configure "smart";
+DPkg::ConfigurePending "true";
+DPkg::TriggersPending "true";</literallayout></para>
+
+ <variablelist>
+ <varlistentry><term><option>DPkg::NoTriggers</option></term>
+ <listitem><para>Add the no triggers flag to all &dpkg; calls (except the ConfigurePending call).
+ See &dpkg; if you are interested in what this actually means. In short: &dpkg; will not run the
+ triggers when this flag is present unless it is explicitly called to do so in an extra call.
+ Note that this option exists (undocumented) also in older APT versions with a slightly different
+ meaning: Previously these option only append --no-triggers to the configure calls to &dpkg; -
+ now APT will also add this flag to the unpack and remove calls.</para></listitem>
+ </varlistentry>
+ <varlistentry><term><option>PackageManager::Configure</option></term>
+ <listitem><para>Valid values are "<literal>all</literal>",
+ "<literal>smart</literal>" and "<literal>no</literal>".
+ The default value is "<literal>all</literal>", which causes APT to
+ configure all packages. The "<literal>smart</literal>" way is to
+ configure only packages which need to be configured before another
+ package can be unpacked (Pre-Depends), and let the rest be configured
+ by &dpkg; with a call generated by the ConfigurePending option (see
+ below). On the other hand, "<literal>no</literal>" will not configure
+ anything, and totally relies on &dpkg; for configuration (which at the
+ moment will fail if a Pre-Depends is encountered). Setting this option
+ to any value other than <literal>all</literal> will implicitly also
+ activate the next option by default, as otherwise the system could end
+ in an unconfigured and potentially unbootable state.</para></listitem>
+ </varlistentry>
+ <varlistentry><term><option>DPkg::ConfigurePending</option></term>
+ <listitem><para>If this option is set APT will call <command>dpkg --configure --pending</command>
+ to let &dpkg; handle all required configurations and triggers. This option is activated automatically
+ per default if the previous option is not set to <literal>all</literal>, but deactivating it could be useful
+ if you want to run APT multiple times in a row - e.g. in an installer. In these sceneries you could
+ deactivate this option in all but the last run.</para></listitem>
+ </varlistentry>
+ <varlistentry><term><option>DPkg::TriggersPending</option></term>
+ <listitem><para>Useful for the <literal>smart</literal> configuration as a package which has pending
+ triggers is not considered as <literal>installed</literal>, and &dpkg; treats them as <literal>unpacked</literal>
+ currently which is a showstopper for Pre-Dependencies (see debbugs #526774). Note that this will
+ process all triggers, not only the triggers needed to configure this package.</para></listitem>
+ </varlistentry>
+ <varlistentry><term><option>OrderList::Score::Immediate</option></term>
+ <listitem><para>Essential packages (and their dependencies) should be configured immediately
+ after unpacking. It is a good idea to do this quite early in the upgrade process as these
+ configure calls also currently require <literal>DPkg::TriggersPending</literal> which
+ will run quite a few triggers (which may not be needed). Essentials get per default a high score
+ but the immediate flag is relatively low (a package which has a Pre-Depends is rated higher).
+ These option and the others in the same group can be used to change the scoring. The following
+ example shows the settings with their default values.
+ <literallayout>OrderList::Score {
+ Delete 500;
+ Essential 200;
+ Immediate 10;
+ PreDepends 50;
+};</literallayout>
+ </para></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>