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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>Installation of the base Arch system</title>
<!-- (en) Add your meta data here -->
<link href="css/larchdocs.css" rel="stylesheet" type="text/css"/>
<!--[if lte IE 7]>
<link href="css/yaml/core/iehacks.css" rel="stylesheet" type="text/css" />
<![endif]-->
</head>
<body>
<!-- skip link navigation -->
<ul id="skiplinks">
<li><a class="skip" href="#col1">Skip to main content (Press Enter).</a></li>
</ul>
<div class="page_margins">
<div class="page">
<div id="top"><div id="tm"></div></div>
<!-- begin: #col1 -->
<div id="col1" role="main">
<div id="col1_content">
<div id="header" role="banner">
<h1><span><em>live Arch Linux</em> builder</span></h1>
</div>
<!-- begin: #col3 navigation column -->
<div id="col3" role="complementary">
<div id="col3_content">
<img class="indent2" alt="larch logo" src="css/screen/larch150x.png" width="150" height="150" />
<div class="vlist">
<ul>
<li><a href="index.html"><h6>Table Of Contents</h6></a></li>
<li><a href="larchify.html"><h6>Next:</h6>
<div class="indent1">Building the live system</div></a></li>
<li><a href="larch_quick.html"><h6>Previous:</h6>
<div class="indent1">Quick Start</div></a></li>
</ul>
</div>
</div>
</div>
<!-- end: #col3 -->
<div class="larchdocs">
<h2 id="pagetitle" level="1">Installation of the base <em>Arch</em> system</h2>
<p>The <em>larch live</em> system will normally be built from a fresh
(unmodified, unconfigured) <em>Arch</em> installation. The Installation stage,
based on the 'larch-archin' command, handles the creation of this installation
by downloading all the desired packages (if they are not already in the host's
package cache) and installing them to an empty directory (by default
'/home/larchbuild').
</p>
<p>Other approaches are possible, such as using an already existing system
or building a fresh installation in some other way. In that case you can skip
this page.
</p>
<p>By default the package cache on the build host will be used, so that only
packages which have not already been downloaded will be fetched from the
chosen mirror. But it is possible to select another cache location, which
can also be on a remote machine, mounted using <em>sshfs</em> or <em>NFS</em>.
</p>
<p>This raw installation will not normally be modified by <em>larch</em>,
so it can be reused, or even carefully experimented with. However, note
that any changes you make to this installation manually will not be
reflected in the profile, so it might be difficult to reproduce what you
have done at a later time, or to revert the changes.
If you want to configure your system, then the raw installation is probably
not the best place for it, consider rather using the 'rootoverlay' directory
in the profile. All files in this directory will 'overwrite' (well, 'overlay',
actually) corresponding files in the base installation, by placing them
in a higher layer in the <em>aufs</em> mount in the <em>live</em> system.
This makes it very easy to collect your own customizations in a way that
can be applied quickly to a future build.
</p>
<p>See <a href="gui_installation.html">GUI Tab: Installation</a> for
details of the GUI for this process.
</p>
<h3><a name="pacman_conf"></a>'pacman.conf' and 'mirrorlist'</h3>
<p>To make it a little easier to manage upstream changes to the default
'pacman.conf', a separate file ('pacman.conf.repos') is used to specify
the repositories to use (the bit in 'pacman.conf' after the options).
There is a default version of this file in the <em>larch</em> package
at 'data/pacman.conf.repos', and for most simple installations this is
probably adequate, but if you need to change it you can place your own
version in the profile.
</p>
<p>Note that this file does not use the standard format, but
packs repository name and "server line" together on one line, separated
by ':'. There is no way to supply more than one "server line". There
are a couple of special 'codes', which <em>archin</em> will convert:
<ul>
<li>'*platform*' will be converted to 'i686' or 'x86_64' as
appropriate (according to the host).</li>
<li>'*default*' will be converted to the standard 'Include' entry.
This is normally 'Include = /etc/pacman.d/mirrorlist', but for
installation (only) this will be overridden if there is a 'mirrorlist'
file in the working directory - if neither exists, the fallback is
'data/mirrorlist' within the <em>larch</em> base directory.
This latter file is not supplied in the 'larch' package,
as it is not intended for use on <em>Arch</em>
systems. When the 'larch-setup' script detects that no 'pacman'
command is available, it downloads the 'pacman-allin' package
and among the things that gets extracted from it is this
'mirrorlist' file.
</li>
</ul>
Here is an example of a 'pacman.conf.repos' file:
</p>
<pre>
# Package repository entries for pacman.conf
# '*platform*' will be replaced by 'i686' or 'x86_64' as appropriate.
# '*default*' will be replaced by 'Include = /etc/pacman.d/mirrorlist'
# (but for the installation: a 'mirrorlist' file in the working directory will
# be preferred, or - if neither exists - then 'data/mirrorlist')
# You can add your own custom repositories (anywhere).
larch: Server = ftp://ftp.berlios.de/pub/larch/larch7.2/*platform*
#testing: *default*
core: *default*
extra: *default*
community: *default*
</pre>
<p>The top part of the complete 'pacman.conf' (the options) is taken from
a normal default 'pacman.conf' supplied in the 'larch' package at
'data/pacman.conf'.
You can override this by placing your own version in the profile, as
'pacman.conf.options' (note that any repositories you might specify in
this file will be ignored). A further option is to specify a version of
the file 'pacman.conf.repos' to be used only for the installation (not
for the resulting <em>live</em> system. This is especially useful if
you have a local package repository/mirror.
</p>
<p>The complete 'pacman.conf' file is generated by combining the header
part and the repository part and is saved to a temporary location for
the installation. After the installation is complete a final version of
this file (that for the <em>live</em> system) is placed at
the standard location within the installation, '/etc/pacman.conf'. Note
that it is not placed in the overlay, but - as an exception to the rule -
directly within the installation.
</p>
<h4>Usage example: The 'dummy' mirror</h4>
<p>During testing I found it useful to work with stable repositories.
I did this without creating a proper local mirror, but by creating a sort
of 'dummy' mirror containing only the ****.db.tar.gz files, relying on
the cache to supply the actual package files.
(The script 'repos.sh' supplied with <em>larch</em> in the
'scripts' directory can build these 'db' files from the current state of
the pacman sync database on the host.)
</p>
<p>If you are running the commands on the console you can pass the path
to a customized repository list file with the '-r' option. Remeber this
file must be constructed as detailed above.
</p>
<h3><a name="Custom_packages"></a>Custom packages</h3>
<p>It is possible to include your own 'custom' packages in the installation.
Maybe ones you have compiled yourself, e.g. from the AUR, or modified versions
(fixes or customizations) of standard packages. To do this you need to put
your packages in a directory and run <strong>gen-repo</strong>, supplied with
<em>larch</em> in the 'scripts' directory, on this directory (run it without
arguments to get usage instructions). Then place an entry for this new
repository in your 'pacman.conf.repos'.
If your packages replace some in the existing repositories, your custom
repository needs to come before those repositories in 'pacman.conf.repos'.
Any packages you want installed now just need to be
listed in <strong>addedpacks</strong>.
</p>
<h3><a name="package_selection"></a>Selection of packages to be installed</h3>
<p>The (compulsory) profile file 'addedpacks' contains a
list of packages
(just the package names, as supplied to 'pacman -S') to be installed,
one package name per line (empty lines and lines starting
with '#' are ignored). Also names of package groups may be included in this
file, to request installation of the whole group. If a group name is preceded
by '*', individual packages belonging to the group can be excluded via the
'vetopacks' file (see below) - without the '*' this exclusion
is not possible. It is also possible to
'include' other files by means of lines starting with '+' - this may be
followed by the absolute or relative path to the file to be included.
Package dependencies are handled by <em>pacman</em> automatically.
</p>
<p>The (optional) profile file 'vetopacks' allows packages to
be excluded from the installation list. This can be useful if individual
packages from a group should be excluded. However, note that inclusion of a
package in this file does not guarantee that it will not be installed - the
package is only removed from the installation list. If it is required by
another package it will be installed anyway. It is also possible to
'include' other files in the veto list using '+' lines.
</p>
<p>Certain 'required' and 'suggested' packages are included by
default, these are in the file 'data/requiredpacks' in the 'larch' package.
This file should generally not be edited, because an update of the 'larch'
package will overwrite any changes. Packages listed in this file can be
excluded by listing them in the profile 'vetopacks' file.
The whole file can be overridden in 'addedpacks' by
starting that with '!!!'. But only do that if you really know what you
are doing.
</p>
</div>
<div class="topref"><a href="#top">Top</a></div>
</div>
<!-- begin: #footer -->
<div id="footer">
<div id="footer-content" role="contentinfo">© 2010 Michael Towers<br />
Page layout assisted by <a href="http://www.yaml.de/">YAML</a> and
<a href="http://www.kuwata-lab.com/tenjin/">pyTenjin</a>
</div>
</div>
<!-- end: #footer -->
</div>
<!-- end: #col1 -->
<div id="bottom"><div id="bl"><div id="bm"></div></div></div>
</div>
</div>
<!-- full skiplink functionality in webkit browsers -->
<script src="css/yaml/core/js/webkit-focusfix.js" type="text/javascript"></script>
</body>
</html>
|