<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE sections SYSTEM "/dtd/book.dtd">

<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->

<!-- $Id: hb-working-use.xml,v 1.3 2006/09/01 17:39:29 neysx Exp $ -->

<sections>

<version>1.32</version>
<date>2006-01-13</date>

<section>
<title>Wat zijn USE vlaggen?</title>
<subsection>
<title>Het idee achter USE vlaggen</title>
<body>

<p>
Als u Gentoo (of een willekeurige andere distributie, of zelfs 
besturingssysteem) installeert, maakt u, afhankelijk van de bestemming ervan, 
keuzes. Een setup voor een server verschilt van een setup voor een workstation.
Een spelletjes-pc verschilt van een 3D-rendering workstation.
</p>

<p>
Dit is niet alleen waar voor de keuzes qua pakketten die u wilt installeren,
maar ook welke mogelijkheden een bepaald pakket moet hebben. Als u geen OpenGL
nodig heeft, waarom zou u dan OpenGL willen installeren en OpenGL-ondersteuning
in de meeste van uw pakketten bouwen? Als u geen KDE wilt gebruiken, waarom zou
u pakketten willen compileren met KDE-ondersteuning terwijl ze perfect zonder
werken?
</p>

<p>
Om u te helpen kiezen wat wel en wat niet te installeren en activeren,
willen we u op een eenvoudige manier uw omgeving laten definiëren. Dit dwingt
u een keuze te maken wat u echt wilt en maakt het voor Portage, ons 
pakketbeheersysteem, makkelijker om nuttige beslissingen te maken.
</p>

</body>
</subsection>
<subsection>
<title>Definitie van een USE vlag</title>
<body>

<p>
Voer de USE vlaggen in. Zo'n vlag is een sleutelwoord dat staat voor de
ondersteunings- en afhankelijkheidsinformatie voor een bepaald concept. Als u
een bepaalde USE-vlag definieert, zal Portage weten dat u ondersteuning voor
het gekozen sleutelwoord wil. Natuurlijk verandert dit ook de
afhankelijkheden van een pakket.
</p>

<p>
Laten we kijken naar een specifiek voorbeeld: het <c>kde</c> sleutelwoord. Als
u dit sleutelwoord niet in uw <c>USE</c> variabele hebt, zullen alle pakketten
met <e>optionele</e> KDE-ondersteuning <e>zonder</e> KDE-ondersteuning
gecompileerd worden. Alle pakketten met een <e>optionele</e> KDE-afhankelijkheid
zullen <e>zonder</e> de KDE-bibliotheken (als afhankelijkheid) geïnstalleerd
worden. Als u het <c>kde</c> sleutelwoord wel gebruikt, zullen die pakketten
<e>wel</e> met KDE-ondersteuning gecompileerd worden, en de KDE-bibliotheken
zullen als afhankelijkheid geïnstalleerd worden.
</p>

<p>
Door de sleutelwoorden op de correcte wijze te kiezen, kunt u een systeem
krijgen dat precies aan uw eisen voldoet.
</p>

</body>
</subsection>
<subsection>
<title>Welke USE vlaggen bestaan?</title>
<body>

<p>
Er zijn twee typen USE vlaggen: <e>globale</e> en <e>lokale</e> USE vlaggen.
</p>

<ul>
  <li>
    Een <e>globale</e> USE vlag wordt door meerdere pakketten gebruikt, over
    het hele systeem. Dit is wat de meeste mensen als een USE vlag zien.
  </li>
  <li>
    Een <e>lokale</e> USE vlag wordt gebruikt door één enkel pakket om
    pakket specifieke keuzes te maken.
  </li>
</ul>

<p>
Een lijst met beschikbare globale USE vlaggen kan <uri
link="/dyn/use-index.xml">online</uri> (Engelstalig) of lokaal in
<path>/usr/portage/profiles/use.desc</path> worden gevonden. 
</p>

<p>
Een lijst met beschikbare lokale USE vlaggen kan worden gevonden in
<path>/usr/portage/profiles/use.local.desc</path>.
</p>

</body>
</subsection>
</section>
<section>
<title>USE vlaggen gebruiken</title>
<subsection>
<title>Permanente USE vlaggen vaststellen</title>
<body>

<p>
In de hoop dat u overtuigd bent van het belang van USE vlaggen, zullen we u
nu vertellen hoe u USE vlaggen definieert.
</p>

<p>
Zoals eerder vermeld, alle USE vlaggen zijn gedefinieerd binnen de 
<c>USE</c> variabele. Om het voor gebruikers makkelijker te maken om 
USE vlaggen te kiezen, bieden we een <e>standaard</e> USE-instelling. 
Deze instelling is een verzameling van USE vlaggen waarvan wij denken dat ze 
algemeen gebruikt worden door Gentoo-gebruikers. Deze standaardinstelling is 
vastgesteld in de <path>make.defaults</path> bestanden, die deel uitmaken 
van uw profiel.
</p>

<p>
Naar het profiel waarnaar u systeem luistert, wordt verwezen door de
<path>/etc/make.profile</path> symlink. Ieder profiel werkt boven een ander,
groter, profiel wat resulteert in een optelsom van alle profielen. Het bovenste
profiel is het <path>basis</path>-profiel
(<path>/usr/portage/profiles/base</path>).
</p>

<p>
Laten we een blik werpen op deze standaard instelling:
</p>

<pre caption="Cumulatieve make.defaults USE variabele voor het 2004.3 profiel">
<comment>(Dit voorbeeld is de optelsom van de instelling in base, default-linux,
 default-linux/x86 en default-linux/x86/2004.3)</comment>
USE="x86 oss apm arts avi berkdb bitmap-fonts crypt cups encode fortran f77
     foomaticdb gdbm gif gpm gtk imlib jpeg kde gnome libg++ libwww mad
     mikmod motif mpeg ncurses nls oggvorbis opengl pam pdflib png python qt
     quicktime readline sdl spell ssl svga tcpd truetype X xml2 xmms xv zlib"
</pre>

<p>
Zoals u kunt zien bevat deze variabele al een redelijk aantal sleutelwoorden.
Verander <b>geen</b> <path>make.defaults</path> bestand om de <c>USE</c>
variabele naar uw wens aan te passen: veranderingen worden ongedaan gemaakt
zodra u Portage update!
</p>

<p>
Om deze standaard instelling aan te pasen, dient u sleutelwoorden toe te voegen
of te verwijderen uit de <c>USE</c> variabele. Dit wordt globaal gedaan door de
<c>USE</c> variabele in <path>/etc/make.conf</path> te definiëren. In deze
variabele kunt u benodigde extra USE vlaggen toevoegen, of ongewenste
USE vlaggen verwijderen. Dit laatste wordt gedaan door een min-teken ("-") voor
het sleutelwoord te zetten.
</p>

<p>
Om bijvoorbeeld ondersteuning voor KDE en QT te verwijderen maar ondersteuning
voor ldap toe te voegen, kan de volgende <c>USE</c> vastgesteld worden in
<path>/etc/make.conf</path>:
</p>

<pre caption="Een voorbeeld USE instelling in /etc/make.conf">
USE="-kde -qt ldap"
</pre>

</body>
</subsection>
<subsection>
<title>USE vlaggen voor individuele pakketten</title>
<body>

<p>
Soms wilt u een bepaalde USE-vlag voor een (of een paar) applicaties
vaststellen, maar niet voor het hele systeem. Om dit te bereiken, zult u de map
<path>/etc/portage</path> moeten aanmaken (indien deze nog niet bestaat) en
<path>/etc/portage/package.use</path> aanpassen.
</p>

<p>
Wanneer u bijvoorbeeld globaal geen ondersteuning wilt voor <c>berkdb</c>, maar
u wilt wel dat <c>mysql</c> het ondersteunt, kunt u dit toevoegen:
</p>

<pre caption="/etc/portage/package.use voorbeeld">
dev-db/mysql berkdb
</pre>

<p>
U kunt natuurlijk ook expliciet USE vlaggen <e>uit</e> zetten voor een bepaalde
applicatie. Bijvoorbeeld, indien u geen <c>java</c> ondersteuning in PHP wil:
</p>

<pre caption="/etc/portage/package.use tweede voorbeeld">
dev-php/php -java
</pre>

</body>
</subsection>
<subsection>
<title>Tijdelijk USE vlaggen vaststellen</title>
<body>

<p>
Soms wilt u slechts één keer een bepaalde USE instelling gebruiken. In plaats
van twee keer <path>/etc/make.conf</path> aan te passen (instellen en weer er
uit halen), kunt u ook de USE variabele als omgevingsvariabele instellen.
Onthoud dat de veranderingen verloren gaan wanneer u deze applicatie remerget 
of update (expliciet of als deel van een systeem update)!
</p>

<p>
Als voorbeeld zullen we tijdelijk java uit de USE instelling halen tijdens de
installatie van Mozilla.
</p>

<pre caption="USE als omgevings variabele gebruiken">
# <i>USE="-java" emerge mozilla</i>
</pre>

</body>
</subsection>
<subsection>
<title>Automatische USE vlaggen</title>
<body>

<p>
Sommige pakketten voegen automatisch USE vlaggen toe wanneer u deze niet
expliciet uitschakeld. Een lijst van pakketten die automatisch USE vlaggen
toevoegen is te vinden in <path>/etc/make.profile/use.defaults</path> en in
de <path>use.defaults</path> bestanden van de onderliggende profielen.
</p>

<pre caption="Een stukje van /etc/make.profile/use.defaults">
gnome           gnome-base/gnome
gtk             x11-libs/gtk+
qt              x11-libs/qt
kde             kde-base/kdebase
motif           x11-libs/openmotif
</pre>

</body>
</subsection>
<subsection>
<title>Prioriteiten</title>
<body>

<p>
Natuurlijk is er een bepaalde voorrang die bepaalt welke USE-vlag ingesteld zal
staan. U wilt niet <c>USE="-java"</c> instellen om er dan achter te komen dat
<c>java</c> sowieso gebruikt wordt omdat er een instelling met een hogere 
prioriteit is. De voorkeur voor de USE-instelling is op volgorde van prioriteit
(eerste heeft de laagste prioriteit):
</p>

<ol>
  <li>
    Standaard USE instelling, vastgesteld in de <path>make.defaults</path>
    bestanden die deel uitmaken van uw profiel
  </li>
  <li>
    Geërfde USE instelling als een pakket uit
    <path>/etc/make.profile/use.defaults</path> geïnstalleerd is.
  </li>
  <li>
    Door de gebruiker ingestelde USE instelling in <path>/etc/make.conf</path>
  </li>
  <li>
    Door de gebruiker ingestelde USE instelling in
    <path>/etc/portage/package.use</path>
  </li>
  <li>
    Door de gebruiker als omgevingsvariabele ingestelde USE instelling
  </li>
</ol>

<p>
Om de uiteindelijke <c>USE</c> instelling te zien zoals Portage die ziet, draai
<c>emerge --info</c>. Dit zal alle relevante variabelen met hun inhoud laten
zien (inclusief de <c>USE</c> variabele).
</p>

<pre caption="Emerge --info draaien">
# <i>emerge --info</i>
</pre>

</body>
</subsection>
<subsection>
<title>Uw hele systeem aanpassen aan nieuwe USE vlaggen</title>
<body>

<p>
Als u de USE vlaggen hebt aangepast en u wilt het hele systeem updaten zodat
de nieuwe USE vlaggen worden gebruikt, gebruik dan <c>emerge</c>'s
<c>--newuse</c> optie:
</p>

<pre caption="Je hele systeem updaten">
# <i>emerge --update --deep --newuse world</i>
</pre>

<p>
Draai nu Portage's depclean om de voorwaardelijke afhankelijkheden die zijn
gemerged op uw "oude" systeem, maar nu niet meer nodig zijn, te verwijderen.
</p>

<warn>
<c>emerge --depclean</c> draaien is een gevaarlijke operatie en dient met zorg
behandeld te worden. Double-check de lijst met "oude" pakketten om er zeker van
te zijn dat het geen benodigde pakketten verwijdert. In het volgende voorbeeld
voegen we de <c>-p</c> optie toe zodat hij alleen de lijst met pakketten geeft
zonder ze te verwijderen.
</warn>

<pre caption="Oude pakketten verwijderen">
# <i>emerge -p --depclean</i>
</pre>

<p>
Als depclean klaar is, draai <c>revdep-rebuild</c> om applicaties te herbouwen
die dynamisch gelinkt zijn met gedeelde objecten die mogelijk werden geleverd
door verwijderde pakketten. <c>revdep-rebuild</c> is een deel van het
<c>gentoolkit</c> pakket; vergeet dit niet eerst te emergen.
</p>

<pre caption="Revdep-rebuild draaien">
# <i>revdep-rebuild</i>
</pre>

<p>
Als dit klaar is, gebruikt uw systeem de nieuwe USE vlag instellingen.
</p>

</body>
</subsection>
</section>
<section>
<title>Pakket specifieke USE vlaggen</title>
<subsection>
<title>Beschikbare USE vlaggen bekijken</title>
<body>

<p>
Laten we het voorbeeld van <c>mozilla</c> nemen: naar welke USE vlaggen
luistert het? Om dit uit te vinden gebruiken we <c>emerge</c> met de
<c>--pretend</c> en <c>--verbose</c> opties:
</p>

<pre caption="De gebruikte USE vlaggen bekijken">
# <i>emerge --pretend --verbose mozilla</i>
These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild   R   ] www-client/mozilla-1.7.12-r2  USE="crypt gnome java mozsvg ssl
truetype xprint -debug -ipv6 -ldap -mozcalendar -mozdevelop -moznocompose
-moznoirc -moznomail -moznoxft -postgres -xinerama" 0 kB
</pre>

<p>
<c>emerge</c> is niet het enige gereedschap voor deze job. Sterker nog, we
hebben een speciale tool om pakketinformatie te zien. Deze heet <c>equery</c>
en is onderdeel van het <c>gentoolkit</c> pakket. Installeer eerst
<c>gentoolkit</c>:
</p>

<pre caption="Gentoolkit installeren">
# <i>emerge gentoolkit</i>
</pre>

<p>
Draai nu <c>equery</c> met het <c>uses</c> argument om de USE vlaggen van een
bepaald pakket te zien. Voor het <c>gnumeric</c> pakket bijvoorbeeld:
</p>

<pre caption="Etcat gebruiken om de gebruikte USE vlaggen te zien">
# <i>equery uses gnumeric</i>
[ Colour Code : <i>set</i> <comment>unset</comment> ]
[ Legend      : (U) Col 1 - Current USE flags        ]
[             : (I) Col 2 - Installed With USE flags ]

 U I [ Found these USE variables in : app-office/gnumeric-1.2.0 ]
 - - <comment>libgda</comment>  : Adds GNU Data Access (CORBA wrapper) support for gnumeric
 - - <comment>gnomedb</comment> : unknown
 + + <i>python</i>  : Adds support/bindings for the Python language
 + + <i>bonobo</i>  : Adds support for gnome-base/bonobo (Gnome CORBA interfaces)
</pre>

</body>
</subsection>
</section>
</sections>
