/[gentoo]/xml/htdocs/doc/en/handbook/hb-working-features.xml
Gentoo

Contents of /xml/htdocs/doc/en/handbook/hb-working-features.xml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.6 - (show annotations) (download) (as text)
Sun Nov 30 14:01:14 2003 UTC (10 years, 10 months ago) by swift
Branch: MAIN
Changes since 1.5: +5 -1 lines
File MIME type: application/xml
Add buildpkg keyword

1 <!-- The content of this document is licensed under the CC-BY-SA license -->
2 <!-- See http://creativecommons.org/licenses/by-sa/1.0 -->
3
4 <!-- $Header: /home/cvsroot/gentoo/xml/htdocs/doc/en/handbook/hb-working-features.xml,v 1.5 2003/11/30 13:46:29 swift Exp $ -->
5
6 <sections>
7 <section>
8 <title>DistCC</title>
9 <subsection>
10 <title>What is DistCC?</title>
11 <body>
12
13 <p>
14 <c>distcc</c> is a program to distribute compilations across several, not
15 necessarily identical, machines on a network. The <c>distcc</c> client sends all
16 necessary information to the available DistCC servers (running <c>distccd</c>)
17 so they can compile pieces of sourcecode for the client. The net result is a
18 faster compilation time.
19 </p>
20
21 <p>
22 You can find more elaborate information about <c>distcc</c> (and information on
23 how to have it work with Gentoo) in our <uri link="/doc/en/distcc.xml">Gentoo
24 Distcc Documentation</uri>.
25 </p>
26
27 </body>
28 </subsection>
29 <subsection>
30 <title>Installing DistCC</title>
31 <body>
32
33 <p>
34 Distcc ships with a graphical monitor to monitor tasks that your computer is
35 sending away for compilation. If you use Gnome then put 'gnome' in your
36 <c>USE</c> setting. However, if you don't use Gnome and would still like to have
37 the monitor then you should put 'gtk' in your <c>USE</c> setting.
38 </p>
39
40 <p>
41 Installing distcc is, as is with all software available through Gentoo's
42 Portage, extremely easy:
43 </p>
44
45 <note>
46 From now on, as you now know how to install binary packages if you want, we will
47 omit the <c>--usepkg</c> option throughout the rest of the Gentoo Handbook.
48 </note>
49
50 <pre caption="Installing Distcc">
51 # <i>emerge distcc</i>
52 </pre>
53
54 </body>
55 </subsection>
56 <subsection>
57 <title>Activating Portage Support</title>
58 <body>
59
60 <p>
61 Well, if installation is easy, the rest should be easy too :) So let us quickly
62 activate the Portage support for <c>distcc</c>.
63 </p>
64
65 <p>
66 First, open <path>/etc/make.conf</path> and edit the <c>FEATURES</c> variable so
67 it contains the <c>distcc</c> keyword. Next, edit the <c>MAKEOPTS</c> variable
68 so it reads <c>-jX</c> with <c>X</c> the number of CPUs that run <c>distccd</c>
69 (including the current host) plus one:
70 </p>
71
72 <pre caption="Possible MAKEOPTS setting in /etc/make.conf">
73 <comment># Suppose you have 2 single-CPU distccd hosts excluding this host:</comment>
74 MAKEOPTS="-j4"
75 </pre>
76
77 <p>
78 Now, still inside <path>/etc/make.conf</path>, uncomment the
79 <c>PORTAGE_TMPDIR</c> line and add the following line at the end
80 of the file:
81 </p>
82
83 <pre caption="Add an extra, distcc-specific variable to /etc/make.conf">
84 <comment># Don't forget to uncomment the PORTAGE_TMPDIR variable</comment>
85 DISTCC_DIR=${PORTAGE_TMPDIR}/portage/.distcc
86 </pre>
87
88 <p>
89 Now run <c>distcc-config</c> and enter the list of available DistCC servers. For
90 a simple example we assume that the available DistCC servers are
91 <c>192.168.1.102</c> (the current host), <c>192.168.1.103</c> and
92 <c>192.168.1.104</c> (two "remote" hosts):
93 </p>
94
95 <pre caption="Configuring distcc to use three available DistCC servers">
96 # <i>distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"</i>
97 </pre>
98
99 <p>
100 Of course, don't forget to run the <c>distccd</c> daemon too:
101 </p>
102
103 <pre caption="Starting the distcc daemon">
104 # <i>/etc/init.d/distccd start</i>
105 </pre>
106
107 <p>
108 Congratulations, your system will now use distributed compiling! For more
109 in-depth information about DistCC and Gentoo, please read our <uri
110 link="/doc/en/distcc.xml">Gentoo DistCC Documentation</uri>.
111 </p>
112
113 </body>
114 </subsection>
115 </section>
116 <section>
117 <title>ccache</title>
118 <subsection>
119 <title>What is ccache?</title>
120 <body>
121
122 <p>
123 <c>ccache</c> is a fast compiler cache. When you compile a program, it will
124 cache intermediate results so that, when you ever recompile the same program,
125 the compilation time is greatly reduced. In common compilations this can result
126 in 5 to 10 times faster compilation times.
127 </p>
128
129 <p>
130 If you are interested in the ins and outs of <c>ccache</c>, please visit the
131 <uri link="http://ccache.samba.org">ccache homepage</uri>.
132 </p>
133
134 </body>
135 </subsection>
136 <subsection>
137 <title>Installing ccache</title>
138 <body>
139
140 <p>
141 Installing <c>ccache</c> with Gentoo is a breeze. Just emerge it and you're done
142 :)
143 </p>
144
145 <pre caption="Installing ccache">
146 # <i>emerge ccache</i>
147 </pre>
148
149 </body>
150 </subsection>
151 <subsection>
152 <title>Activating Portage Support</title>
153 <body>
154
155 <p>
156 First, edit <path>/etc/make.conf</path> and alter the <c>FEATURES</c> variable
157 so that it contains the <c>ccache</c> keyword:
158 </p>
159
160 <pre caption="Editing FEATURES in /etc/make.conf">
161 FEATURES="ccache"
162 </pre>
163
164 <p>
165 Next, edit (or create) the <c>CCACHE_SIZE</c> variable (also in
166 <path>/etc/make.conf</path>) so it contains the amount of diskspace you want to
167 sacrifice for <c>ccache</c>:
168 </p>
169
170 <pre caption="Editing CCACHE_SIZE in /etc/make.conf">
171 CCACHE_SIZE="2G"
172 </pre>
173
174 <p>
175 As of now, Portage will use <c>ccache</c> to speed up compilations where
176 possible. If you are uncertain that <c>ccache</c> works, you can run <c>ccache
177 -s</c> to view the <c>ccache</c> statistics:
178 </p>
179
180 <pre caption="Viewing ccache statistics">
181 # <i>ccache -s</i>
182 </pre>
183
184 </body>
185 </subsection>
186 </section>
187 <section>
188 <title>Binary Packages</title>
189 <subsection>
190 <title>Creating binary packages</title>
191 <body>
192
193 <p>
194 We have already discussed how to work with prebuild packages, but how do you
195 create your own prebuild packages?
196 </p>
197
198 <p>
199 If the package is already installed, you can use the <c>quickpkg</c> command
200 which will make a tarball of the installed files. This is very interesting for
201 backup purposes!
202 </p>
203
204 <pre caption="Using quickpkg">
205 # <i>quickpkg gnumeric</i>
206 </pre>
207
208 <p>
209 If the package isn't installed yet, you can install it using <c>emerge</c> and
210 ask to build a binary package too. <c>emerge</c> uses the <c>--buildpkg</c>
211 option (<c>-b</c> in short) for this:
212 </p>
213
214 <pre caption="Installing gnumeric and building binary packages too">
215 # <i>emerge --buildpkg gnumeric</i>
216 </pre>
217
218 <p>
219 If you want Portage to do this by default, you should set the <c>buildpkg</c>
220 keyword in the <c>FEATURES</c> variable declared in <path>/etc/make.conf</path>.
221 </p>
222
223 <pre caption="Automatically creating binary packages">
224 FEATURES="buildpkg"
225 </pre>
226
227 <p>
228 If you don't want to install the software, but only build the package, you can
229 use the <c>--buildpkgonly</c> option (<c>-B</c> in short):
230 </p>
231
232 <pre caption="Building a binary package for gnumeric">
233 # <i>emerge --buildpkgonly gnumeric</i>
234 </pre>
235
236 </body>
237 </subsection>
238 </section>
239 <section>
240 <title>Security Related Features</title>
241 <subsection>
242 <title>Sandbox</title>
243 <body>
244
245 <p>
246 While building and installing packages, Portage uses a <e>sandbox</e> to protect
247 your live system. This means that, as long as the package isn't installed on
248 your system, the package cannot touch any file outside the sandbox. This
249 ensures that Portage knows what files are created and modified by a package.
250 </p>
251
252 <p>
253 When the package compilation is finished, Portage will "preinstall" the package
254 in the sandbox, registering what files are placed and where. It will then move
255 those files from the sandbox on your live system.
256 </p>
257
258 </body>
259 </subsection>
260 <subsection>
261 <title>User Privileges</title>
262 <body>
263
264 <p>
265 Portage also supports building packages as non-root user (more precisely, as
266 user "portage", group "portage"). This improves the security during the
267 build process. You can opt to use user privileges with or without sandboxing. Of
268 course, it goes without saying that user privileges and sandboxing is the most
269 preferred method :)
270 </p>
271
272 </body>
273 </subsection>
274 <subsection>
275 <title>Activating sandbox and/or userpriv</title>
276 <body>
277
278 <p>
279 Portage will use <c>sandbox</c> per default. If you want <c>userpriv</c>, you
280 should add it to the <c>FEATURES</c> variable. Note that activating
281 <c>userpriv</c> will drop <c>sandbox</c> support, unless you also activate
282 <c>usersandbox</c>:
283 </p>
284
285 <pre caption="Activating userpriv and usersandbox">
286 FEATURES="userpriv usersandbox"
287 </pre>
288
289 <warn>
290 Do <e>not</e> remove <c>sandbox</c> from the <c>FEATURES</c> variable!
291 </warn>
292
293 </body>
294 </subsection>
295 <subsection>
296 <title>Strict Checking</title>
297 <body>
298
299 <p>
300 Portage can be asked to react strongly to possibly dangerous conditions (such as
301 missing or incorrect Manifest files). To activate this strict checking, add the
302 <c>strict</c> keyword to the <c>FEATURES</c> variable:
303 </p>
304
305 <pre caption="Activating strict checking">
306 FEATURES="strict"
307 </pre>
308
309 </body>
310 </subsection>
311 </section>
312 <section>
313 <title>Other Features</title>
314 <subsection>
315 <title>Portage Help</title>
316 <body>
317
318 <p>
319 There are several other keywords you can place in the <c>FEATURES</c> variable.
320 Most of them are targeted towards developers and less interesting for the casual
321 user. If you are interested in learning more about these features (or Portage
322 generally), don't forget to read the <path>make.conf</path> manpage we provide.
323 </p>
324
325 <pre caption="More Portage-related information">
326 # <i>man make.conf</i>
327 </pre>
328
329 </body>
330 </subsection>
331 </section>
332 </sections>

  ViewVC Help
Powered by ViewVC 1.1.20