<?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-portage-ebuild.xml,v 1.3 2006/09/01 17:39:29 neysx Exp $ -->

<sections>

<version>1.3</version>
<date>2004-10-24</date>

<section>
<title>Emerge en ebuild</title>
<body>

<p>
De <c>ebuild</c> applicatie is een verbinding met het Portage systeem op een
lager niveau. Door deze applicatie te gebruiken, kunt u op een bepaalde ebuild
specifieke acties uitvoeren. U kunt bijvoorbeeld de individuele
installatie stappen zelf uitvoeren.
</p>

<p>
Het gebruik van <c>ebuild</c> is bedoeld voor het ontwikkelen van nieuwe
applicaties en meer informatie over <c>ebuild</c> kan dan ook worden gevonden
in het <uri link="/proj/en/devrel/handbook/handbook.xml">Ontwikkelaars
Handboek</uri> (Engelstalig). We zullen echter wel uitleggen welke ebuild
stappen gebruikt worden door Portage tijdens het installatieproces van een
voorbeeld applicatie en hoe u de post-configuratie stappen die sommige ebuilds
u toelaten te gebruiken kunt toepassen.
</p>

</body>
</section>
<section>
<title>Handmatig applicaties installeren</title>
<subsection>
<title>De bron downloaden &amp; controleren</title>
<body>

<p>
Wanneer u <c>ebuild</c> tegen een bepaald ebuild bestand gebruikt, zal het
controleren of de controle som gelijk is aan de controle som die gevonden kan
worden in het bijbehorende <path>Manifest</path> of het bestand
<path>files/digest-&lt;name&gt;-&lt;version&gt;</path>. Dit gebeurt
nadat de bronbestanden gedownload zijn.
</p>

<p>
Om bronbestanden te downloaden met behulp van <c>ebuild</c>, start:
</p>

<pre caption="Downloaden van de bronnen">
# <i>ebuild map/van/ebuild fetch</i>
</pre>

<p>
Als de md5som van de ebuild niet gelijk is aan degene die genoemd wordt in het
bestand <path>Manifest</path>, of een van de gedownloade bronnen is anders dan
wat genoemd wordt in het <path>files/digest-&lt;package&gt;</path> bestand,
krijgt u een foutmelding die vergelijkbaar is met deze:
</p>

<pre caption="Ebuild checksum fout">
!!! File is corrupt or incomplete. (Digests do not match)
>>> our recorded digest: db20421ce35e8e54346e3ef19e60e4ee
>>>  your file's digest: f10392b7c0b2bbc463ad09642606a7d6
</pre>

<p>
De volgende regel zal vermelden welke bestand de foute is.
</p>

<p>
Als u zeker weet dat de ebuild zelf en de door u gedownloade bronnen correct
zijn, kunt u de bestanden <path>Manifest</path> en
<path>digest-&lt;package&gt;</path> opnieuw aanmaken door gebruik te
maken van <c>ebuild</c>'s digest functionaliteit:
</p>

<pre caption="Opnieuw maken van Manifest and digest">
# <i>ebuild map/van/ebuild digest</i>
</pre>

</body>
</subsection>
<subsection>
<title>Het uitpakken van de bronbestanden</title>
<body>

<p>
Om de bron bestanden uit te pakken in <path>/var/tmp/portage</path> (of elke
andere map die u hebt ingesteld in <path>/etc/make.conf</path>), start u de
uitpak functie van <c>ebuild</c>:
</p>

<pre caption="Het uitpakken van de bronbestanden">
# <i>ebuild map/van/ebuild unpack</i>
</pre>

<p>
Dit zal ebuild's src_unpack() functie starten (welke standaard zal uitpakken als
geen src_unpack() functie gedefinieerd is). Tevens worden in deze stap alle
benodigde patches toegepast.
</p>

</body>
</subsection>
<subsection>
<title>het compileren van de bronbestanden</title>
<body>

<p>
De volgende stap in het installatie proces, is het compileren van de
bronbestanden. <c>ebuild</c>'s compileer functionaliteit zorgt voor deze stap
door het starten van de src_compile() functie in de ebuild. Dit geldt tevens
voor de configuratie stappen indien van toepassing.
</p>

<pre caption="Het Compileren van de bron bestanden">
# <i>ebuild map/van/ebuild compile</i>
</pre>

<p>
U wordt geadviseerd om ebuild's src_compile() functie te wijzigen als u de
compileer instructies wilt wijzigen. U kunt Portage ook voor de gek houden
zodat het denkt dat de <c>ebuild</c> applicatie de compilatie stappen afgerond
heeft. Start alle benodigde commando's zelf en creëer een leeg bestand met de
naam <path>.compiled</path> in de werkmap:
</p>

<pre caption="Portage informeren over de afgeronde compilatie taken">
# <i>touch .compiled</i>
</pre>

</body>
</subsection>
<subsection>
<title>De bestanden installeren in een tijdelijke lokatie</title>
<body>

<p>
Gedurende de volgende stap zal Portage alle benodigde bestanden in een
tijdelijke lokatie installeren. Deze map zal dan alle bestanden bevatten die
geïnstalleerd zullen worden in het produktiebestandssysteem. U kan dit bereiken
door <c>ebuild</c>'s install functie, welke de ebuild's src_install()
functie start:
</p>

<pre caption="Het installeren van de bestanden">
# <i>ebuild map/van/ebuild install</i>
</pre>

</body>
</subsection>
<subsection>
<title>Het installeren van de bestanden op het produktiebestandssysteem</title>
<body>

<p>
De laatste stap is het installeren van alle bestanden op het
produktiebestandsysteem en deze registreren in bij Portage. <c>ebuild</c> noemt
deze fase "qmerge" en het bevat de volgende stappen:
</p>

<ul>
  <li>Start de pkg_preinst() functie indien gespecificeerd</li>
  <li>Kopieer alle bestanden naar het produktie bestandssysteem</li>
  <li>Registreer de bestanden bij Portage</li>
  <li>Start de pkg_postinst() functie indien gespecificeerd</li>
</ul>

<p>
Start <c>ebuild</c>'s qmerge functionaliteit om deze stappen uit te voeren:
</p>

<pre caption="Het installeren van de bestanden op het produktiebestandsysteem">
# <i>ebuild map/van/ebuild qmerge</i>
</pre>

</body>
</subsection>
<subsection>
<title>Het opschonen van de tijdelijke map</title>
<body>

<p>
Als laatste stap kunt u de tijdelijke map opschonen door gebruik te maken van
<c>ebuild</c>'s clean functionaliteit:
</p>

<pre caption="Het opschonen van de tijdelijke map">
# <i>ebuild map/van/ebuild clean</i>
</pre>

</body>
</subsection>
</section>
<section>
<title>Extra Ebuild opties</title>
<subsection>
<title>Het draaien van alle installatie gerelateerde commando's</title>
<body>

<p>
Gebruik <c>ebuild</c>'s installatie functies om het downloaden,
uitpakken, compileren, installeren en qmerge commando's in één keer uit te
voeren:
</p>

<pre caption="Het installeren van applicaties">
# <i>ebuild map/naar/ebuild merge</i>
</pre>

</body>
</subsection>
<subsection>
<title>Het uitvoeren van de configuratie stappen</title>
<body>

<p>
Sommige applicaties bevatten instructies om een pakket verder te configureren
op uw systeem. Deze instructies kunnen interactief zijn en worden daarom niet
automatisch uitgevoerd. Om deze configuratie stappen uit te voeren, die genoemd
worden in de (optionele) config() functie van ebuild, gebruik <c>ebuild</c>'s
config functionaliteit:
</p>

<pre caption="Een pakket verder configureren">
# <i>ebuild map/van/ebuild config</i>
</pre>

</body>
</subsection>
<subsection>
<title>Een (RPM) Pakket bouwen</title>
<body>

<p>
U kunt Portage instrueren om van een ebuild een binair pakket of zelfs een
RPM bestand te maken. Gebruik <c>ebuild</c>'s package of rpm functionaliteit om
deze pakketten te maken. Er zijn echter een aantal verschillen tussen deze
functies:
</p>

<ul>
  <li>
    De package functie lijkt erg op de merge functie, in het
    starten van alle benodigde stappen (fetch, unpack, compile, install) voordat
    het pakket aangemaakt wordt
  </li>
  <li>
    De rpm functie bouwt een RPM pakket van een bestand dat aangemaakt
    is <e>nadat</e> <c>ebuild</c>'s install functionaliteit gedraaid heeft.
  </li>
</ul>

<pre caption="Het aanmaken van pakketten">
<comment>(Voor een Portage-compatible binair pakket)</comment>
# <i>ebuild map/van/ebuild package</i>

<comment>(Voor een RPM pakket)</comment>
# <i>ebuild map/van/ebuild rpm</i>
</pre>

<p>
Het aangemaakte RPM bestand bevat echter niet de afhankelijkheidsinformatie van
de ebuild.
</p>

</body>
</subsection>
</section>
<section>
<title>Meer Informatie</title>
<subsection>
<body>

<p>
Voor meer informatie over Portage, de ebuild applicatie en ebuild bestanden,
raadpleeg de volgende man pagina's:
</p>

<pre caption="Man pages">
$ <i>man portage</i>    <comment>(Portage zelf)</comment>
$ <i>man emerge</i>     <comment>(Het emerge commando)</comment>
$ <i>man ebuild</i>     <comment>(Het ebuild commando)</comment>
$ <i>man 5 ebuild</i>   <comment>(De ebuild bestand syntax)</comment>
</pre>

<p>
U kunt tevens meer informatie over het ontwikkelen vinden in het
<uri link="/proj/en/devrel/handbook/handbook.xml">ontwikkelaars Handboek</uri>
(Engelstalig).
</p>

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