aboutsummaryrefslogtreecommitdiff
path: root/doc/configuration/sets.html.part.in
blob: f4607027bbfcd2e817ecd605d3d4e9c8b710c81b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<!-- vim: set tw=120 ft=html sw=4 sts=4 et : -->

<h1>Sets</h1>

<p>A set is a collection of package dependency specifications.</p>

<h2>Built-in Sets</h2>

<p>The following sets are always available:</p>

<dl>
    <dt><code>system</code></dt>
    <dd>Defined by repositories, system consists of core packages that make up a basic system.</dd>

    <dt><code>world</code></dt>
    <dd>Consists of the system set, plus all packages that have been installed as targets (as opposed to merely pulled
    in as dependencies of a target).</dd>

    <dt><code>installed-packages</code></dt>
    <dd>The names of all installed packages.</dd>

    <dt><code>installed-slots</code></dt>
    <dd>The names plus slots of all installed packages.</dd>

    <dt><code>security</code></dt>
    <dd>The set of upgrades which must be performed to resolve security holes.</dd>

    <dt><code>insecurity</code></dt>
    <dd>The set of insecure packages (mostly for internal use).</dd>

    <dt><code>nothing</code></dt>
    <dd>An empty set.</dd>
</dl>

<p>Some sets, such as <code>system</code>, are made by combining sets from multiple repositories. For these sets, the
parts of the set defined by each individual repository can be accessed using <code>setname::reponame</code>.</p>

<h2>User Defined Sets</h2>

###PALUDISENVIRONMENTONLY###

<p>When using the Paludis environment, the user can create their own sets. A set named <code>foo</code> is defined in
the file <code>foo.conf</code>, which is a standard configuration file, or in the file <code>foo.bash</code>,
which is a dynamic standard configuration file. Sets may be specified in any of the following directories:</p>

<ul>
    <li><code><em>confdir</em>/sets/</code>, where
    <code><em>confdir</em></code> is the directory in which <code>use.conf</code>
    et al. reside.</li>

    <li><code><em>DATADIR</em>/paludis/sets/</code>. On most
    systems, <code><em>DATADIR</em></code> is <code>/usr/share</code>.</li>

    <li><code><em>LIBEXECDIR</em>/paludis/sets/</code>. On most
    systems, <code><em>LIBEXECDIR</em></code> is <code>/usr/libexec</code>.</li>
</ul>

<div class="note">
    <p>Overriding built-in sets in this manner is not recommended. Strange things will happen.</p>
</div>

<p>Each line in a user set file consists of an operator, followed by whitespace, followed by a package dependency
specification or, for some operators, a set name. Permitted operators are:</p>

<dl>
    <dt><code>*</code></dt>
    <dd>Indicates that the specification or set name is part of the set.</dd>

    <dt><code>?</code></dt>
    <dd>Indicates that the specification is part of the set if and only if a package whose name is equal to the name
    part of the specification is installed.  May not be used with a set name.</dd>

    <dt><code>?:</code></dt>
    <dd>Like <code>?</code>, but considers the slot part of the specification (if any) in addition to the name part.</dd>
</dl>

<p>If the set <code>foo</code> exists and is not a builtin set, the special set <code>foo*</code> is automatically
generated by Paludis. The <code>foo*</code> set is like the <code>foo</code> set, except that it behaves as if every
operator is a <code>*</code>. In addition, any set names inside that set are treated as if they were
<code>setname*</code>, so that the operator behaviour override is recursive.</p>