summaryrefslogtreecommitdiffstats
path: root/doc/dependency_resolution/package_modeling.docbook
blob: 900217294fdfd43a4560a9c8f1205dc17412ac97 (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
94
95
96
97
98
<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. In some
		cases, packages that block eachother can be temporarily
		installed simultaneously. In order to resolve file collisions
		that occur between two blocking packages that are installed
		simultaneously, the overlapping files must be removed from
		the contents list of the package which was installed first.
		</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>