summaryrefslogtreecommitdiffstats
path: root/doc/dependency_resolution/package_modeling.docbook
blob: 84d01a9f2e107a7b8f30c519e9422ec12def0151 (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
82
83
84
85
86
87
88
89
90
91
92
93
<chapter id='dependency-resolution-package-modeling'>
<title>Package Modeling</title>

<sect1 id='dependency-resolution-package-modeling-constraint-satisfaction'>
	<title>Constraint Satisfaction</title>
	<sect2 id='dedependency-resolution-package-modeling-constraint-satisfaction-constraint-types'>
	<title>Constraint Types</title>
	<para>
	Dependency resolution involves satisfaction of
	many constraints:
	<itemizedlist>
	<listitem>
		Persistent configuration parameters, like those that come from
		make.profile, make.conf, and the /etc/portage directory.
	</listitem>
	<listitem>
		Current command parameters, which may include options, atoms, or sets.
	</listitem>
	<listitem>
	<link linkend='dependency-resolution-package-modeling-constraint-satisfaction-package-dependencies'>
	Package Dependencies</link>
	</listitem>
	</itemizedlist>
	</para>
	</sect2>

	<sect2 id='dependency-resolution-package-modeling-constraint-satisfaction-package-dependencies'>
	<title>Package Dependencies</title>
	<para>
	Common types of package dependencies:
	<itemizedlist>
	<listitem>
		Files required for building or installing. Downloads may
		be necessary to satisfy these.
	</listitem>
	<listitem>
		Other packages required to be installed for
		buildtime or runtime.
	</listitem>
	<listitem>
		Blockers that prevent conflicting packages from being installed
		simultaneously.
	</listitem>
	</itemizedlist>
	</para>
	</sect2>
</sect1>

<sect1 id='dependency-resolution-package-modeling-conflicts'>
	<title>Conflicts</title>
	<sect2 id='dependency-resolution-package-modeling-blocker-conflicts'>
		<title>Blocker Conflicts</title>
		<para>
		If one package blocks another package, the two packages
		conflict such that they cannot be installed simultaneously.
		These conflicts are often due to file collisions.
		</para>
	</sect2>
	<sect2 id='dependency-resolution-package-modeling-slot-conflicts'>
		<title>Slot Conflicts</title>
		<para>
		If two different packages that occupy the same slot are chosen
		to satisfy dependencies, a slot conflict occurs. The two packages
		cannot be installed simultaneously and therefore the respective
		dependencies will not be satisfied simultaneously.
		</para>
	</sect2>
	<sect2 id='dependency-resolution-package-modeling-indirect-conflicts'>
		<title>Indirect Conflicts</title>
		<para>
		If the dependencies of two parent packages cannot be installed
		simultaneously, it creates an indirect conflict between the parent
		packages since their respective dependencies cannot be satisfied
		simultaneously.
		</para>
	</sect2>
</sect1>

<sect1 id='dependency-resolution-package-modeling-dependency-neglection'>
	<title>Dependency Neglection</title>
	<para>
	In order to significantly reduce the resources consumed by
	the modeling process, the dependencies of
	installed packages may be neglected.
	</para>
	<para>
	If a more complete dependency calculation is desired,
	there is a --complete-graph option which will ensure that the
	dependencies of installed packages are properly considered.
	</para>
</sect1>

</chapter>