|
|
1 | <?xml version='1.0' encoding='UTF-8'?> |
|
|
2 | <!DOCTYPE sections SYSTEM "/dtd/book.dtd"> |
|
|
3 | |
| 1 | <!-- The content of this document is licensed under the CC-BY-SA license --> |
4 | <!-- The content of this document is licensed under the CC-BY-SA license --> |
| 2 | <!-- See http://creativecommons.org/licenses/by-sa/1.0 --> |
5 | <!-- See http://creativecommons.org/licenses/by-sa/1.0 --> |
| 3 | |
6 | |
| 4 | <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/handbook/hb-working-use.xml,v 1.5 2003/12/16 18:08:56 swift Exp $ --> |
7 | <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/handbook/hb-working-use.xml,v 1.33 2005/07/13 23:53:43 vapier Exp $ --> |
| 5 | |
8 | |
| 6 | <sections> |
9 | <sections> |
|
|
10 | |
|
|
11 | <version>1.29</version> |
|
|
12 | <date>2005-05-27</date> |
|
|
13 | |
| 7 | <section> |
14 | <section> |
| 8 | <title>What are USE-flags?</title> |
15 | <title>What are USE-flags?</title> |
| 9 | <subsection> |
16 | <subsection> |
| 10 | <title>The ideas behind USE-flags</title> |
17 | <title>The ideas behind USE-flags</title> |
| 11 | <body> |
18 | <body> |
| … | |
… | |
| 25 | with KDE-support if those packages work flawlessly without? |
32 | with KDE-support if those packages work flawlessly without? |
| 26 | </p> |
33 | </p> |
| 27 | |
34 | |
| 28 | <p> |
35 | <p> |
| 29 | To help users in deciding what to install/activate and what not, we wanted the |
36 | To help users in deciding what to install/activate and what not, we wanted the |
| 30 | user to specify his environment in an easy way. This forces the user into |
37 | user to specify his/her environment in an easy way. This forces the user into |
| 31 | deciding what he really wants and eases the process for Portage, our package |
38 | deciding what they really want and eases the process for Portage, our package |
| 32 | managment system, to make useful decisions. |
39 | managment system, to make useful decisions. |
| 33 | </p> |
40 | </p> |
| 34 | |
41 | |
| 35 | </body> |
42 | </body> |
| 36 | </subsection> |
43 | </subsection> |
| … | |
… | |
| 44 | Portage will know that you want support for the chosen keyword. Of course |
51 | Portage will know that you want support for the chosen keyword. Of course |
| 45 | this also alters the dependency information for a package. |
52 | this also alters the dependency information for a package. |
| 46 | </p> |
53 | </p> |
| 47 | |
54 | |
| 48 | <p> |
55 | <p> |
| 49 | Lets take a look at a specific example: the <c>kde</c> keyword. If you do not |
56 | Let us take a look at a specific example: the <c>kde</c> keyword. If you do not |
| 50 | have this keyword in your <c>USE</c> variable, all packages that have |
57 | have this keyword in your <c>USE</c> variable, all packages that have |
| 51 | <e>optional</e> KDE support will be compiled <e>without</e> KDE support. All |
58 | <e>optional</e> KDE support will be compiled <e>without</e> KDE support. All |
| 52 | packages that have an <e>optional</e> KDE dependency will be installed |
59 | packages that have an <e>optional</e> KDE dependency will be installed |
| 53 | <e>without</e> installing the KDE libraries (as dependency). If you have defined |
60 | <e>without</e> installing the KDE libraries (as dependency). If you have defined |
| 54 | the <c>kde</c> keyword, then those packages <e>will</e> be compiled with KDE |
61 | the <c>kde</c> keyword, then those packages <e>will</e> be compiled with KDE |
| … | |
… | |
| 74 | <li> |
81 | <li> |
| 75 | A <e>global</e> USE-flag is used by several packages, system-wide. This is |
82 | A <e>global</e> USE-flag is used by several packages, system-wide. This is |
| 76 | what most people see as USE-flags. |
83 | what most people see as USE-flags. |
| 77 | </li> |
84 | </li> |
| 78 | <li> |
85 | <li> |
| 79 | A <e>local</e> USE-fag is used by a single package to make package-specific |
86 | A <e>local</e> USE-flag is used by a single package to make package-specific |
| 80 | decisions. |
87 | decisions. |
| 81 | </li> |
88 | </li> |
| 82 | </ul> |
89 | </ul> |
| 83 | |
90 | |
| 84 | <p> |
91 | <p> |
| … | |
… | |
| 96 | icc - Use the Intel C++ Compiler if the package supports it |
103 | icc - Use the Intel C++ Compiler if the package supports it |
| 97 | icc-pgo - Enable PGO data generation or use when use icc. |
104 | icc-pgo - Enable PGO data generation or use when use icc. |
| 98 | imap - Adds support for IMAP |
105 | imap - Adds support for IMAP |
| 99 | </pre> |
106 | </pre> |
| 100 | |
107 | |
|
|
108 | <p> |
|
|
109 | A list of available local USE-flags can be found locally in |
|
|
110 | <path>/usr/portage/profiles/use.local.desc</path>. |
|
|
111 | </p> |
|
|
112 | |
| 101 | </body> |
113 | </body> |
| 102 | </subsection> |
114 | </subsection> |
| 103 | </section> |
115 | </section> |
| 104 | <section> |
116 | <section> |
| 105 | <title>Using USE-flags</title> |
117 | <title>Using USE-flags</title> |
| … | |
… | |
| 115 | <p> |
127 | <p> |
| 116 | As previously mentioned, all USE-flags are declared inside the <c>USE</c> |
128 | As previously mentioned, all USE-flags are declared inside the <c>USE</c> |
| 117 | variable. To make it easy for users to search and pick USE-flags, we already |
129 | variable. To make it easy for users to search and pick USE-flags, we already |
| 118 | provide a <e>default</e> USE setting. This setting is a collection of USE-flags |
130 | provide a <e>default</e> USE setting. This setting is a collection of USE-flags |
| 119 | we think are commonly used by the Gentoo users. This default setting is declared |
131 | we think are commonly used by the Gentoo users. This default setting is declared |
| 120 | in the <path>/etc/make.profile/make.defaults</path> file. Let us take a look at |
132 | in the <path>make.defaults</path> files part of your profile. |
| 121 | this default setting: |
133 | </p> |
|
|
134 | |
| 122 | </p> |
135 | <p> |
|
|
136 | The profile your system listens to is pointed to by the |
|
|
137 | <path>/etc/make.profile</path> symlink. Each profile works on top of another, |
|
|
138 | larger profile, the end result is therefore the sum of all profiles. The top |
|
|
139 | profile is the <path>base</path> profile |
|
|
140 | (<path>/usr/portage/profiles/base</path>). |
|
|
141 | </p> |
| 123 | |
142 | |
| 124 | <pre caption="/etc/make.profile/make.defaults USE variable"> |
143 | <p> |
| 125 | USE="x86 oss apm arts avi berkdb crypt cups encode foomaticdb gdbm gif gpm gtk |
144 | Let us take a look at this default setting for the 2004.3 profile: |
| 126 | imlib jpeg kde gnome libg++ libwww mad mikmod motif mpeg ncurses nls |
145 | </p> |
| 127 | oggvorbis opengl pam pdflib png python qt quicktime readline sdl slang |
146 | |
|
|
147 | <pre caption="Cumulative make.defaults USE variable for the 2004.3 profile"> |
|
|
148 | <comment>(This example is the sum of the settings in base, default-linux, |
|
|
149 | default-linux/x86 and default-linux/x86/2004.3)</comment> |
|
|
150 | USE="x86 oss apm arts avi berkdb bitmap-fonts crypt cups encode fortran f77 |
|
|
151 | foomaticdb gdbm gif gpm gtk gtk2 imlib jpeg kde gnome libg++ libwww mad |
|
|
152 | mikmod motif mpeg ncurses nls oggvorbis opengl pam pdflib png python qt |
| 128 | spell ssl svga tcpd truetype X xml2 xmms xv zlib" |
153 | quicktime readline sdl spell ssl svga tcpd truetype X xml2 xmms xv zlib" |
| 129 | </pre> |
154 | </pre> |
| 130 | |
155 | |
| 131 | <p> |
156 | <p> |
| 132 | As you can see, this variable already contains quite a lot of keywords. Do |
157 | As you can see, this variable already contains quite a lot of keywords. Do |
| 133 | <b>not</b> alter the <path>/etc/make.profile/make.defaults</path> file to tailor |
158 | <b>not</b> alter any <path>make.defaults</path> file to tailor |
| 134 | the <c>USE</c> variable to your needs: changes in this file will be undone when |
159 | the <c>USE</c> variable to your needs: changes in this file will be undone when |
| 135 | you update Portage! |
160 | you update Portage! |
| 136 | </p> |
161 | </p> |
| 137 | |
162 | |
| 138 | <p> |
163 | <p> |
| … | |
… | |
| 153 | </pre> |
178 | </pre> |
| 154 | |
179 | |
| 155 | </body> |
180 | </body> |
| 156 | </subsection> |
181 | </subsection> |
| 157 | <subsection> |
182 | <subsection> |
|
|
183 | <title>Declaring USE flags for individual packages</title> |
|
|
184 | <body> |
|
|
185 | |
|
|
186 | <p> |
|
|
187 | Sometimes you want to declare a certain USE flag for one (or a couple) of |
|
|
188 | applications but not system-wide. To accomplish this, you will need to create |
|
|
189 | the <path>/etc/portage</path> directory (if it doesn't exist yet) and edit |
|
|
190 | <path>/etc/portage/package.use</path>. |
|
|
191 | </p> |
|
|
192 | |
|
|
193 | <p> |
|
|
194 | For instance, if you don't want <c>berkdb</c> support globally but you do want |
|
|
195 | it for <c>mysql</c>, you would add: |
|
|
196 | </p> |
|
|
197 | |
|
|
198 | <pre caption="/etc/portage/package.use example"> |
|
|
199 | dev-db/mysql berkdb |
|
|
200 | </pre> |
|
|
201 | |
|
|
202 | <p> |
|
|
203 | You can of course also explicitly <e>disable</e> USE flags for a certain |
|
|
204 | application. For instance, if you don't want <c>java</c> support in PHP: |
|
|
205 | </p> |
|
|
206 | |
|
|
207 | <pre caption="/etc/portage/package.use 2nd example"> |
|
|
208 | dev-php/php -java |
|
|
209 | </pre> |
|
|
210 | |
|
|
211 | </body> |
|
|
212 | </subsection> |
|
|
213 | <subsection> |
| 158 | <title>Declare temporary USE-flags</title> |
214 | <title>Declare temporary USE-flags</title> |
| 159 | <body> |
215 | <body> |
| 160 | |
216 | |
| 161 | <p> |
217 | <p> |
| 162 | Sometimes you want to set a certain USE-setting only once. Instead of editing |
218 | Sometimes you want to set a certain USE-setting only once. Instead of editing |
| 163 | <path>/etc/make.conf</path> twice (to do and undo the USE-changes) you can just |
219 | <path>/etc/make.conf</path> twice (to do and undo the USE-changes) you can just |
| 164 | declare the USE-variable as environment variable. |
220 | declare the USE-variable as environment variable. Remember that, when you |
|
|
221 | re-emerge or update this application (either explicitly or as part of a system |
|
|
222 | update) your changes will be lost! |
| 165 | </p> |
223 | </p> |
| 166 | |
224 | |
| 167 | <p> |
225 | <p> |
| 168 | As an example we will temporarily remove java from the USE-setting |
226 | As an example we will temporarily remove java from the USE-setting |
| 169 | during the installation of mozilla. |
227 | during the installation of mozilla. |
| 170 | </p> |
228 | </p> |
| 171 | |
229 | |
| 172 | <note> |
|
|
| 173 | The <c>emerge</c> command will be discussed more thoroughly in <uri |
|
|
| 174 | link="?part=2&chap=2">Portage and Software</uri>. |
|
|
| 175 | </note> |
|
|
| 176 | |
|
|
| 177 | <pre caption="Using USE as evironment variable"> |
230 | <pre caption="Using USE as environment variable"> |
| 178 | # <i>USE="-java" emerge mozilla</i> |
231 | # <i>USE="-java" emerge mozilla</i> |
| 179 | </pre> |
232 | </pre> |
| 180 | |
233 | |
| 181 | </body> |
234 | </body> |
| 182 | </subsection> |
235 | </subsection> |
| 183 | <subsection> |
236 | <subsection> |
| 184 | <title>Inheriting USE-flags</title> |
237 | <title>Automatic USE Flags</title> |
| 185 | <body> |
238 | <body> |
| 186 | |
239 | |
| 187 | <p> |
240 | <p> |
| 188 | Some packages don't only listen to USE-flags, but also provide USE-flags. When |
241 | After certain packages are installed, additional USE flags will automatically |
| 189 | you install such a package, the USE-flag they provide is added to your USE |
242 | be enabled for you if you do not explicitly disable them. To view the list |
| 190 | setting. To view the list of packages that provide a USE-flag, check |
243 | of packages that trigger automatic USE-flags, check |
| 191 | <path>/etc/make.profile/use.defaults</path>: |
244 | <path>/etc/make.profile/use.defaults</path> and the <path>use.defaults</path> |
|
|
245 | files of the parent profiles. |
| 192 | </p> |
246 | </p> |
| 193 | |
247 | |
| 194 | <pre caption="A snippet from /etc/make.profile/use.defaults"> |
248 | <pre caption="A snippet from /etc/make.profile/use.defaults"> |
| 195 | gnome gnome-base/gnome |
249 | gnome gnome-base/gnome |
| 196 | gtk x11-libs/gtk+ |
250 | gtk x11-libs/gtk+ |
| … | |
… | |
| 200 | </pre> |
254 | </pre> |
| 201 | |
255 | |
| 202 | </body> |
256 | </body> |
| 203 | </subsection> |
257 | </subsection> |
| 204 | <subsection> |
258 | <subsection> |
| 205 | <title>Precendence</title> |
259 | <title>Precedence</title> |
| 206 | <body> |
260 | <body> |
| 207 | |
261 | |
| 208 | <p> |
262 | <p> |
| 209 | Of course there is a certain precendence on what setting has priority over the |
263 | Of course there is a certain precedence on what setting has priority over the |
| 210 | USE setting. You don't want to declare <c>USE="-java"</c> only to see that |
264 | USE setting. You don't want to declare <c>USE="-java"</c> only to see that |
| 211 | <c>java</c> is declared anyway. The precedence for the USE setting is, ordered |
265 | <c>java</c> is still used due to a setting that has a higher priority. |
|
|
266 | The precedence for the USE setting is, ordered |
| 212 | by priority (first has lowest priority): |
267 | by priority (first has lowest priority): |
| 213 | </p> |
268 | </p> |
| 214 | |
269 | |
| 215 | <ol> |
270 | <ol> |
| 216 | <li> |
271 | <li> |
| 217 | Default USE setting declared in <path>/etc/make.profile/make.defaults</path> |
272 | Default USE setting declared in the <path>make.defaults</path> files part of |
|
|
273 | your profile |
| 218 | </li> |
274 | </li> |
| 219 | <li> |
275 | <li> |
| 220 | Inherited USE setting if a package from |
276 | Inherited USE setting if a package from |
| 221 | <path>/etc/make.profile/use.defaults</path> is installed |
277 | <path>/etc/make.profile/use.defaults</path> is installed |
| 222 | </li> |
278 | </li> |
| 223 | <li> |
279 | <li> |
| 224 | User-defined USE setting in <path>/etc/make.conf</path> |
280 | User-defined USE setting in <path>/etc/make.conf</path> |
| 225 | </li> |
281 | </li> |
| 226 | <li> |
282 | <li> |
|
|
283 | User-defined USE setting in <path>/etc/portage/package.use</path> |
|
|
284 | </li> |
|
|
285 | <li> |
| 227 | User-defined USE setting as environment variable |
286 | User-defined USE setting as environment variable |
| 228 | </li> |
287 | </li> |
| 229 | </ol> |
288 | </ol> |
| 230 | |
289 | |
| 231 | <p> |
290 | <p> |
| 232 | To view the final <c>USE</c> setting as seen by Portage, run <c>emerge info</c>. |
291 | To view the final <c>USE</c> setting as seen by Portage, run <c>emerge |
| 233 | This will list all relevant variables (including the <c>USE</c> variable) with |
292 | --info</c>. This will list all relevant variables (including the <c>USE</c> |
| 234 | the content used by Portage. |
293 | variable) with the content used by Portage. |
| 235 | </p> |
294 | </p> |
| 236 | |
295 | |
| 237 | <pre caption="Running emerge info"> |
296 | <pre caption="Running emerge --info"> |
| 238 | # <i>emerge info</i> |
297 | # <i>emerge --info</i> |
|
|
298 | </pre> |
|
|
299 | |
|
|
300 | </body> |
|
|
301 | </subsection> |
|
|
302 | <subsection> |
|
|
303 | <title>Adapting your Entire System to New USE Flags</title> |
|
|
304 | <body> |
|
|
305 | |
|
|
306 | <p> |
|
|
307 | If you have altered your USE flags and you wish to update your entire system to |
|
|
308 | use the new USE flags, use <c>emerge</c>'s <c>--newuse</c> option: |
| 239 | </pre> |
309 | </p> |
|
|
310 | |
|
|
311 | <pre caption="Rebuilding your entire system"> |
|
|
312 | # <i>emerge --update --deep --newuse world</i> |
|
|
313 | </pre> |
|
|
314 | |
|
|
315 | <p> |
|
|
316 | Next, run Portage's depclean to remove the conditional dependencies that |
|
|
317 | were emerged on your "old" system but that have been obsoleted by the new USE |
|
|
318 | flags. |
|
|
319 | </p> |
|
|
320 | |
|
|
321 | <warn> |
|
|
322 | Running <c>emerge --depclean</c> is a dangerous operation and should be handled |
|
|
323 | with care. Double-check the provided list of "obsoleted" packages to make sure |
|
|
324 | it doesn't remove packages you need. In the following example we add the |
|
|
325 | <c>-p</c> switch to have depclean only list the packages without removing them. |
|
|
326 | </warn> |
|
|
327 | |
|
|
328 | <pre caption="Removing obsoleted packages"> |
|
|
329 | # <i>emerge -p --depclean</i> |
|
|
330 | </pre> |
|
|
331 | |
|
|
332 | <p> |
|
|
333 | When depclean has finished, run <c>revdep-rebuild</c> to rebuild the |
|
|
334 | applications that are dynamically linked against shared objects provided by |
|
|
335 | possibly removed packages. <c>revdep-rebuild</c> is part of the |
|
|
336 | <c>gentoolkit</c> package; don't forget to emerge it first. |
|
|
337 | </p> |
|
|
338 | |
|
|
339 | <pre caption="Running revdep-rebuild"> |
|
|
340 | # <i>revdep-rebuild</i> |
|
|
341 | </pre> |
|
|
342 | |
|
|
343 | <p> |
|
|
344 | When all this is accomplished, your system is using the new USE flag settings. |
|
|
345 | </p> |
| 240 | |
346 | |
| 241 | </body> |
347 | </body> |
| 242 | </subsection> |
348 | </subsection> |
| 243 | </section> |
349 | </section> |
| 244 | <section> |
350 | <section> |
| … | |
… | |
| 246 | <subsection> |
352 | <subsection> |
| 247 | <title>Viewing available USE-flags</title> |
353 | <title>Viewing available USE-flags</title> |
| 248 | <body> |
354 | <body> |
| 249 | |
355 | |
| 250 | <p> |
356 | <p> |
| 251 | In the next chapter on <uri link="?part=2&chap=2">Portage and Software</uri> |
|
|
| 252 | we will explain how to manage your installed software and how to work with |
|
|
| 253 | <c>emerge</c>. However, we will give you a primer on <c>emerge</c> by showing |
|
|
| 254 | you how to view what USE-flags a package uses. |
|
|
| 255 | </p> |
|
|
| 256 | |
|
|
| 257 | <p> |
|
|
| 258 | Let us take the example of <c>mozilla</c>: what USE-flags does it listen to? To |
357 | Let us take the example of <c>mozilla</c>: what USE-flags does it listen to? To |
| 259 | find out, we use <c>emerge</c> with the <c>--pretend</c> (don't really do |
358 | find out, we use <c>emerge</c> with the <c>--pretend</c> and <c>--verbose</c> |
| 260 | anything) and <c>--verbose</c> (give more output) options: |
359 | options: |
| 261 | </p> |
360 | </p> |
| 262 | |
361 | |
| 263 | <pre caption="Viewing the used USE-flags"> |
362 | <pre caption="Viewing the used USE-flags"> |
| 264 | # <i>emerge --pretend --verbose mozilla</i> |
363 | # <i>emerge --pretend --verbose mozilla</i> |
| 265 | These are the packages that I would merge, in order: |
364 | These are the packages that I would merge, in order: |
| … | |
… | |
| 270 | -moznocompose -moznoxft |
369 | -moznocompose -moznoxft |
| 271 | </pre> |
370 | </pre> |
| 272 | |
371 | |
| 273 | <p> |
372 | <p> |
| 274 | <c>emerge</c> isn't the only tool for this job. In fact, we have a tool |
373 | <c>emerge</c> isn't the only tool for this job. In fact, we have a tool |
| 275 | dedicated to package information called <c>etcat</c> which resides in the |
374 | dedicated to package information called <c>equery</c> which resides in the |
| 276 | <c>gentoolkit</c> package. First, install <c>gentoolkit</c>: |
375 | <c>gentoolkit</c> package. First, install <c>gentoolkit</c>: |
| 277 | </p> |
376 | </p> |
| 278 | |
377 | |
| 279 | <pre caption="Installing gentoolkit"> |
378 | <pre caption="Installing gentoolkit"> |
| 280 | # <i>emerge --usepkg gentoolkit</i> |
379 | # <i>emerge gentoolkit</i> |
| 281 | </pre> |
380 | </pre> |
| 282 | |
381 | |
| 283 | <p> |
382 | <p> |
| 284 | Now run <c>etcat</c> with the <c>uses</c> argument to view the USE-flags of a |
383 | Now run <c>equery</c> with the <c>uses</c> argument to view the USE-flags of a |
| 285 | certain package. For instance, for the <c>gnumeric</c> package: |
384 | certain package. For instance, for the <c>gnumeric</c> package: |
| 286 | </p> |
385 | </p> |
| 287 | |
386 | |
| 288 | <pre caption="Using etcat to view used USE-flags"> |
387 | <pre caption="Using equery to view used USE-flags"> |
| 289 | # <i>etcat uses gnumeric</i> |
388 | # <i>equery uses gnumeric</i> |
| 290 | [ Colour Code : <i>set</i> <comment>unset</comment> ] |
389 | [ Colour Code : <i>set</i> <comment>unset</comment> ] |
| 291 | [ Legend : (U) Col 1 - Current USE flags ] |
390 | [ Legend : (U) Col 1 - Current USE flags ] |
| 292 | [ : (I) Col 2 - Installed With USE flags ] |
391 | [ : (I) Col 2 - Installed With USE flags ] |
| 293 | |
392 | |
| 294 | U I [ Found these USE variables in : app-office/gnumeric-1.2.0 ] |
393 | U I [ Found these USE variables in : app-office/gnumeric-1.2.0 ] |