Als u 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:
Download de software als broncode of als binair bestand;
Pak de software uit vanuit zijn originele distributietype (meestal een tar-bestand gecomprimeerd met compress(1), gzip(1), of bzip2(1));
Zoek de documentatie (meestal een
INSTALL
of README
bestand of enkele bestanden in een submap
doc/
) en lees zorgvuldig hoe de software
geļnstalleerd moet worden;
Als de software als broncode is gedistribueerd, moet de
broncode gecompileerd worden. Dit kan wijzigingen in een
Makefile
vereisen of het draaien van een
configure
script en andere
werkzaamheden;
De software installeren en testen.
En dat geldt alleen als alles goed gaat. Als er een softwarepakket geļnstalleerd wordt dat niet specifiek gemaakt is voor FreeBSD moet mogelijkerwijs zelfs de code aangepast worden om alles goed te laten werken.
Als de gebruiker het wenst, kan hij in FreeBSD doorgaan met het installeren van software op de “traditionele” manier. FreeBSD levert echter twee technologieėn die veel moeite kunnen besparen: pakketten en ports. Op dit moment zijn zo meer dan 24,000 applicaties beschikbaar.
Voor iedere gewenste applicatie is het FreeBSD pakket voor die applicatie één te downloaden bestand. Het pakket bevat voorgecompileerde kopiėn met alle commando's voor de applicatie en alle instellingenbestanden of documentatie. Een gedownload pakketbestand kan gemanipuleerd worden met FreeBSD pakketbeheercommando's zoals pkg_add(1), pkg_delete(1), pkg_info(1), enzovoort. Het installeren van een nieuwe applicatie kan met één commando.
Een FreeBSD port van een applicatie is een groep bestanden ontworpen om het proces van compileren van een applicatie vanuit broncode te automatiseren.
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ļnstalleerd.
Het portssysteem kan zelfs gebruikt worden om pakketten te
maken die later weer gemanipuleerd kunnen worden met
pkg_add
en andere pakketbeheercommando's,
waarover later meer uitleg wordt gegeven.
Zowel pakketten als ports kennen afhankelijkheden
(dependencies). Stel dat er een applicatie
geļnstalleerd gaat worden die er vanuit gaat dat een
specifieke bibliotheek wordt geļnstalleerd. Zowel de
applicatie als de bibliotheek zijn beschikbaar als FreeBSD ports
en pakketten. Als het commando pkg_add
of
het portssysteem wordt gebruikt om de applicatie toe te voegen,
dan zien beiden dat de bibliotheek niet geļnstalleerd is
en wordt deze automatisch eerst geļnstalleerd.
Gezien het feit dat beide technologieėn vrijwel identiek zijn, kan de vraag rijzen waarom FreeBSD de moeite neemt om beide te faciliteren. Pakketten en ports hebben ieder hun eigen kracht. Welke gebruikt wordt hangt af van voorkeuren en omstandigheden.
Een gecomprimeerd pakket tar-bestand is meestal kleiner dan het gecomprimeerde tar-bestand met de broncode van de applicatie;
Pakketten vereisen geen additionele compilatie. Voor grote applicaties als Mozilla, KDE of GNOME kan dit belangrijk zijn, vooral als een systeem wat trager is;
Pakketten vereisen geen begrip van het proces van het compileren van software op FreeBSD.
Pakketten worden meestal gecompileerd met conservatieve opties, omdat ze moeten draaien op een maximaal aantal systemen. Bij het installeren vanuit de port kunnen de compilatie-instellingen aangepast worden om zo bijvoorbeeld code te maken die specifiek voor een Pentium 4 of een Athlon processor is;
Sommige applicaties hebben compilatie-instellingen gerelateerd aan wat ze wel of niet kunnen doen. Apache 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;
In sommige gevallen zijn er meerdere pakketten voor
dezelfde applicatie om specifieke instellingen aan te geven.
Ghostscript is bijvoorbeeld
beschikbaar als een ghostscript
pakket
en ghostscript-nox11
pakket,
afhankelijk van het al dan niet geļnstalleerd hebben van
een X11 server. Deze ruwe vorm van tweaking is mogelijk met
pakketten, maar dit wordt snel onmogelijk als een applicatie
meer dan één of twee verschillende
compilatie-instellingen heeft;
De licentievoorwaarden van sommige softwaredistributies verbieden binaire distributie. Ze moeten dus gedistribueerd worden als broncode;
Sommige mensen vertrouwen binaire distributies niet. Broncode kan tenminste (in theorie) zelf doorgelezen en gecontroleerd worden op potentiėle problemen;
Als er lokale modificaties zijn, is de broncode nodig om ze toe te passen;
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.
Om vernieuwingen van ports bij te houden kan een abonnement genomen worden op de FreeBSD ports mailinglijst en/of de FreeBSD ports bugs mailinglijst.
Voordat een applicatie wordt geļnstalleerd is het aan
te raden op http://vuxml.freebsd.org/
na kijken of er geen beveiligingsproblemen voor de gewenste
applicatie bekend zijn.
Het is ook mogelijk om ports-mgmt/portaudit te installeren,
dat automatisch alle geļnstalleerde applicaties
controleert op bekende fouten. Deze controle wordt ook
uitgevoerd voordat een port wordt geļnstalleerd.
Met het commando portaudit -F -a
kunnen de pakketten die al geļnstalleerd zijn worden
gecontroleerd.
In de rest van dit hoofdstuk wordt uitgelegd hoe pakketten en ports gebruikt kunnen worden om software in FreeBSD te installeren en te beheren.
All FreeBSD documents are available for download at http://ftp.FreeBSD.org/pub/FreeBSD/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.