<!--
    The Dutch FreeBSD Documentation Project

    $FreeBSD$
    $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/ports/chapter.sgml,v 1.23 2005/03/06 00:42:16 siebrand Exp $
    Gebaseerd op: 1.239
-->

<chapter id="ports">
  <chapterinfo>
    <authorgroup>
      <author>
	<firstname>Rene</firstname>
	<surname>Ketelaars</surname>
	<contrib>Vertaald door </contrib>
      </author>
      <author>
	<firstname>Siebrand</firstname>
	<surname>Mazeland</surname>
      </author>
    </authorgroup>
  </chapterinfo>

  <title>Applicaties installeren: packages en ports</title>

  <sect1 id="ports-synopsis">
    <title>Overzicht</title>

    <indexterm><primary>ports</primary></indexterm>

    <indexterm><primary>packages</primary></indexterm>

    <para>&os; bevat een grote collectie aan systeemgereedschappen
      als onderdeel van het basissysteem.  De mogelijkheden reiken
      echter niet heel ver en daarom is er snel een applicatie van een
      andere partij nodig.  &os; bevat twee complementaire
      technologie&euml;n om andere applicaties te installeren: de &os;
      Portscollectie en binaire softwarepackages.  Beide systemen
      kunnen gebruikt worden om de nieuwste versies van een gewenste
      applicatie te installeren van lokale media of rechtstreeks van
      het netwerk.</para>

    <para>Na het lezen van dit hoofdstuk weet de lezer:</para>

    <itemizedlist>
      <listitem>
	<para>Hoe binaire softwarepackages van derden te
	  installeren;</para>
      </listitem>

      <listitem>
	<para>Hoe software van derden vanuit de Portscollectie te
	  installeren;</para>
      </listitem>

      <listitem>
	<para>Hoe eerder ge&iuml;nstalleerde packages of ports te
	  verwijderen;</para>
      </listitem>

      <listitem>
	<para>Hoe standaardwaardes die door de ports worden gebruikt te
	  wijzigen;</para>
      </listitem>

      <listitem>
	<para>Hoe het juiste softwarepackage te vinden;</para>
      </listitem>

      <listitem>
	<para>Hoe ports bij te werken.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="ports-overview">
    <title>Overzicht van softwareinstallatie</title>

    <para>Als de lezer eerder gebruik heeft gemaakt van een &unix;
      systeem dan is het bekend dat de standaardprocedure voor het
      installeren van software van derden ongeveer als volgt is:</para>

    <procedure>
      <step>
	<para>Download de software als broncode of als binair
	  bestand;</para>
      </step>

      <step>
	<para>Pak de software uit vanuit zijn originele distributietype
	  (meestal een tar-bestand gecomprimeerd met &man.compress.1;,
	  &man.gzip.1;, of &man.bzip2.1;);</para>
      </step>

      <step>
	<para>Zoek de documentatie (meestal een
	  <filename>INSTALL</filename> of <filename>README</filename>
	  bestand of enkele bestanden in een submap
	  <filename>doc/</filename>) en lees zorgvuldig hoe de software
	  ge&iuml;nstalleerd moet worden;</para>
      </step>

      <step>
	<para>Als de software als broncode is gedistribueerd, moet de
	  broncode gecompileerd worden.  Dit kan wijzigingen in een
	  <filename>Makefile</filename> vereisen of het draaien van een
	  <command>configure</command> script en andere
	  werkzaamheden;</para>
      </step>

      <step>
	<para>De software installeren en testen.</para>
      </step>
    </procedure>

    <para>En dat geldt alleen als alles goed gaat.  Als er een
      softwarepackage ge&iuml;nstalleerd wordt dat niet specifiek
      gemaakt is voor &os; moet mogelijkerwijs zelfs de code aangepast
      worden om alles goed te laten werken.</para>

    <para>Als de gebruiker het wenst, kan hij in &os; doorgaan met het
      installeren van software op de <quote>traditionele</quote>
      manier.  &os; levert echter twee technologie&euml;n die veel
      moeite kunnen besparen: packages en ports.  Op dit moment zijn zo
      meer dan &os.numports; applicaties beschikbaar.</para>

    <para>Voor iedere gewenste applicatie is het &os; package voor die
      applicatie &eacute;&eacute;n te downloaden bestand.  Het package
      bevat voorgecompileerde kopi&euml;n met alle commando's voor de
      applicatie en alle instellingenbestanden of documentatie.  Een
      gedownload packagebestand kan gemanipuleerd worden met &os;
      packagemanagement commando's zoals &man.pkg.add.1;,
      &man.pkg.delete.1;, &man.pkg.info.1;, enzovoort.  Het installeren
      van een nieuwe applicatie kan met &eacute;&eacute;n
      commando.</para>

    <para>Een &os; port van een applicatie is een groep bestanden
      ontworpen om het proces van compileren van een applicatie vanuit
      broncode te automatiseren.</para>

    <para>Het is te vergelijken met de stappen die normaal gevolgd
      worden om een programma te compileren (downloaden, uitpakken,
      aanpassen, compileren en installeren).  De bestanden die samen
      een port vormen bevatten alle noodzakelijke informatie om het
      systeem dit te laten doen.  Met een aantal eenvoudige commando's
      wordt de broncode voor de applicatie automatisch gedownload,
      uitgepakt, aangepast, gecompileerd en ge&iuml;nstalleerd.</para>

    <para>Het portssysteem kan zelfs gebruikt worden om packages te
      maken die later weer gemanipuleerd kunnen worden met
      <command>pkg_add</command> en andere packagemanagement
      commando's, waarover later meer uitleg wordt gegeven.</para>

    <para>Zowel packages als ports kennen afhankelijkheden
      (<emphasis>dependencies</emphasis>).  Stel dat er een applicatie
      ge&iuml;nstalleerd gaat worden die er vanuit gaat dat een
      specifieke bibliotheek wordt ge&iuml;nstalleerd.  Zowel de
      applicatie als de bibliotheek zijn beschikbaar als &os; ports
      en packages.  Als het commando <command>pkg_add</command> of
      het portssysteem wordt gebruikt om de applicatie toe te voegen,
      dan zien beiden dat de bibliotheek niet ge&iuml;nstalleerd is
      en wordt deze automatisch eerst ge&iuml;nstalleerd.</para>

    <para>Gezien het feit dat beide technologie&euml;n vrijwel identiek
      zijn, kan de vraag rijzen waarom &os; de moeite neemt om beide te
      faciliteren.  Packages en ports hebben ieder hun eigen kracht.
      Welke gebruikt wordt hangt af van voorkeuren en
      omstandigheden.</para>

    <itemizedlist>
      <title>Voordelen van packages</title>

      <listitem>
	<para>Een gecomprimeerd package tar-bestand is meestal kleiner
	  dan het gecomprimeerde tar-bestand met de broncode van de
	  applicatie;</para>
      </listitem>

      <listitem>
	<para>Packages vereisen geen additionele compilatie.  Voor
	  grote applicaties als <application>Mozilla</application>,
	  <application>KDE</application> of
	  <application>GNOME</application> kan dit belangrijk zijn,
	  vooral als een systeem wat trager is;</para>
      </listitem>

      <listitem>
	<para>Packages vereisen geen begrip van het proces van het
	  compileren van software op &os;.</para>
      </listitem>
    </itemizedlist>

    <itemizedlist>
      <title>Voordelen van ports</title>

      <listitem>
	<para>Packages worden meestal gecompileerd met conservatieve
	  opties, omdat ze moeten draaien op een maximaal aantal
	  systemen.  Bij het installeren vanuit de port kunnen de
	  compilatieinstellingen aangepast worden om zo bijvoorbeeld
	  code te maken die specifiek voor een Pentium IV of een
	  Athlon processor is;</para>
      </listitem>

      <listitem>
	<para>Sommige applicaties hebben compilatieinstellingen
	  gerelateerd aan wat ze wel of niet kunnen doen.
	  <application>Apache</application> kan bijvoorbeeld ingesteld
	  worden met een uitgebreide hoeveelheid verschillende
	  ingebouwde instellingen.  Door vanuit de port te werken
	  hoeven niet alle standaardinstellingen geaccepteerd te worden
	  en kunnen ze ingesteld worden;</para>

	<para>In sommige gevallen zijn er meerdere packages voor
	  dezelfde applicatie om specifieke instellingen aan te geven.
	  <application>Ghostscript</application> is bijvoorbeeld
	  beschikbaar als een <filename>ghostscript</filename> package
	  en <filename>ghostscript-nox11</filename> package,
	  afhankelijk van het al dan niet ge&iuml;nstalleerd hebben van
	  een X11 server.  Deze ruwe vorm van tweaking is mogelijk met
	  packages, maar dit wordt snel onmogelijk als een applicatie
	  meer dan &eacute;&eacute;n of twee verschillende
	  compilatieinstellingen heeft;</para>
      </listitem>

      <listitem>
	<para>De licentievoorwaarden van sommige softwaredistributies
	  verbieden binaire distributie.  Ze moeten dus gedistribueerd
	  worden als broncode;</para>
      </listitem>

      <listitem>
	<para>Sommige mensen vertrouwen binaire distributies niet.
	  Broncode kan tenminste (in theorie) zelf doorgelezen en
	  gecontroleerd worden op potenti&euml;le problemen;</para>
      </listitem>

      <listitem>
	<para>Als er lokale modificaties zijn, is de broncode nodig om
	  ze toe te passen;</para>
      </listitem>

      <listitem>
	<para>Sommige mensen hebben graag de broncode zodat ze die
	  kunnen lezen als ze zich vervelen, erin kunnen hacken, code
	  kunnen overnemen (indien de licentie dit toestaat
	  natuurlijk), enzovoort.</para>
      </listitem>
    </itemizedlist>

    <para>Om vernieuwingen van ports bij te houden kan een abonnement
      genomen worden op de &a.ports; en/of de &a.ports-bugs;.</para>

    <warning>
      <para>Voordat een applicatie wordt ge&iuml;nstalleerd is het aan
	te raden op <ulink url="http://vuxml.freebsd.org/"></ulink>
	na kijken of er geen beveiligingsproblemen voor de gewenste
	applicatie bekend zijn.</para>

      <para>Het is ook mogelijk om <filename
	  role="package">security/portaudit</filename> te installeren,
	dat automatisch alle ge&iuml;nstalleerde applicaties
	controleert op bekende fouten.  Deze controle wordt ook
	uitgevoerd voordat een port wordt ge&iuml;nstalleerd.
	Met het commando <command>portaudit&nbsp;-F&nbsp;-a</command>
	kunnen de packages die al ge&iuml;nstalleerd zijn worden
	gecontroleerd.</para>
    </warning>

    <para>In de rest van dit hoofdstuk wordt uitgelegd hoe packages en
      ports gebruikt kunnen worden om software in &os; te installeren
      en te beheren.</para>
  </sect1>

  <sect1 id="ports-finding-applications">
    <title>Applicaties zoeken</title>

    <para>Voordat een applicatie ge&iuml;nstalleerd kan worden, moeten
      de doelen bekend zijn en hoe de applicatie heet.</para>

    <para>De lijst met voor &os; beschikbare applicaties groeit
      continu.  Gelukkig zijn er een aantal manieren om te
      zoeken:</para>

    <itemizedlist>
      <listitem>
	<para>Op de &os; website staat een recente doorzoekbare lijst
	  met alle beschikbare applicaties: <ulink
	    url="&url.base;/ports/index.html">http://www.FreeBSD.org/ports/</ulink>.
	  De ports zijn onderverdeeld in categorie&euml;n.  Er kan naar
	  een applicatie gezocht worden op naam (als die bekend is) of
	  alle applicaties in een categorie kunnen bekeken
	  worden.</para>
      </listitem>

      <indexterm><primary>FreshPorts</primary></indexterm>

      <listitem>
	<para>Dan Langille onderhoudt FreshPorts op <ulink
	    url="http://www.FreshPorts.org/"></ulink>.  FreshPorts
	  volgt veranderingen in applicaties in de ports en biedt de
	  mogelijkheid om of meer ports te volgen.  Er wordt dan een
	  e-mail gestuurd als de port is bijgewerkt.</para>
      </listitem>

      <indexterm><primary>FreshMeat</primary></indexterm>

      <listitem>
	<para>Als de naam van de gewenst applicatie niet bekend is, is
	  het wellicht mogelijk deze te achterhalen via een website als
	  FreshMeat (<ulink url="http://www.freshmeat.net/"></ulink>)
	  en kan daarna op de &os; site gecontroleerd worden of de
	  applicatie al geschikt gemaakt is voor gebruik met
	  &os;.</para>
      </listitem>

      <listitem>
	<para>Als de precieze naam van de port bekend is, maar niet
	  bekend is in welke categorie deze staat, kan dit achterhaald
	  worden met &man.whereis.1;.  Door simpelweg <command>whereis
	    <replaceable>bestand</replaceable></command> in te geven,
	  waar <replaceable>bestand</replaceable> het te instelleren
	  programma is.  Als het op het systeem staat, wordt dat als
	  volgt aangegeven:</para>

      <screen>&prompt.root; <userinput>whereis lsof</userinput>
lsof: /usr/ports/sysutils/lsof</screen>

      <para>Dit geeft aan dat <command>lsof</command> (een
	systeemhulpprogramma) in de map
	<filename>/usr/ports/sysutils/lsof</filename> staat.</para>
      </listitem>

      <listitem>
	<para>Een andere manier om een port op te sporen is door het
	  ingebouwde zoekmechanisme van de Portscollectie te
	  gebruiken.  Hiervoor moet het huidige pad de map
	  <filename>/usr/ports</filename> zijn.  Vanuit die map kan
	  <command>make search
	    name=<replaceable>programmanaam</replaceable></command>
	  uitgevoerd worden, waar
	  <replaceable>programmanaam</replaceable> de naam is van het
	  programma dat wordt gezocht.  Als bijvoorbeeld
	  <command>lsof</command> wordt gezocht:</para>

      <screen>&prompt.root; <userinput>cd /usr/ports</userinput>
&prompt.root; <userinput>make search name=lsof</userinput>
Port:   lsof-4.56.4
Path:   /usr/ports/sysutils/lsof
Info:   Lists information about open files (similar to fstat(1))
Maint:  obrien@FreeBSD.org
Index:  sysutils
B-deps:
R-deps:</screen>

      <para>Het belangrijkste onderdeel van de uitvoer is in dit geval
	de regel waarop <quote>Path:</quote> staat, omdat die aangeeft
	waar de port staat.  De andere informatie is niet nodig voor de
	installatie van de port en wordt hier niet behandeld.</para>

      <para>Voor nog dieper zoeken kan ook <command>make
	  search key=<replaceable>string</replaceable></command>
	gebruikt worden waar <replaceable>string</replaceable> tekst is
	waarnaar gezocht moet worden.  Hiermee wordt naar namen van
	ports, commentaar, beschrijvingen en afhankelijkheden gezocht
	en dit kan gebruikt worden om ports te vinden die te maken
	hebben met een bepaald onderwerp als onbekend is hoe het
	gezochte programma heet.</para>

      <para>In beide gevallen is de zoekstring niet
	hoofdlettergevoelig.  Zoeken naar <quote>LSOF</quote> geeft
	hetzelfde resultaat als zoeken naar <quote>lsof</quote>.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="packages-using">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Chern</firstname>
	  <surname>Lee</surname>
	  <contrib>Bijgedragen door </contrib>
	</author>
      </authorgroup>
    <!-- 30 Mar 2001 -->
    </sect1info>

    <title>Het packagessysteem gebruiken</title>

    <sect2>
      <title>Packages installeren</title>

      <indexterm>
	<primary>packages</primary>

	<secondary>installeren</secondary>
      </indexterm>

      <indexterm><primary><command>pkg_add</command></primary></indexterm>

      <para>Met &man.pkg.add.1; kan een &os; softwarepackage
	ge&iuml;nstalleerd worden vanaf een lokaal bestand of vanaf een
	server op het netwerk.</para>

      <example>
	<title>Handmatig packages downloaden en lokaal
	  installeren</title>

	<screen>&prompt.root; <userinput>ftp -a <replaceable>ftp2.FreeBSD.org</replaceable></userinput>
Connected to ftp2.FreeBSD.org.
220 ftp3.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230-     This machine is in Vienna, VA, USA, hosted by Verio.
230-         Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
<prompt>ftp></prompt> <userinput>cd /pub/FreeBSD/ports/packages/sysutils/</userinput>
250 CWD command successful.
<prompt>ftp></prompt> <userinput>get lsof-4.56.4.tgz</userinput>
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
100% |**************************************************| 92375       00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
<prompt>ftp></prompt> <userinput>exit</userinput>
&prompt.root; <userinput>pkg_add <replaceable>lsof-4.56.4.tgz</replaceable></userinput></screen>
      </example>

      <para>Als er lokaal geen bron is voor packages (zoals de &os;
	cd-rom set) dan is het waarschijnlijk makkelijker om de
	<option>-r</option> optie te gebruiken met &man.pkg.add.1;.
	Deze optie zorgt er voor dat het hulpprogramma automatisch het
	correcte formaat en de juiste versie bepaalt en die daarna
	binnenhaalt en installeert vanaf een FTP site.</para>

      <indexterm><primary><command>pkg_add</command></primary></indexterm>

      <screen>&prompt.root; <userinput>pkg_add -r <replaceable>lsof</replaceable></userinput></screen>

      <para>Het voorbeeld hierboven haalt het correcte package binnen
	en installeert het zonder dat de gebruiker iets hoeft te doen.
	Het is mogelijk een alternatieve &os; packagessite aan te geven
	in plaats van de hoofddistributiesite.  Dan moet
	<envar>PACKAGESITE</envar> ingesteld worden om de
	standaardinstellingen aan te passen.   &man.pkg.add.1; gebruikt
	&man.fetch.3; om de bestanden binnen te halen, dat gebruik
	maakt van diverse omgevingsvariabelen zoals
	<envar>FTP_PASSIVE_MODE</envar>, <envar>FTP_PROXY</envar>, en
	<envar>FTP_PASSWORD</envar>.  Mogelijk moeten ook
	&eacute;&eacute;n of meer van deze variabelen gebruikt worden
	als een machine achter een firewall staat of als gebruik
	gemaakt moet worden van een FTP/HTTP proxy.  In &man.fetch.3;
	staat de complete lijst.  In het voorbeeld hierboven is gebruik
	gemaakt van <literal>lsof</literal> in plaats van
	<literal>lsof-4.56.4</literal>.  Als het package wordt
	binnengehaald met behulp van de bovenstaande instellingen, dan
	moet het versienummer van het package niet gebruikt worden.
	&man.pkg.add.1; haalt automatisch de laatste versie van de
	applicatie binnen.</para>

      <note>
	<para>&man.pkg.add.1; downloadt de meest recente versie van een
	  applicatie als &os.current; of &os.stable;.  Als een
	  -RELEASE versie wordt gebruikt, wordt het package dat bij die
	  release hoort gebruikt.  Het is mogelijk dit gedrag te
	  veranderen door de omgevingsvariabele
	  <envar>PACKAGESITE</envar> te wijzigen.</para>
      </note>

      <para>Packagebestanden worden gedistribueerd in de formaten
	<filename>.tgz</filename> en <filename>.tbz</filename>.  Ze
	zijn te vinden op <ulink
	  url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/"></ulink>
	of op de &os; cd-rom distributie.  Iedere cd-rom in de
	&os;&nbsp;4-cd-rom set (en de PowerPak, enzovoort) bevat
	packages in de map <filename>/packages</filename>.  De opbouw
	van de packages is ongeveer gelijk aan die van
	<filename>/usr/ports</filename>.  Iedere categorie heeft zijn
	eigen map en ieder package staat ook in de map
	<filename>All</filename>.</para>

      <para>De mappenstructuur van het packagesysteem is gelijk aan die
	van het portssysteem.  Samen vormen ze het
	package/portssysteem.</para>
    </sect2>

    <sect2>
      <title>Packages beheren</title>

      <indexterm>
	<primary>packages</primary>

	<secondary>beheren</secondary>
      </indexterm>

      <para>&man.pkg.info.1; is een hulpprogramma dat de diverse
	ge&iuml;nstalleerde packages toont en beschrijft.</para>

      <indexterm><primary><command>pkg_info</command></primary></indexterm>

      <screen>&prompt.root; <userinput>pkg_info</userinput>
cvsup-16.1          A general network file distribution system optimized for CV
docbook-1.2         Meta-port for the different versions of the DocBook DTD
...</screen>

      <para>&man.pkg.version.1; is een hulpprogramma dat een
	samenvatting van de versie van alle ge&iuml;nstalleerde
	packages geeft.  Het vergelijkt de versie van het package met
	de huidige versie in de Portscollectie.</para>

      <indexterm><primary><command>pkg_version</command></primary></indexterm>

      <screen>&prompt.root; <userinput>pkg_version</userinput>
cvsup                       =
docbook                     =
...</screen>

      <para>De symbolen in de tweede kolom geven aan hoe de
	ge&iuml;nstalleerde versie staat ten opzichte van de versie die
	beschikbaar is in de lokale Portscollectie.</para>

      <informaltable frame="none" pgwide="1">
	<tgroup cols="2">
	  <thead>
	    <row>
	      <entry>Symbool</entry>

	      <entry>Betekenis</entry>
	    </row>
	  </thead>

 	  <tbody>
  	    <row>
	      <entry>=</entry>

	      <entry>De versie van het ge&iuml;nstalleerde package komt
		overeen met die in de lokale Portscollectie.</entry>
  	    </row>

	    <row>
	      <entry>&lt;</entry>

	      <entry>De ge&iuml;nstalleerde versie is ouder dan die
		beschikbaar is in de ports.</entry>
	    </row>

	    <row>
	      <entry>&gt;</entry>

	      <entry>De ge&iuml;nstalleerde versie is nieuwer dan die
		in de lokale Portscollectie.  De lokale Portscollectie
		is waarschijnlijk verouderd.</entry>
	    </row>

	    <row>
	      <entry>?</entry>

	      <entry>Het ge&iuml;nstalleerde package kan niet gevonden
		worden in index van de Portscollectie.  Dit kan
		bijvoorbeeld gebeuren als een ge&iuml;nstalleerde port
		uit de Portscollectie wordt verwijderd of
		hernoemd.</entry>
	    </row>

	    <row>
	      <entry>*</entry>

	      <entry>Er zijn meerdere versies van het package.</entry>
	    </row>
	  </tbody>
	</tgroup>
      </informaltable>
    </sect2>

    <sect2>
      <title>Packages verwijderen</title>

      <indexterm><primary><command>pkg_delete</command></primary></indexterm>

      <indexterm>
	<primary>packages</primary>

	<secondary>deleting</secondary>
      </indexterm>

      <para>Voor het verwijderen van een ge&iuml;nstalleerd package
	wordt het hulpprogramma &man.pkg.delete.1; gebruikt.</para>

      <screen>&prompt.root; <userinput>pkg_delete <replaceable>xchat-1.7.1</replaceable></userinput></screen>
    </sect2>

    <sect2>
      <title>Diversen</title>

      <para>Alle informatie over packages wordt opgeslagen in de map
	<filename>/var/db/pkg</filename>.  De lijst met
	ge&iuml;nstalleerde bestanden en beschrijvingen van ieder
	package staat in de bestanden in deze map.</para>
    </sect2>
  </sect1>

  <sect1 id="ports-using">
    <title>De Portscollectie gebruiken</title>

    <para>In de volgende paragrafen worden basisinstructies gegeven
      over het gebruik van de Portscollectie om programma's op een
      systeem te installeren of ervan te verwijderen.</para>

    <sect2 id="ports-tree">
      <title>De Portscollectie</title>

      <para>Voordat ports ge&iuml;nstalleerd kunnen worden moet eerst
	de Portscollectie op een systeem staan, die in essentie een set
	van <filename>Makefiles</filename>, patches en bestanden met
	beschrijvingen is in <filename>/usr/ports</filename>.</para>

      <para>Tijdens het installeren van een &os; systeem, vraagt
	<application>sysinstall</application> of de Portscollectie
	ge&iuml;nstalleerd moet worden.  Als daar <quote>NO</quote> is
	aangegeven, dan kan met behulp van de volgende instructies
	alsnog de Portscollectie op een systeem gezet worden:</para>

      <procedure>
	<title>Met <application>sysinstall</application></title>

	<para>Bij deze methode wordt
	  <application>sysinstall</application> weer gebruikt om de
	  Portscollectie te installeren.</para>

	<step>
	  <para><command>sysinstall</command>
	    (<command>/stand/sysinstall</command> in &os; versies
	    ouder dan 5.2) dient als
	    <username>root</username> uitgevoerd te worden:</para>

	  <screen>>&prompt.root; <userinput>sysinstall</userinput></screen>
	</step>

	<step>
	  <para>Selecteer onderaan
	    <guimenuitem>Configure</guimenuitem> en druk op
	    <keycap>Enter</keycap>;</para>
	</step>

	<step>
	  <para>Selecteer onderaan
	    <guimenuitem>Distributions</guimenuitem> en druk op
	    <keycap>Enter</keycap>;</para>
	</step>

	<step>
	  <para>Selecteer <guimenuitem>ports</guimenuitem> en druk op
	    <keycap>Space</keycap>;</para>
	</step>

	<step>
	  <para>Selecteer bovenaan <guimenuitem>Exit</guimenuitem> en
	    druk op <keycap>Enter</keycap>;</para>
	</step>

	<step>
	  <para>Selecteer het gewenste installatiemedium, zoals cd-rom,
	    FTP, enzovoort;</para>
	</step>

	<step>
	  <para>Selecteer bovenaan <guimenuitem>Exit</guimenuitem> en
	    druk op <keycap>Enter</keycap>;</para>
	</step>

	<step>
	  <para>Druk op <keycap>X</keycap> om
	    <application>sysinstall</application> te verlaten.</para>
	</step>
      </procedure>

      <para>De alternatieve methode om de Portscollectie te installeren
	en bij te werken maakt gebruik van
	<application>CVSup</application>.  Zie hiervoor het bestand
	<filename>/usr/share/examples/cvsup/ports-supfile</filename>
	uit de port <application>CVSup</application>.  In dat bestand
	en <link linkend="cvsup">CVSup gebruiken</link>
	(<xref linkend="cvsup">) staat meer informatie over het gebruik
	van <application>CVSup</application>.</para>

      <procedure>
	<title>Met CVSup</title>

	<para>Dit is een snelle methode om de Portscollectie te
	installeren met behulp van <application>CVSup</application>.
	Meer informatie over <application>CVSup</application> of over
	het bijgewerkt houden van de Portscollectie staat in de eerder
	genoemde paragraaf.</para>

	<step>
	  <para>De port <filename role="package">net/cvsup</filename>
	    dient ge&iuml;nstalleerd te worden.  Meer details zijn te
	    vinden in <link linkend="cvsup-install">CVSup
	      Installatie</link> (<xref
	      linkend="cvsup-install">);</para>
	</step>

	<step>
	  <para><filename>/usr/share/examples/cvsup/ports-supfile</filename>
	    dient als <username>root</username> naar een nieuwe lokatie
	    zoals <filename>/root</filename> of een thuismap gekopieerd
	    te worden;</para>
	</step>

	<step>
	  <para><filename>ports-supfile</filename> dient aangepast te
	    worden;</para>
	</step>

	<step>
	  <para><replaceable>CHANGE_THIS.FreeBSD.org</replaceable>
	    dient gewijzigd te worden in een
	    <application>CVSup</application> server in de buurt.  In
	    <link linkend="cvsup-mirrors">CVSup Mirrors</link> (<xref
	      linkend="cvsup-mirrors">) staat een complete lijst van
	    mirrorsites;</para>
	</step>

	<step>
	  <para>Start <command>cvsup</command>:</para>

	  <screen>&prompt.root; <userinput>cvsup -g -L 2 <replaceable>/root/ports-supfile</replaceable></userinput></screen>
	</step>

	<step>
	  <para>Als dit commando later wordt herhaald, dan worden alle
	    recente veranderingen binnengehaald.  De ports die al
	    ge&iuml;nstalleerd zijn worden niet opnieuw gebouwd!</para>
	</step>
      </procedure>
    </sect2>

    <sect2 id="ports-skeleton">
      <title>Ports installeren</title>

      <indexterm>
	<primary>ports</primary>

	<secondary>installeren</secondary>
      </indexterm>

      <para>Het eerste wat uitleg behoeft als het over de
	Portscollectie gaat is de term <quote>skelet</quote>
	(<quote>skeleton</quote>).  In een notendop is een portskelet
	een minimaal aantal bestanden dat &os; aangeeft hoe een
	programma gecompileerd en ge&iuml;nstalleerd kan worden.  Ieder
	portskelet bevat:</para>

      <itemizedlist>
	<listitem>
	  <para>Een <filename>Makefile</filename>.  De
	    <filename>Makefile</filename> bevat verschillende
	    definities die aangeven hoe de applicatie gecompileerd moet
	    worden en waar die op een systeem ge&iuml;nstalleerd moet
	    worden;</para>
	</listitem>

	<listitem>
	  <para>Een bestand <filename>distinfo</filename>.  Dit bestand
	    bevat informatie over de bestanden die gedownload moeten
	    worden om de port te bouwen en hun checksums, om met
	    &man.md5.1; vast te stellen dat de bestanden niet corrupt
	    zijn geraakt tijdens de download.;</para>
	</listitem>

	<listitem>
	  <para>Een map <filename>files</filename>.  Deze map bevat
	    patches om het programma op een &os; systeem te laten
	    compileren en installeren.  Patches zijn in essentie kleine
	    bestanden waarin kleine veranderingen aan andere,
	    specifieke, bestanden staan aangegeven.  Ze zijn opgesteld
	    in platte tekst en er staan dingen in als <quote>Verwijder
	      regel 10</quote> of <quote>Wijzig regel 26 in
	      ...</quote>.  Patches staan ook wel bekend als
	    <quote>diffs</quote> omdat ze gemaakt worden met het
	    programma &man.diff.1;.</para>

	  <para>Deze map kan ook andere bestanden bevatten die gebruikt
	    worden om de port te bouwen;</para>
	</listitem>

	<listitem>
	  <para>Een bestand <filename>pkg-descr</filename>.  Dit is een
	    meer gedetailleerde beschijving van het programma, vaak in
	    &eacute;&eacute;n regel;</para>
	</listitem>

	<listitem>
	  <para>Een bestand <filename>pkg-plist</filename>.  Dit is een
	    lijst met alle bestanden die door de port
	    ge&iuml;nstalleerd worden.  Het geeft het portssysteem ook
	    aan welke bestanden bij het verwijderen van de port weer
	    verwijderd kunnen worden.</para>
	</listitem>
      </itemizedlist>

      <para>Sommige ports bevatten nog andere bestanden, zoals
	<filename>pkg-message</filename>.  Het portssysteem gebruikt
	die bestanden voor het afhandelen van bijzondere situaties.
	Meer details over die bestanden en over ports in het algemeen
	zijn na te lezen in het <ulink
	  url="&url.books.porters-handbook;/index.html">&os; Handboek
	  voor Porters</ulink>.</para>

      <para>De port bevat instructies over hoe de broncode gebouwd moet
	worden, maar de broncode zelf is er geen onderdeel van.  De
	broncode staat op een cd-rom of op internet.  De broncode
	wordt verspreid op de wijze waarop de auteur dat wenst.  Vaak
	is dat als een tar of gzip bestand, maar het kan ook ingepakt
	zijn met een ander programma of helemaal niet ingepakt zijn.
	De broncode van een programma, in welke vorm dan ook, heet een
	<quote>distfile</quote>.  De twee methoden om een &os; port te
	installeren worden hieronder beschreven.</para>

      <note>
	<para>Ports installeren dient als <username>root</username> te
	  gebeuren.</para>
      </note>

      <warning>
	<para>Voordat een port wordt ge&iuml;nstalleerd is het aan
	  te raden op <ulink url="http://vuxml.freebsd.org/"></ulink>
	  na kijken of er geen beveiligingsproblemen voor de
	  gewenste applicatie bekend zijn.</para>

	<para>Het is ook mogelijk om <filename
	    role="package">security/portaudit</filename> te
	  installeren.  Hiermee wordt die controle automatisch
	  uitgevoerd voordat een port wordt ge&iuml;nstalleerd.  Met
	  het commando <command>portaudit&nbsp;-F</command> kan de
	  meest recente versie van de database met
	  beveiligingsproblemen opgehaald worden.  Door deze port wordt
	  dagelijks een beveiligingsaudit gedaan en wordt ook dagelijks
	  de database bijgewerkt.  Meer informatie is te vinden in
	  &man.portaudit.1; en &man.periodic.8;.</para>
      </warning>

      <sect3 id="ports-cd">
	<title>Ports vanaf cd-rom installeren</title>

	<indexterm>
	  <primary>ports</primary>

	  <secondary>installeren vanaf cd-rom</secondary>
	</indexterm>

	<para>De offici&euml;le &os; Project cd-rom images bevatten
	  geen distfiles meer.  Die kostten veel ruimte die beter
	  gevuld kon worden met voorgecompileerde packages.  cd-rom
	  producten als het &os; PowerPak bevatten wel distfiles en
	  deze kunnen besteld worden bij een verkoper als de <ulink
	    url="http://www.freebsdmall.com/">&os; Mall</ulink>.  In
	  deze paragraaf wordt aangenomen dat er een &os; cd-rom set
	  aanwezig is.</para>

	<para>De &os; cd-rom dient in de drive te zitten en gemount te
	  worden op <filename>/cdrom</filename>.  Als er een ander
	  mountpunt wordt gebruikt, dient de <command>make</command>
	  variable <makevar>CD_MOUNTPTS</makevar> te worden ingesteld.
	  Om te beginnen dient de juiste map voor een port aangegeven
	  te worden:</para>

	<screen>&prompt.root; <userinput>cd /usr/ports/sysutils/lsof</userinput></screen>

	<para>Eenmaal in de map <filename>lsof</filename> is het skelet
	  van de port te zien.  In de volgende stap wordt de broncode
	  voor de port gecompileerd of <quote>gebouwd</quote>.  Dit
	  wordt gedaan door op het prompt <command>make</command> in te
	  voeren.  Dat levert iets als het volgende op:</para>

	<screen>&prompt.root; <userinput>make</userinput>
&gt;&gt; lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
&gt;&gt; Attempting to fetch from file:/cdrom/ports/distfiles/.
===&gt;  Extracting for lsof-4.57
...
[uitvoer van uitpakken verwijderd]
...
&gt;&gt; Checksum OK for lsof_4.57D.freebsd.tar.gz.
===&gt;  Patching for lsof-4.57
===&gt;  Applying FreeBSD patches for lsof-4.57
===&gt;  Configuring for lsof-4.57
...
[uitvoer van configure verwijderd]
...
===&gt;  Building for lsof-4.57
...
[uitvoer van compileren verwijderd]
...
&prompt.root;</screen>

	<para>Als het compileren is afgerond is het prompt weer
	  zichtbaar.  In de volgende stap wordt de port
	  ge&iuml;nstalleerd.  Om dat te bewerkstelligen wordt het
	  woord <command>install</command> aan <command>make</command>
	  toegevoegd:</para>

	<screen>&prompt.root; <userinput>make install</userinput>
===&gt;  Installing for lsof-4.57
...
[uitvoer installatie verwijderd]
...
===&gt;   Generating temporary packing list
===&gt;   Compressing manual pages for lsof-4.57
===&gt;   Registering installation for lsof-4.57
===&gt;  SECURITY NOTE:
      This port has installed the following binaries which execute with
      increased privileges.
&prompt.root;</screen>

	<para>Als het prompt weer beschikbaar is, is de applicatie
	  klaar voor gebruik.  Omdat <command>lsof</command> met
	  verhoogde rechten wordt uitgevoerd, wordt er een
	  waarschuwing getoond.  Tijdens het bouwen en installeren van
	  ports zijn de getoonde waarschuwingen van belang.</para>

	<note>
	  <para>Het is mogelijk een stap minder te gebruiken door
	    <command>make install</command> uit te voeren in plaats van
	    <command>make</command> en <command>make install</command>
	    als twee afzonderlijke stappen.</para>
	</note>

	<note>
	  <para>Sommige shells houden een cache bij van de commando's
	    die in de mappen uit de omgevingsvariabele
	    <envar>PATH</envar> staan om het opzoeken van een
	    uitvoerbaar bestand te versnellen.  Als zo'n shell wordt
	    gebruikt, moet er na de installatie van een port het
	    commando <command>rehash</command> worden uitgevoerd
	    voordat zojuist ge&iuml;nstalleerde commando's kunnen
	    worden gebruikt.  Dit commando werkt voor shells zoals
	    <command>tcsh</command>.  Voor shells als
	    <command>sh</command> of <filename
	      role="package">shells/bash</filename> dient
	    <command>hash -r</command> gebruikt te worden.  In de
	    documentatie van een shell staat meer informatie.</para>
	</note>

	<note>
	  <para>Licenties van sommige ports staan niet toe dat de
	    code wordt opgenomen in een cd-rom.  Dit kan komen doordat
	    er een formulier ingevuld moet worden voor een download of
	    doordat herdistributie niet is toegestaan of om een andere
	    reden.  Om een port te installeren die niet op de cd-rom
	    staat moet de computer waarop de port ge&iuml;nstalleerd
	    wordt een internetverbinding hebben.  Dit staat in de
	    <link linkend="ports-inet">volgende paragraaf</link>
	    beschreven.</para>
	</note>
      </sect3>

      <sect3 id="ports-inet">
	<title>Ports vanaf Internet installeren</title>

	<para>Net als in de vorige paragraaf wordt hier aangenomen dat
	  er voor een systeem een werkende internetverbinding is.  Als
	  die er niet is, dient de <link
	    linkend="ports-cd">cd-rom installatie</link> gevolgd te
	  worden of moet met de hand de distfile in
	  <filename>/usr/ports/distfiles</filename> gezet
	  worden.</para>

	<para>Het installeren van een ports vanaf internet gaat op
	  precies dezelfde manier als de installatie vanaf cd-rom.  Het
	  enige verschil is dat de distfile van internet komt in plaats
	  vanaf de cd-rom.</para>

	<para>Het stappenplan is ook hetzelfde:</para>

	<screen>&prompt.root; <userinput>make install</userinput>
&gt;&gt; lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
&gt;&gt; Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
439860 bytes transferred in 18.0 seconds (23.90 kBps)
===&gt;  Extracting for lsof-4.57
...
[uitvoer van uitpakken verwijderd]
...
&gt;&gt; Checksum OK for lsof_4.57D.freebsd.tar.gz.
===&gt;  Patching for lsof-4.57
===&gt;  Applying FreeBSD patches for lsof-4.57
===&gt;  Configuring for lsof-4.57
...
[uitvoer van configure verwijderd]
...
===&gt;  Building for lsof-4.57
...
[uitvoer van compileren verwijderd]
...
===&gt;  Installing for lsof-4.57
...
[uitvoer van installatie verwijderd]
...
===&gt;   Generating temporary packing list
===&gt;   Compressing manual pages for lsof-4.57
===&gt;   Registering installation for lsof-4.57
===&gt;  SECURITY NOTE:
      This port has installed the following binaries which execute with
      increased privileges.
&prompt.root;</screen>

	<para>Het enige verschil is de regel die aangeeft waar de
	  distfile wordt opgehaald.</para>

	<para>Het portssysteem gebruikt &man.fetch.1; om bestanden te
	  downloaden.  Dat programma maakt gebruik van een aantal
	  omgevingsvariabelen, waaronder
	  <envar>FTP_PASSIVE_MODE</envar>, <envar>FTP_PROXY</envar>,
	  en <envar>FTP_PASSWORD</envar>.  Als een systeem achter een
	  firewall staat, is het wellicht noodzakelijk om een of meer
	  van deze omgevingsvriabelen in te stellen of om gebruik te
	  maken van een FTP/HTTP proxy.  In &man.fetch.3; staat een
	  complete lijst.</para>

	<para>Als er geen continue internetverbinding is, kan gebruik
	  gemaakt worden van <command>make
	    <maketarget>fetch</maketarget></command>.  Door dit
	  commando in de map <filename>/usr/ports</filename> uit te
	  voeren worden <emphasis>alle</emphasis> benodigde bestanden
	  gedownload.  Dit commando werkt ook op een lager niveau als
	  <filename>/usr/ports/net</filename> of
	  <filename>/usr/ports/net/xmule</filename>.  Als een port
	  afhankelijk is van bibliotheken of andere ports dan worden
	  de distfiles van die ports <emphasis>niet</emphasis>
	  opgehaald.  Om dat de bereiken dient
	  <maketarget>fetch</maketarget> vervangen te worden door
	  <maketarget>fetch-recursive</maketarget>.</para>

	<note>
	  <para>Het is mogelijk alle ports in een categorie te bouwen
	    door <command>make</command> in een hogere map uit te
	    voeren, naar analogie van het voorbeeld voor <command>make
	      <makevar>fetch</makevar></command>.  Dit is wel
	    gevaarlijk, omdat sommige ports niet tegelijk met andere
	    ge&iuml;nstalleerd kunnen zijn.  In andere gevallen
	    installeren twee ports hetzelfde bestand met een andere
	    inhoud.</para>
	</note>

	<para>In zeldzame gevallen willen of moeten gebruikers de tar
	  bestanden van een andere site dan de
	  <makevar>MASTER_SITES</makevar> halen (de locatie waar de
	  bestanden vandaan komen).  Dat is mogelijk met de optie
	  <makevar>MASTER_SITES</makevar> met een volgend
	  commando:</para>

	<screen>&prompt.root; <userinput>cd /usr/ports/<replaceable>directory</replaceable></userinput>
&prompt.root; <userinput>make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch</userinput></screen>

	<para>In het voorgaande voorbeeld is de optie
	  <makevar>MASTER_SITES</makevar> gewijzigd naar <hostid
	    role="fqdn">ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/</hostid>.</para>

	<note>
	  <para>Sommige ports staan toe (of schrijven zelfs voor) dat
	    er een aantal instellingen worden meegegeven die bepaalde
	    onderdelen (niet gebruikt, beveiligingsinstellingen en
	    andere aanpassingen) van de applicatie in- of uitschakelen.
	    Voorbeelden van ports waarbij dat het geval is zijn
	    <filename role="package">www/mozilla</filename>, <filename
	      role="package">security/gpgme</filename> en <filename
	      role="package">mail/sylpheed-claws</filename>.  Er wordt
	    een bericht getoond als dit soort instellingen beschikbaar
	    zijn.</para>
	  </note>
      </sect3>

      <sect3>
	<title>Standaardmappen voor ports wijzigen</title>

	<para>Soms is het handig (of verplicht) om een andere map voor
	  distfiles of ports te gebruiken.  Met de variabelen
	  <makevar>PORTSDIR</makevar> en <makevar>PREFIX</makevar>
	  kunnen de standaardmappen veranderd worden:</para>

	<screen>&prompt.root; <userinput>make PORTSDIR=/usr/home/example/ports install</userinput></screen>

	<para>Het voorbeeld hierboven compileert de port in
	  <filename>/usr/home/example/ports</filename> en installeert
	  alles in <filename>/usr/local</filename>.</para>

	<screen>&prompt.root; <userinput>make PREFIX=/usr/home/example/local install</userinput></screen>

	<para>Het voorbeeld hierboven compileert in
	  <filename>/usr/ports</filename> en installeert in
	  <filename>/usr/home/example/local</filename>.</para>

	<screen>&prompt.root; <userinput>make PORTSDIR=../ports PREFIX=../local install</userinput></screen>

	<para>Het voorbeeld hierboven combineert de twee instellingen.
	  Het gaat te ver om dit volledig in het handboek te
	  beschrijven, maar hier krijgt de lezer een idee van de
	  mogelijkheden.</para>

	<para>Het is ook mogelijk de bovenstaande variabelen als deel
	  van de omgeving in te stellen.  In de hulppagina's van de
	  gebruikte shell staat hoe dat mogelijk is.</para>
      </sect3>

      <sect3>
	<title>Omgaan met <command>imake</command></title>

	<para>Er zijn ports die <command>imake</command> gebruiken
	  (een onderdeel van het X Window systeem) die niet goed werken
	  met <makevar>PREFIX</makevar> en erop staan te installeren in
	  <filename>/usr/X11R6</filename>.  Er zijn ook een aantal Perl
	  ports die <makevar>PREFIX</makevar> negeren en in de Perl
	  hi&euml;rarchie installeren.  Deze ports op de
	  <makevar>PREFIX</makevar> locatie laten installeren is
	  meestal erg moeilijk of onmogelijk.</para>
      </sect3>
    </sect2>

    <sect2 id="ports-removing">
      <title>Ge&iuml;nstalleerde ports verwijderen</title>

      <indexterm>
	<primary>ports</primary>

	<secondary>verwijderen</secondary>
      </indexterm>

      <para>In deze paragraaf wordt het verwijderen van ports
	behandeld.  Dat kan nodig zijn als een port niet langer wordt
	gebruikt of als de verkeerde ports is ge&iuml;nstalleerd.  Dit
	wordt ge&iuml;llustreerd door de port uit het vorige voorbeeld
	te verwijderen (<command>lsof</command>).  Net als bij het
	installeren van ports, moet eerst naar de juiste map gegaan
	worden (<filename>/usr/ports/sysutils/lsof</filename>).  Daarna
	kan <command>lsof</command> verwijderd worden.  Dit gaat met
	het commando <command>make deinstall</command>:</para>

      <screen>&prompt.root; <userinput>cd /usr/ports/sysutils/lsof</userinput>
&prompt.root; <userinput>make deinstall</userinput>
===&gt;  Deinstalling for lsof-4.57</screen>

      <para>Erg makkelijk dus.  Nu is <command>lsof</command> van een
	systeem verwijderd.  Om het opnieuw te installeren kan vanuit
	de map <filename>/usr/ports/sysutils/lsof</filename>
	<command>make reinstall</command> uitgevoerd worden.</para>

      <para>Het uitvoeren van <command>make deinstall</command> en
	<command>make reinstall</command> werkt niet als ooit
	<command>make clean</command> voor die port is uitgevoerd.  Om
	een port te verwijderen na het cleanen van die port kan
	&man.pkg.delete.1; gebruikt worden, zoals wordt toegelicht in
	de paragraaf <link linkend="packages-using">Het Packagessysteem
	  Gebruiken</link>.</para>
    </sect2>

    <sect2 id="ports-disk-space">
      <title>Ports en schijfruimte</title>

      <indexterm>
	<primary>ports</primary>

	<secondary>schijfruimte</secondary>
      </indexterm>

      <para>Werken met de Portscollectie kan in de loop der tijd veel
	schijfruimte gebruiken.  Omdat de portsstructuur de neiging
	heeft in de loop der tijd in grootte te groeien, na het bouwen
	en installeren van software uit de ports, is het van belang
	altijd de tijdelijke werkmappen <filename
	  class="directory">work</filename> op te ruimen met het
	commando <command>make <makevar>clean</makevar></command>.
	Hiermee wordt de map <filename
	  class="directory">work</filename> verwijderd nadat
	een port is gebouwd en ge&iuml;nstalleerd.  Daarnaast kunnen
	ook de distfiles met de broncode verwijderd worden uit de map
	<filename class="directory">distfiles</filename> en
	kunnen ports die niet meer gebruikt worden verwijderd
	worden.</para>

      <para>Sommige gebruikers kiezen ervoor om de beschikbare port
	categorie&euml;n te beperken met instellingen in het bestand
	<filename>refuse</filename>.  Zo kan bij het draaien van de
	applicatie <application>CVSup</application> voorkomen worden
	dat bestanden in een categorie worden gedownload.  Meer
	informatie over <filename>refuse</filename> staat in <xref
	linkend="cvsup-refuse-file">.</para>
    </sect2>

    <sect2 id="ports-upgrading">
      <title>Ports bijwerken</title>

      <indexterm><primary>portupgrade</primary></indexterm>

      <indexterm>
	<primary>ports</primary>

	<secondary>bijwerken</secondary>
      </indexterm>

      <note>
	<para>Als de Portscollectie eenmaal is bijgewerkt
	  v&oacute;&oacute;r het bijwerken van ports, is het verstandig
	  het bestand <filename>/usr/ports/UPDATING</filename> te
	  raadplegen.  In dat bestand staan aanwijzingen en wijzigingen
	  voor gebruikers die van belang zijn bij het bijwerken van
	  ports.</para>
      </note>

      <para>Het bijwerken van ports kan een vervelend klusje zijn.  Om
	bijvoorbeeld een port bij te werken is het nodig om naar de
	juiste portsmap te gaan, de port te bouwen, de oude port te
	verwijderen, de nieuwe port te installeren en daarna de werkmap
	op te ruimen.  Het is voorstelbaar dat dit voor bijvoorbeeld
	vijf ports een vervelend klusje is.  Dit was een groot probleem
	voor systeembeheerders, dus zijn daar hulpprogramma's voor
	gemaakt.  Zo voert het hulpprogramma <filename
	  role="package">sysutils/portupgrade</filename> het complete
	hiervoor beschreven proces uit!  Die port is gewoon als iedere
	andere port te installeren met <command>make <makevar>install
	  clean</makevar></command>.</para>

      <para>Nu kan er een database gemaakt worden met het commando
	<command>pkgdb&nbsp;-F</command>.  Hiermee wordt de lijst van
	ge&iuml;nstalleerde ports gelezen en wordt een databasebestand
	gemaakt in de map <filename>/var/db/pkg</filename>.  Als daarna
	<command>portupgrade&nbsp;-a</command> wordt uitgevoerd, wordt
	die database gelezen en het bestand <filename>INDEX</filename>
	van de ports.  Tenslotte begint
	<application>portupgrade</application> met het downloaden,
	bouwen, back-uppen, installeren en opschonen van de ports die
	zijn bijgewerkt.  <application>portupgrade</application> kent
	veel opties voor verschillend gebruik.  De meest belangrijke
	worden hieronder besproken.</para>

      <para>Om een specifieke applicatie bij te werken en niet de hele
	database, kan <command>portupgrade
	  <replaceable>pkgname</replaceable></command> gebruikt worden.
	De vlag <option>-r</option> kan gebruikt worden om
	<application>portupgrade</application> ook te draaien voor alle
	packages waar het opgegeven package van afhankelijk is en
	de optie <option>-R</option> zorgt ervoor dat het wordt
	gedraaid voor alle packages die van het opgegeven package
	afhankelijk zijn.</para>

      <para>Om bij installatie van packages in plaats van ports gebruik
	te maken kan <option>-P</option> gebruikt worden.  Met deze
	optie zoekt <application>portupgrade</application> in de
	lokale mappen uit <envar>PKG_PATH</envar> of haalt de packages
	van via het netwerk op als het lokaal niet wordt aangetroffen.
	Als een package niet lokaal en niet via het netwerk wordt
	gevonden, dan gebruikt <application>portupgrade</application>
	ports.  Om het gebruik van ports te voorkomen kan gebruik
	gemaakt worden van de optie <option>-PP</option>.</para>

      <para>Om alleen de distfiles op te halen (of packages als
	<option>-P</option> is opgegeven), zonder bouwen of
	installeren, is <option>-F</option> beschikbaar.  Meer
	informatie staat in &man.portupgrade.1;.</para>

      <note>
	<para>Het is van belang om regelmatig de packagedatabase bij
	  te werken met <command>pkgdb&nbsp;-F</command> om
	  inconsistenties de repareren, in het bijzonder als
	  <application>portupgrade</application> daar om vraagt.  Als
	  <application>portupgrade</application> tijdens het bijwerken
	  van de packagedatabase wordt onderbroken levert dat een
	  inconsistente database op.</para>
      </note>

      <para>Er bestaan ook andere hulpprogramma's die de besproken
	taken uit kunnen voeren.  Deze zijn te vinden in de map
	<filename>ports/sysutils</filename>.</para>
    </sect2>
  </sect1>

  <sect1 id="ports-nextsteps">
    <title>Activiteiten na het installeren</title>

    <para>Na het installeren van een nieuwe applicatie is het meestal
      verstandig om de documentatie te lezen die bij een applicatie
      zit, bestanden met instellingen die vereist zijn aan te passen,
      ervoor te zorgen dat de applicatie start na het booten (als het
      een daemon is), enzovoort.</para>

    <para>De exacte stappen om een applicatie in te stellen zijn
      natuurlijk voor iedere applicatie anders.  Maar als er net een
      nieuwe applicatie is ge&iuml;nstalleerd en het is niet
      vanzelfsprekend hoe verder te gaan, dan kunnen de volgende tips
      helpen:</para>

    <itemizedlist>
      <listitem>
	<para>Met &man.pkg.info.1; kan uitgevonden worden welke
	  bestanden ge&iuml;nstalleerd zijn en waar.  Om bijvoorbeeld
	  uit te vinden welke bestanden door FooPackage versie 1.0.0
	  zijn ge&iuml;nstalleerd:</para>

	<screen>&prompt.root; <userinput>pkg_info -L foopackage-1.0.0 | less</userinput></screen>

	<para>Bestanden in mapnamen met <filename>man/</filename>
	  zijn hulppagina's, <filename>etc/</filename> bevat bestanden
	  met instellingen en <filename>doc/</filename> bevat
	  uitgebreidere documentatie.</para>

	<para>Als niet helemaal duidelijk is welke versie van het
	  programma is ge&iuml;nstalleerd, kan een commando als volgt
	  gebruikt worden:</para>

	<screen>&prompt.root; <userinput>pkg_info | grep -i <replaceable>foopackage</replaceable></userinput></screen>

	<para>Hiermee worden alle packages getoond waar
	  <replaceable>foopackage</replaceable> in de packagenaam
	  voorkomt.</para>
      </listitem>

      <listitem>
	<para>Als de hulppagina's zijn gevonden, kunnen die bekeken
	  worden met &man.man.1;.  Zo kan er ook in de bestanden met
	  voorbeeldinstellingen gekeken worden en naar aanvullende
	  documentatie, als die is bijgeleverd.</para>
      </listitem>

      <listitem>
	<para>Als er een website is voor de applicatie staat daar
	  vaak ook aanvullende documentatie, veelgestelde vragen,
	  enzovoort.  Als het webadres niet bekend is, kan dat nog
	  staan in de uitvoer van het volgende commando:</para>

	<screen>&prompt.root; <userinput>pkg_info <replaceable>foopackage-1.0.0</replaceable></userinput></screen>

	<para>Als er een regel met <literal>WWW:</literal> in staat, is
	  dat de URL naar de website voor de applicatie.</para>
      </listitem>

      <listitem>
	<para>Ports die na het booten moeten starten (zoals internet
	  diensten) hebben meestal een voorbeeldscript in
	  <filename>/usr/local/etc/rc.d</filename>.  Dit script kan
	  bekeken, aangepast en hernoemd worden waar nodig.  Meer
	  informatie staat in <link
	    linkend="configtuning-starting-services">Diensten
	    Starten</link>.</para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="ports-broken">
    <title>Omgaan met kapotte ports</title>

    <para>Als een port niet werkt, zijn er een aantal mogelijke
      manieren om verder te komen:</para>

    <orderedlist>
      <listitem>
	<para>Repareren!  In het <ulink
	    url="&url.books.porters-handbook;/index.html">Handboek
	    voor de Porter</ulink> is gedetailleerde informatie te
	  vinden over de infrastructuur van de <quote>Ports</quote>,
	  zodat een kapotte port gemaakt kan worden of er zelfs een
	  nieuwe port ingestuurd kan worden.</para>
      </listitem>

      <listitem>
	<para>Klaag <emphasis>alleen per e-mail</emphasis>!  Er kan
	  eerst een e-mail naar de beheerder van de port gestuurd
	  worden.  Voor het mailadres van de beheerder kan
	  <command>make maintainer</command> ingegeven worden of het
	  kan in de <filename>Makefile</filename> staan.  In de mail
	  dienen in ieder geval de naam en versie van de port te
	  staan (de regel met <literal>&dollar;&os;:</literal> in de
	  <filename>Makefile</filename>) en de uitvoer tot en met de
	  foutmelding.  Als er geen antwoord komt van de beheerder,
	  kan er met &man.send-pr.1; een foutrapport ingestuurd
	  worden.</para>
      </listitem>

      <listitem>
	<para>Zoek een package van een FTP site in de buurt.  De
	  <quote>master</quote> packagecollectie staat op <hostid
	    role="fqdn">ftp.FreeBSD.org</hostid> in de <ulink
	    url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/">map
	    packages</ulink>, maar het is van belang dat er
	  <emphasis>eerst</emphasis> in de buurt wordt gekeken!  Dat
	  het package werkt is waarschijnlijker dan wanneer uit de
	  de broncode wordt gecompileerd en het is nog sneller ook.
	  Een package kan met &man.pkg.add.1; ge&iuml;nstalleerd
	  worden.</para>
      </listitem>
    </orderedlist>
  </sect1>
</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->
