- <refsect2><title>dpkg trigger usage (and related options)</title>
- <para>APT can call dpkg in a way so it can make aggressive use of triggers over
- multiple calls of dpkg. Without further options dpkg will use triggers only in between his
- own run. Activating these options can therefore decrease the time needed to perform the
- install / upgrade. Note that it is intended to activate these options per default in the
- future, but as it changes the way APT calling dpkg drastically it needs a lot more testing.
- <emphasis>These options are therefore currently experimental and should not be used in
- productive environments.</emphasis> Also it breaks the progress reporting so all frontends 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 add these flag also 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>".
- "<literal>all</literal>" is the default value and causes APT to configure all packages explicit.
- The "<literal>smart</literal>" way is it to configure only packages which need to be configured before
- another package can be unpacked (Pre-Depends) and let the rest configure by dpkg with a call generated
- by the next option. "<literal>no</literal>" on the other hand will not configure anything and totally
- rely on dpkg for configuration (which will at the moment fail if a Pre-Depends is encountered).
- Setting this option to another than the all value will implicitly activate also the next option per
- default as otherwise the system could end in an unconfigured status which could be unbootable!
- </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 automatic
- per default if the previous option is not set to <literal>all</literal>, but deactivating 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 <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 dealbreaker 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>PackageManager::UnpackAll</option></term>
- <listitem><para>As the configuration can be deferred to be done at the end by dpkg it can be
- tried to order the unpack series only by critical needs, e.g. by Pre-Depends. Default is true
- and therefore the "old" method of ordering in various steps by everything. While both method
- were present in earlier APT versions the <literal>OrderCritical</literal> method was unused, so
- this method is very experimental and needs further improvements before becoming really useful.
- </para></listitem>
- </varlistentry>
- <varlistentry><term><option>OrderList::Score::Immediate</option></term>
- <listitem><para>Essential packages (and there dependencies) should be configured immediately
- after unpacking. It will be a good idea to do this quite early in the upgrade process as these
- these configure calls require currently also <literal>DPkg::TriggersPending</literal> which
- will run quite a few triggers (which maybe not needed). Essentials get per default a high score
- but the immediate flag is relatively low (a package which has a Pre-Depends is higher rated).
- These option and the others in the same group can be used to change the scoring. The following
- example shows the settings with there default values.
- <literallayout>OrderList::Score {
- Delete 500;
- Essential 200;
- Immediate 10;
- PreDepends 50;
-};</literallayout>
- </para></listitem>
- </varlistentry>
- </variablelist>
- </refsect2>