/[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.11 - (show annotations) (download) (as text)
Mon Mar 1 05:43:41 2004 UTC (10 years, 9 months ago) by swift
Branch: MAIN
Changes since 1.10: +1 -1 lines
File MIME type: application/xml
Move from draft - 2004.0 is released

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

  ViewVC Help
Powered by ViewVC 1.1.20