[OpenBSD]

[FAQ Index] [Naar Sectie 14 - Inrichting van de Schijf]

15 - Het OpenBSD packages en ports systeem


Inhoudsopgave


15.1 - Inleiding

Er zijn veel externe toepassingen beschikbaar die men misschien wil gebruiken op een OpenBSD systeem. Om deze software gemakkelijker te installeren en te beheren, en om ze te helpen laten voldoen aan OpenBSD's beleid en doelstellingen, wordt de externe software geported naar OpenBSD. Met dit port-werk kunnen vele verschillende dingen gepaard gaan. Voorbeelden zijn: de software de standaard OpenBSD directorystructuur laten gebruiken (bv. configuratiebestanden worden in /etc geplaatst), voldoen aan OpenBSD's "shared library" specificaties, de software veiliger maken indien mogelijk, enz.

Het eindresultaat van het port-werk zijn binaire packages die klaar zijn om te installeren. De bedoeling van het package-systeem is bij te houden welke software ge´nstalleerd wordt, zodat deze gelijk wanneer heel gemakkelijk kan geŘpdatet of verwijderd worden. Op die manier blijven er geen onnodige bestanden achter, en kunnen gebruikers hun systemen zuiver houden. Het package-systeem helpt er ook voor te zorgen dat niets per ongeluk verwijderd wordt, wat ertoe kan leiden dat software ophoudt naar behoren te functioneren. Nog een voordeel is dat gebruikers zelden software hoeven te compileren vanaf broncode, aangezien packages reeds gecompileerd werden, beschikbaar zijn en klaar om op een OpenBSD systeem gebruikt te worden. In luttele minuten kan een groot aantal packages afgehaald en ge´nstalleerd worden, met alles op de juiste plaats.

De packages en ports verzameling ondergaat NIET dezelfde uitvoerige veiligheidsaudit die op het OpenBSD basissysteem wordt uitgevoerd. Alhoewel we ernaar streven om de kwaliteit van de packages hoog te houden, hebben we gewoonweg niet genoeg mankracht om hetzelfde niveau van robuustheid en veiligheid te garanderen. Natuurlijk worden beveiligingsupdates voor verscheidene toepassingen zo snel mogelijk gecommit in de ports tree, en worden de overeenkomstige package-beveiligingsupdates beschikbaar gemaakt als snapshots voor -current.

15.2 - Package beheer

15.2.1 - Hoe werkt het?

Packages zijn de vooraf gecompileerde binaries van een aantal van de meest gebruikte externe software. Packages kunnen gemakkelijk beheerd worden met behulp van verscheidene utilities, ook gekend als de pkg* tools:

Om naar behoren te draaien, kan een toepassing X vereisen dat andere toepassingen Y en Z ge´nstalleerd zijn. Toepassing X is met name afhankelijk van deze andere toepassingen, daarom worden Y en Z "dependencies" van X genoemd. Op zijn beurt kan Y andere toepassingen P en Q vereisen, en Z kan toepassing R vereisen om naar behoren te werken. Op deze manier wordt een hele "dependency tree" gevormd.

Packages zien eruit als eenvoudige .tgz archieven. Eigenlijk zijn ze dat ook, maar er is ÚÚn cruciaal verschil: ze bevatten wat extra packing-informatie. Deze informatie wordt door pkg_add(1) gebruikt voor verschillende doeleinden:

15.2.2 - De dingen gemakkelijk maken: PKG_PATH

U kan de dingen erg gemakkelijk maken door de PKG_PATH omgevingsvariabele te gebruiken. Laat hem gewoon naar uw favoriete locatie wijzen, en pkg_add(1) zal daar automatisch gaan zoeken naar elke package die u specificeert, en ook automatisch de noodzakelijke dependencies van deze package afhalen en installeren.

Een lijst met mogelijke locaties om packages vandaan te halen wordt gegeven in de volgende sectie.

Voorbeeld 1: afhalen van uw CDROM, in de veronderstelling dat u deze hebt gemount op /mnt/cdrom

$ export PKG_PATH=/mnt/cdrom/5.3/packages/`machine -a`/

Voorbeeld 2: afhalen van een nabije FTP mirror

$ export PKG_PATH=ftp://your.ftp.mirror/pub/OpenBSD/5.3/packages/`machine -a`/

Het is gewoonlijk een goed idee om een lijn gelijkaardig aan de bovenstaande voorbeelden toe te voegen aan uw ~/.profile. Zoals bij de klassieke PATH variabele, kan u meerdere locaties specificeren, gescheiden door dubbele punten. Voorafgaand aan OpenBSD 4.4 MOET elk pad in de PKG_PATH variabele eindigen op een schuine streep (/). Op die manier kan pkg_add(1) het pad correct splitsen zelfs als er URL schema's in zitten die dubbele punten bevatten. Als de eerste entry in PKG_PATH faalt, zal de volgende geprobeerd worden, enzoverder, tot de package gevonden wordt. Als alle entries falen, krijgt u een foutmelding.

Bemerk het gebruik van machine(1) in de bovenstaande commandoregels. Dit vervangt automatisch de "toepassingsarchitectuur" van uw ge´nstalleerde OpenBSD, welke gewoonlijk, maar niet altijd, de naam van uw platform is. Indien u snapshots gebruikt, zal u natuurlijk "5.3" door "snapshots" vervangen.

15.2.3 - Zoeken naar packages

Er is een grote verzameling vooraf gecompileerde packages beschikbaar voor de meest voorkomende architecturen. Zoek gewoon uw package op ÚÚn van deze plaatsen:

Als u de ports tree op uw systeem hebt, kan u snel de package vinden die u zoekt zoals uitgelegd in Doorzoeken van de ports tree.

Als u een specifieke bestandsnaam zoekt, installeer dan het pkglocatedb package en gebruik het pkg_locate commando om te zoeken naar packages waar het betreffende bestand in zit.

U zal merken dat bepaalde packages beschikbaar zijn in enkele verschillende varianten, formeel "flavors" genoemd. Andere zijn onderdelen van dezelfde toepassing die afzonderlijk kunnen ge´nstalleerd worden. Deze worden "subpackages" genoemd. Dit wordt in meer detail besproken in Gebruik van flavors en subpackages maar flavor betekent eigenlijk dat ze geconfigureerd worden met verschillende sets van opties. Momenteel hebben vele packages flavors, bijvoorbeeld: databankondersteuning, ondersteuning voor systemen zonder X, of netwerktoevoegingen zoals SSL en IPv6. Elke flavor van een package zal een verschillend suffix hebben in zijn package-naam. Raadpleeg voor gedetailleerde informatie over package-namen alstublieft packages-specs(7).

Opmerking: Niet alle mogelijke packages zijn noodzakelijk beschikbaar op de FTP servers! Sommige toepassingen werken gewoon niet op alle architecturen. Sommige toepassingen mogen niet gedistribueerd worden via FTP (of CD-ROM) om licentieredenen. Er kunnen ook vele mogelijke combinaties van flavors van een port zijn, en het OpenBSD project heeft gewoon niet de middelen om ze allemaal te bouwen. Indien u een combinatie nodig hebt die niet beschikbaar is, zal u de port vanaf broncode moeten bouwen. Lees voor meer informatie daarover Gebruik van flavors en subpackages in de Ports sectie van dit document.

15.2.4 - Installeren van nieuwe packages

Om packages te installeren wordt de utility pkg_add(1) gebruikt. Als u de dingen gemakkelijk gemaakt hebt voor uzelf door de PKG_PATH omgevingsvariabele in te stellen, kan u gewoon pkg_add(1) aanroepen met de package-naam, zoals in het volgende eenvoudige voorbeeld.
$ sudo pkg_add -v screen-4.0.3p1
parsing screen-4.0.3p1
installed /etc/screenrc from /usr/local/share/examples/screen/screenrc | 71%
screen-4.0.3p1: complete

In dit voorbeeld werd de -v vlag gebruikt om meer uitgebreide uitvoer te geven. Deze optie is niet nodig maar ze is nuttig om te debuggen en werd hier gebruikt om een beetje meer inzicht te bieden in wat pkg_add(1) eigenlijk aan het doen is. Bemerk de boodschap die /etc/screenrc vermeldt. Het specificeren van meerdere -v vlaggen zal nog meer uitgebreide uitvoer produceren.

pkg_add(1) in interactieve modus gebruiken

pkg_add(1) heeft een interactieve modus, die ingeschakeld wordt door het aan te roepen met de -i vlag, en die ervoor zorgt dat het u vragen stelt wanneer het zelf geen beslissing kan nemen. Als u bijvoorbeeld het versienummer van een package niet op voorhand kent, kan u iets als het volgende proberen:
$ sudo pkg_add -i screen
Ambiguous: screen could be screen-4.0.3p3 screen-4.0.3p3-shm
Choose one package
         0: <None>
         1: screen-4.0.3p3
         2: screen-4.0.3p3-shm
Your choice: 1
screen-4.0.3p3: complete

Voor sommige packages zal er belangrijke bijkomende informatie gegeven worden over de configuratie of het gebruik van de toepassing op een OpenBSD systeem. Aangezien ze belangrijk is, zal ze getoond worden ongeacht het gebruik van de -v vlag. Beschouw het volgende voorbeeld:

$ sudo pkg_add ghostscript-fonts-8.11
ghostscript-fonts-8.11: complete
You may wish to update your font path for /usr/local/share/ghostscript/fonts
--- ghostscript-fonts-8.11 -------------------
To install these fonts for X11, just make sure that the fontpath
lists the 75dpi or 100dpi bitmap fonts before the ghostscript fonts,
and make sure you have the string ":unscaled" appended to the bitmap
font's fontpath. This way, the bitmap fonts will be used if they
match, and the Type 1 versions will be used if the font needs to be
scaled. Below is the relevant section from a typical xorg.conf file.

   FontPath   "/usr/X11R6/lib/X11/fonts/misc/"
   FontPath   "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
   FontPath   "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
   FontPath   "/usr/local/lib/X11/fonts/ghostscript/"
   FontPath   "/usr/X11R6/lib/X11/fonts/Type1/"

Laat ons nu verder gaan met een voorbeeld van een package die dependencies heeft:

$ sudo pkg_add -v tin-1.8.2p0
parsing tin-1.8.2p0
Dependencies for tin-1.6.2 resolve to: gettext-0.14.6, libutf8-0.8, pcre-6.4p1, libiconv-1.9.2p3 (todo: libiconv-1.9.2p3,gettext-0.14.6,pcre-6.4p1,libutf8-0.8)
tin-1.8.2p0:parsing libiconv-1.9.2p3
tin-1.8.2p0:libiconv-1.9.2p3: complete
tin-1.8.2p0:parsing gettext-0.14.6
Dependencies for gettext-0.14.6 resolve to: expat-2.0.0, libiconv-1.9.2p3 (todo: expat-2.0.0)
tin-1.8.2p0:parsing expat-2.0.0
tin-1.8.2p0:expat-2.0.0: complete
tin-1.8.2p0:gettext-0.14.6: complete
tin-1.8.2p0:parsing pcre-6.4p1
tin-1.8.2p0:pcre-6.4p1: complete
tin-1.8.2p0:parsing libutf8-0.8
tin-1.8.2p0:libutf8-0.8: complete
tin-1.8.2p0: complete
We voegden opnieuw de -v vlag toe om meer te zien van wat er gebeurt. Bij het onderzoeken van de packing-informatie worden dependencies gevonden en die worden eerst ge´nstalleerd. Ergens halverwege kan u zien dat de gettext package ge´nstalleerd wordt, die afhangt van libiconv. Vˇˇr het installeren van gettext wordt de packing-informatie ervan onderzocht en wordt geverifieerd of libiconv reeds ge´nstalleerd is.

Het is mogelijk om op ÚÚn lijn meerdere package-namen te specificeren, die dan allemaal ineens ge´nstalleerd worden, samen met mogelijke dependencies.

Als u om ÚÚn of andere reden beslist om PKG_PATH niet te gebruiken, is het ook mogelijk om de absolute locatie van een package op de commandoregel te specificeren. Deze absolute locatie kan een lokaal pad zijn, of een URL die verwijst naar FTP, HTTP of SCP locaties. Laten we een installatie vie FTP beschouwen in het volgende voorbeeld:

$ sudo pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/5.3/packages/`machine -a`/screen-4.0.3p3.tgz
screen-4.0.3p1: complete

In dit voorbeeld werd de -v vlag niet gebruikt, dus worden enkel noodzakelijke boodschappen getoond. Merk op dat de volledige bestandsnaam ingegeven werd door een .tgz suffix toe te voegen. U kan dit suffix ook overslaan zoals in de vorige voorbeelden aangezien het automatisch wordt aangevuld door pkg_add(1).

Opmerking: Niet alle architecturen hebben dezelfde packages beschikbaar. Sommige ports werken niet op bepaalde architecturen, en prestatie beperkt het aantal packages dat op andere kan gebouwd worden.

Voor de veiligheid zal pkg_add(1), indien u een package installeert die u eerder al ge´nstalleerd had (of een oudere versie ervan) en weer verwijderd, configuratiebestanden die gewijzigd werden niet overschrijven. In plaats daarvan zal het u hierover informeren als volgt (echter alleen bij gebruik van de -v vlag!):

$ sudo pkg_add -v screen-4.0.3p1
parsing screen-4.0.3p1
The existing file /etc/screenrc has NOT been changed**                 | 71%
It does NOT match the sample file /usr/local/share/examples/screen/screenrc
You may wish to update it manually
screen-4.0.3p1: complete
Soms kan u een fout krijgen zoals die in het volgende voorbeeld:
$ sudo pkg_add xv-3.10ap4
xv-3.10ap4:jpeg-6bp3: complete
xv-3.10ap4:png-1.2.14p0: complete
xv-3.10ap4:tiff-3.8.2p0: complete
Can't install xv-3.10ap4: lib not found X11.9.0
Even by looking in the dependency tree:
        tiff-3.8.2p0, jpeg-6bp3, png-1.2.14p0
Maybe it's in a dependent package, but not tagged with @lib ?
(check with pkg_info -K -L)
If you are still running 3.6 packages, update them.
Daar is pkg_add(1) netjes dependencies aan het installeren, wanneer het plotseling de installatie van xv afbreekt. Dit is nog een veiligheidsvoorzorg die beschikbaar is sinds OpenBSD 3.7. De packing-informatie die gebundeld is in de package bevat informatie over "shared libraries" waarvan de package verwacht dat ze ge´nstalleerd zijn, zowel systeem-libraries als externe libraries. Als ÚÚn van de vereiste libraries niet kan gevonden worden, wordt de package niet ge´nstalleerd omdat hij toch niet zou werken.

Om dit type van conflict op te lossen, moet u te weten komen wat u moet installeren om de vereiste libraries op uw systeem te krijgen. Er zijn verscheidene dingen die u kan controleren:

15.2.5 - Opsommen van ge´nstalleerde packages

U kan een lijst van ge´nstalleerde packages zien door de pkg_info(1) utility te gebruiken.
$ pkg_info
aterm-0.4.2p1       color vt102 terminal emulator with transparency support
bzip2-1.0.4         block-sorting file compressor, unencumbered
expat-2.0.0         XML 1.0 parser written in C
fluxbox-0.9.15.1p0  window manager based on the original Blackbox code
gettext-0.14.6      GNU gettext
imlib2-1.3.0        image manipulation library
jpeg-6bp3           IJG's JPEG compression utilities
libiconv-1.9.2p3    character set conversion library
libltdl-1.5.22p1    GNU libtool system independent dlopen wrapper
libungif-4.1.4p0    tools and library routines for working with GIF images
libutf8-0.8         provides UTF-8 locale support
mutt-1.4.2.2i       tty-based e-mail client
pcre-6.4p1          perl-compatible regular expression library
png-1.2.14p0        library for manipulating PNG images
screen-4.0.3p1      multi-screen window manager
tcsh-6.14.00p1      extended C-shell with many useful features
tiff-3.8.2p0        tools and library routines for working with TIFF images
tin-1.8.2p0         threaded NNTP and spool based UseNet newsreader

Wanneer u een naam van een ge´nstalleerde package (of een locatie van een package die ge´nstalleerd moet worden), zal pkg_info(1) meer gedetailleerde informatie tonen over die specifieke package.

15.2.6 - Updaten van ge´nstalleerde packages

Stel dat u een oudere versie van unzip ge´nstalleerd had alvorens deze doos te upgraden van OpenBSD 5.2 naar 5.3. Nu kan u gemakkelijk upgraden naar de nieuwere 5.3 package als volgt:
$ sudo pkg_add -u unzip
unzip-5.52p0 (extracting): complete
unzip-5.52 (deleting): complete
unzip-5.52p0 (installing): complete
Clean shared items: complete

Wanneer een package dependencies heeft, worden die ook onderzocht op updates. Het aanroepen van pkg_add(1) met de -u vlag en zonder package-naam zal alle ge´nstalleerde packages proberen te updaten.

Opmerking: De -u optie steunt op de PKG_PATH omgevingsvariabele. Als die niet ingesteld is, zal pkg_add(1) geen updates kunnen vinden.

Het hebben van meerdere entries in PKG_PATH betekent niet dat alle entries zullen geprobeerd worden voor update operaties. In plaats daarvan zal pkg_add(1) stoppen bij het eerste path met overeenstemmende kandidaten.

Als u een configuratiebestand had dat toebehoorde aan de oude versie en dat u gewijzigd hebt, zal dit standaard onaangeroerd blijven. U kan het echter vervangen door het standaard configuratiebestand van de nieuwe versie door pkg_add(1) aan te roepen met de -c vlag.

15.2.7 - Verwijderen van ge´nstalleerde packages

Om een package te verwijderen, neemt u gewoon de juiste naam van de package zoals getoond door pkg_info(1) (zie Opsommen van ge´nstalleerde packages hierboven) en gebruikt u pkg_delete(1) om de package te verwijderen. In het onderstaande voorbeeld wordt de screen package verwijderd. Bemerk dat er soms instructies zijn van extra dingen die verwijderd moeten worden en die pkg_delete(1) niet voor u verwijderd heeft. Zoals bij de pkg_add(1) utility kan u de -v vlag gebruiken om meer uitgebreide uitvoer te krijgen.

$ sudo pkg_delete screen
screen-4.0.3p1: complete
Clean shared items: complete

Opmerking: Het is vaak niet nodig om de versienummers en flavors bij de package-naam te specificeren, aangezien pkg_delete(1) gewoonlijk zelf de volledige naam zal kunnen vinden. U moet de volledige package-naam specificeren (in het voorbeeld is dat screen-4.0.3p1) alleen als er dubbelzinnigheid mogelijk is wegens meerdere ge´nstalleerde packages met de gespecificeerde naam. In dat geval kan pkg_delete(1) niet weten welke package het moet verwijderen.

Voor de veiligheid zal pkg_delete(1) geen configuratiebestanden verwijderen als ze gewijzigd werden. In plaats daarvan zal het u hierover inlichten als volgt:

$ sudo pkg_delete screen
screen-4.0.3p1: complete
Clean shared items: complete
--- screen-4.0.3p1 -------------------
You should also remove /etc/screenrc (which was modified)

Als u die configuratiebestanden liever automatisch verwijderd wil zien, kan u dat doen door de -c vlag te gebruiken.

15.2.8 - Installeren of verwijderen van onvolledige packages

In enkele uitzonderlijke gevallen kan het gebeuren dat een package niet volledig toegevoegd of verwijderd werd, door conflicten met andere bestanden. De onvolledige installatie wordt gewoonlijk aangeduid door "partial-" voor de package-naam te plakken. Dit kan bijvoorbeeld voorkomen wanneer u toevallig CTRL+C induwt tijdens de installatie:
$ sudo pkg_add screen-4.0.3p1
screen-4.0.3p1: complete                                                      7%
Adjusting md5 for /usr/local/info/screen.info-3 from 49fb3fe1cc3a3b0057518459811b6dac to 3b9c7811244fb9f8d83bb27d3a0f60d8
/usr/sbin/pkg_add: Installation of screen-4.0.3p1 failed , partial installation recorded as partial-screen-4.0.3p1

Het is altijd een goed idee om gedeeltelijke packages van uw systeem te verwijderen, en mogelijke problemen op te lossen die tot dit falen leidden. Het wijst er vaak op dat u geen zuiver systeem hebt waarbij alles via packages ge´nstalleerd werd, maar waar mogelijk packages vermengd zijn met andere software die rechtstreeks vanaf broncode ge´nstalleerd werd.

15.3 - Werken met ports

Zoals vermeld in de inleiding, worden packages gecompileerd vanuit de ports tree. In deze sectie zullen we uitleggen hoe de ports tree werkt, wanneer u hem best gebruikt en hoe u hem kan gebruiken.

BELANGRIJKE OPMERKING: De ports tree is bedoeld voor gevorderde gebruikers. Iedereen wordt aangeraden de vooraf gecompileerde binaire packages te gebruiken. Stel GEEN beginnersvragen op de mailinglijsten zoals "Hoe kan ik de ports tree werkend krijgen?". Indien u vragen hebt over de ports tree, wordt verondersteld dat u de manual pagina's en deze FAQ gelezen hebt, en dat u in staat bent er mee te werken.

15.3.1 - Hoe werkt het?

De ports tree, een concept dat oorspronkelijk ontleend werd aan FreeBSD, is een verzameling Makefiles, ÚÚn voor iedere externe toepassing, om te regelen

Naast de Makefile bevat iedere port ook tenminste het volgende:

Al deze informatie wordt bijgehouden in een directory-hiŰrarchie onder /usr/ports. Deze hiŰrarchie bevat drie speciale subdirectories:

De andere subdirectories vormen allemaal verschillende toepassingscategoriŰen, die de subdirectories van de eigenlijke ports bevatten. Complexe ports kunnen zelfs nog tot op een dieper niveau georganiseerd zijn, bijvoorbeeld als ze een kerngedeelte hebben en een verzameling extensies, of een stabiele en een snapshot-versie van de toepassing. Iedere portdirectory moet een pkg/ subdirectory bevatten met daarin de inpaklijst en beschrijvingsbestand(en). Er kunnen ook patches/ en files/ subdirectories zijn, respectievelijk voor patches aan de broncode en voor bijkomende bestanden.

Wanneer een gebruiker make(1) uitvoert in de subdirectory van een specifieke port, zal het systeem recursief de "dependency tree" aflopen, controleren of de vereiste dependencies ge´nstalleerd zijn, ontbrekende dependencies bouwen en installeren, en vervolgens verder gaan met het bouwen van de gewenste port. Al het bouwen gebeurt binnen de werkdirectory die de port aanmaakt. Dit is normaal onder ${WRKOBJDIR}, die standaard op /usr/ports/pobj staat, maar u kunt deze overschrijven (zie Configuratie van het ports systeem). Als WRKOBJDIR expliciet leeggemaakt is, dan zal in plaats daarvan een subdirectory van de hoofddirectory van de port worden gebruikt (de naam van het package voorafgegaan door "w-").

Opmerking: Ports worden nooit rechtstreeks op uw systeem ge´nstalleerd! Ze gebruiken een valse ("fake") installatiedirectory. Al wat daar ge´nstalleerd wordt, wordt samengebundeld in een package (die opgeslagen wordt in de packages/ subdirectory van de ports tree zoals eerder vermeld). Het installeren van een port betekent werkelijk: een package aanmaken, en vervolgens die package installeren!

Meer informatie over het ports systeem vindt u terug in deze manual pagina's:

15.3.2 - Afhalen van de ports tree

Alvorens verder te gaan, moet u de sectie lezen over het NIET vermengen van uw OpenBSD systeem en ports tree. Zodra u beslist hebt welke "flavor" van de ports tree u wil, kan u de ports tree afhalen van verschillende bronnen. De onderstaande tabel geeft een overzicht van waar u de verschillende "flavors" kan vinden, en in welke vorm. Een 'x' duidt beschikbaarheid aan en '-' betekent dat het niet beschikbaar is via die specifieke bron.

Bron Form "Flavor"
-release -stable snapshots -current
CD-ROM .tar.gz x - - -
FTP mirrors .tar.gz x - x -
AnonCVS cvs checkout x x - x

Zoek op de CD-ROM en FTP mirrors naar een bestand met de naam ports.tar.gz. U wil dit bestand untarren in de /usr directory, wat /usr/ports zal aanmaken, en alle directories daaronder. Bijvoorbeeld:

$ cd /tmp
$ ftp ftp://ftp.openbsd.org/pub/OpenBSD/5.3/ports.tar.gz
$ cd /usr
$ sudo tar xzf /tmp/ports.tar.gz

De snapshots beschikbaar op de FTP mirrors worden dagelijks gegenereerd vanaf de -current ports tree. U zal de snapshots terugvinden in de pub/OpenBSD/snapshots/ directory. Indien u een snapshot van de ports tree gebruikt, moet u een overeenstemmende snapshot van OpenBSD ge´nstalleerd hebben. Let erop dat u uw ports tree en uw OpenBSD systeem synchroon houdt!

Lees voor meer informatie over het bekomen van de ports tree via AnonCVS alstublieft de AnonCVS pagina die een lijst van beschikbare servers en een aantal voorbeelden bevat.

15.3.3 - Configuratie van het ports systeem

OPMERKING: Deze sectie introduceert enkele bijkomende globale instellingen om toepassingen vanuit ports te bouwen. U kan deze sectie overslaan, maar dan zal u veel van de make(1) opdrachten in de voorbeelden als root moeten uitvoeren.

Omdat het OpenBSD project niet de middelen heeft om de broncode van alle software in de ports tree na te kijken, kan u het ports systeem configureren om een aantal veiligheidsmaatregelen te nemen. De ports infrastructuur kan al het bouwen als een gewone gebruiker uitvoeren, en alleen die stappen die supergebruiker-privileges vereisen, als root uitvoeren. Voorbeelden zijn de fake en install make targets. Omdat root-privileges echter steeds vereist zijn op een bepaald ogenblik, zal het ports systeem u niet redden wanneer u beslist een kwaadwillige toepassing te bouwen.

Het is mogelijk om een "read-only" ports tree te gebruiken door de directories waarnaar geschreven wordt tijdens het bouwen van ports, af te zonderen:

U zou bijvoorbeeld de volgende lijnen kunnen toevoegen aan /etc/mk.conf
WRKOBJDIR=/usr/obj/ports
DISTDIR=/usr/distfiles
PACKAGE_REPOSITORY=/usr/packages
Indien gewenst kan u ook het eigendom van deze directories instellen op uw lokale gebruikersnaam en groep, zodat het ports systeem de onderliggende directories als een gewone gebruiker kan aanmaken.

15.3.4 - Doorzoeken van de ports tree

Zodra u de ports tree op zijn plaats hebt op uw systeem, wordt het heel gemakkelijk om software te zoeken. Gebruik gewoon make search key="zoekterm", zoals getoond in het volgende voorbeeld.
$ cd /usr/ports
$ make search key=rsnapshot
Port:   rsnapshot-1.3.1p0
Path:   net/rsnapshot
Info:   remote filesystem snapshot utility
Maint:  Antoine Jacoutot <ajacoutot@openbsd.org>
Index:  net sysutils
L-deps:
B-deps: :net/rsync
R-deps: :devel/p5-Lchown :net/rsync
Archs:  any
Het zoekresultaat geeft een fijn overzicht van elke toepassing die gevonden werd: de naam van de port, het pad naar de port, een 1-regel beschrijving, de maintainer van de port, sleutelwoorden die verband houden met de port, library/build/runtime dependencies, en architecturen waarvan bekend is dat de port er op werkt.

Dit mechanisme is echter vrij eenvoudig, het draait gewoon awk(1) op het ports indexbestand. Sinds OpenBSD 4.0 werd een nieuwe port, "sqlports" genaamd, aangemaakt, die toelaat heel nauwkeurig te zoeken met behulp van SQL. Het is een SQLite database, maar eigenlijk kan eender welk databaseformaat aangemaakt worden met de ports infrastructuur. De sqlports port bevat een script om de database te genereren, dat zou gebruikt kunnen worden als basis om databases in verschillende formaten te genereren.

Voeg gewoon de sqlports package toe met pkg_add(1) om van start te gaan. Een voorbeeldsessie zou er als volgt kunnen uitzien:

$ sqlite3 /usr/local/share/sqlports
SQLite version 3.3.12
Enter ".help" for instructions
sqlite> SELECT FULLPKGNAME,COMMENT FROM Ports WHERE COMMENT LIKE '%statistics%'

Guppi-0.40.3p1|GNOME-based plot program with statistics capabilities
mailgraph-1.12|a RRDtool frontend for Postfix statistics
R-2.4.1|clone of S, a powerful math/statistics/graphics language
py-probstat-0.912p0|probability and statistics utilities for Python
darkstat-3.0.540p1|network statistics gatherer with graphs
pfstat-2.2p0|packet filter statistics visualization
tcpstat-1.4|report network interface statistics
wmwave-0.4p2|Window Maker dockapp to display wavelan statistics
diffstat-1.43p0|accumulates and displays statistics from a diff file
sqlite>
Het bovenstaande is nog steeds een heel eenvoudige zoekopdracht. Met SQL kan u ongeveer eender wat opzoeken, inclusief dependencies, configuratie-opties, shared libraries, enz.

15.3.5 - Rechtlijnige installatie: een eenvoudig voorbeeld

Laten we voor de duidelijkheid een eenvoudig voorbeeld beschouwen: rsnapshot. Deze toepassing hangt van ÚÚn andere af: rsync.
$ cd /usr/ports/net/rsnapshot
$ make install
===>  Checking files for rsnapshot-1.2.9
>> rsnapshot-1.2.9.tar.gz doesn't seem to exist on this system.
>> Fetch http://www.rsnapshot.org/downloads/rsnapshot-1.2.9.tar.gz.
100% |**************************************************|   173 KB    00:02
>> Size matches for /usr/ports/distfiles/rsnapshot-1.2.9.tar.gz
>> Checksum OK for rsnapshot-1.2.9.tar.gz. (sha1)
===>  rsnapshot-1.2.9 depends on: rsync-2.6.9 - not found
===>  Verifying install for rsync-2.6.9 in net/rsync
===>  Checking files for rsync-2.6.9
>> rsync-2.6.9.tar.gz doesn't seem to exist on this system.
>> Fetch ftp://ftp.samba.org/pub/rsync/old-versions/rsync-2.6.9.tar.gz.
100% |**************************************************|   792 KB    00:31
>> Size matches for /usr/ports/distfiles/rsync-2.6.9.tar.gz
>> Checksum OK for rsync-2.6.9.tar.gz. (sha1)
===>  Verifying specs:  c
===>  found c.40.3
===>  Extracting for rsync-2.6.9
===>  Patching for rsync-2.6.9
===>  Configuring for rsync-2.6.9
  [...snip...]
===>  Building for rsync-2.6.9
  [...snip...]
===>  Faking installation for rsync-2.6.9
  [...snip...]
===>  Building package for rsync-2.6.9
Link to /usr/ports/packages/i386/ftp/rsync-2.6.9.tgz
Link to /usr/ports/packages/i386/cdrom/rsync-2.6.9.tgz
===>  Installing rsync-2.6.6p0 from /usr/ports/packages/i386/all/rsync-2.6.9.tgz
rsync-2.6.9: complete
===> Returning to build of rsnapshot-1.2.9
===>  rsnapshot-1.2.9 depends on: rsync-2.6.9 - found
===>  Extracting for rsnapshot-1.2.9
===>  Patching for rsnapshot-1.2.9
===>  Configuring for rsnapshot-1.2.9
  [...snip...]
===>  Building for rsnapshot-1.2.9
  [...snip...]
===>  Faking installation for rsnapshot-1.2.9
  [...snip...]
===>  Building package for rsnapshot-1.2.9
Link to /usr/ports/packages/i386/ftp/rsnapshot-1.2.9.tgz
Link to /usr/ports/packages/i386/cdrom/rsnapshot-1.2.9.tgz
===>  rsnapshot-1.2.9 depends on: rsync-2.6.9 - found
===>  Installing rsnapshot-1.2.9 from /usr/ports/packages/i386/all/rsnapshot-1.2.9.tgz
rsnapshot-1.2.9: complete

Zoals u kan zien, doet het ports systeem vele dingen automatisch. Het zal de broncode afhalen, uitpakken en patchen, de broncode configureren en bouwen (compileren), de bestanden in een valse ("fake") directory installeren, een package aanmaken (in overeenstemming met de inpaklijst) en deze package installeren op uw systeem (gewoonlijk onder /usr/local/). En het doet dit recursief voor alle dependencies van de port. Let gewoon op de "===> Verifying install for ..." en "===> Returning to build of ..." lijnen in de bovenstaande uitvoer, die het aflopen van de "dependency tree" aangeven.

Indien een vorige versie van de toepassing die u wil installeren, reeds ge´nstalleerd was op uw systeem, kan u make update gebruiken in plaats van make install. Dit zal pkg_add(1) aanroepen met de -r vlag.

Opmerking: Het bouwen van grote toepassingen zal veel systeemmiddelen vergen. Goede voorbeelden zijn compilers zoals GCC 4.0 of de Java 2 Software Development Kit. Indien u "out of memory" of gelijkaardige fouten krijgt bij het bouwen van zulke ports, heeft dit gewoonlijk ÚÚn van deze twee redenen:

15.3.6 - Opruimen na het bouwen

U wil waarschijnlijk de standaard werkdirectory van de port opruimen nadat u de package gebouwd en ge´nstalleerd hebt.
$ make clean
===>  Cleaning for rsnapshot-1.2.9
Bijkomend kan u ook de werkdirectories van alle dependencies van de port opruimen met deze make target:
$ make clean=depends
===>  Cleaning for rsync-2.6.9
===>  Cleaning for rsnapshot-1.2.9
Indien u de broncode distributieset(s) van de port wenst te verwijderen, zou u dit gebruiken:
$ make clean=dist
===>  Cleaning for rsnapshot-1.2.9
===>  Dist cleaning for rsnapshot-1.2.9
Wanneer u meerdere flavors van dezelfde port hebt gecompileerd, kan u de werkdirectories van al deze flavors ineens opruimen met
$ make clean=flavors
U kan de dingen ook opruimen naarmate ze gebouwd worden door een speciale variabele in te stellen. Werkdirectories zullen automatisch verwijderd worden nadat packages zijn aangemaakt:
$ make package BULK=Yes

15.3.7 - Verwijderen van de package van een port

Het is heel gemakkelijk om een port te verwijderen:
$ make uninstall
===> Deinstalling for rsnapshot-1.2.9
rsnapshot-1.2.9: complete
Clean shared items: complete
Dit zal pkg_delete(1) aanroepen om de overeenstemmende package van uw systeem te verwijderen. Indien gewenst kan u ook de package van een port verwijderen en herinstalleren door gebruik van
$ make reinstall
===>  Cleaning for rsnapshot-1.2.9
/usr/sbin/pkg_delete rsnapshot-1.2.9
rsnapshot-1.2.9: complete
Clean shared items: complete
===>  Installing rsnapshot-1.2.9 from /usr/ports/packages/i386/all/rsnapshot-1.2.9.tgz
rsnapshot-1.2.9: complete
Indien u de packages die u net gebouwd hebt, kwijt wil, kan dat als volgt:
$ make clean=packages
===>  Cleaning for rsnapshot-1.2.9
rm -f /usr/ports/packages/i386/all/rsnapshot-1.2.9.tgz

15.3.8 - Gebruik van flavors en subpackages

Lees alstublieft de ports(7) manual pagina, die een goed overzicht geeft van dit onderwerp. Er zijn twee mechanismen om het verpakken van software te regelen volgens verschillende noden.

Het eerste mechanisme heet flavors. Een flavor geeft gewoonlijk een bepaalde verzameling compilatie-opties aan. Sommige toepassingen hebben bijvoorbeeld een "no_x11" flavor die gebruikt kan worden op systemen zonder X. Sommige shells hebben een "static" flavor, die een statisch gelinkte versie zal bouwen. Er zijn ports die verschillende flavors hebben om ze te bouwen met verschillende grafische toolkits. Andere voorbeelden zijn: ondersteuning voor verschillende databankformaten, verschillende netwerkopties (SSL, IPv6, ...), verschillende papiergroottes, enz.

Samenvatting: Heel waarschijnlijk zal u flavors gebruiken wanneer een package niet beschikbaar gemaakt werd voor de flavor die u zoekt. In dit geval zal u de gewenste flavor specificeren en zelf de port bouwen.

De meeste port flavors zullen hun eigen werkdirectory hebben tijdens het bouwen en elke flavor zal gebundeld worden in een package met overeenstemmende naam om verwarring te vermijden. Om de verschillende flavors van een bepaalde port te zien, kan u in zijn subdirectory gaan staan en dit uitvoeren:

$ make show=FLAVORS
U kijkt best ook naar de DESCR bestanden van de port, aangezien die de beschikbare flavors verder toelichten.

Het tweede mechanisme heet subpackages. Een porter kan beslissen om subpackages aan te maken voor verschillende onderdelen van dezelfde toepassing, indien ze logisch gescheiden kunnen worden. U zal vaak subpackages zien voor het clientgedeelte en het servergedeelte van een programma. Soms wordt uitgebreide documentatie gebundeld in een afzonderlijke subpackage omdat ze nogal veel schijfruimte inneemt. Extra functionaliteit die zware dependencies met zich meebrengt zal vaak afzonderlijk verpakt worden. De porter zal ook beslissen welke subpackage de hoofdpackage is die standaard zal ge´nstalleerd worden. Andere voorbeelden zijn: uitgebreide testpakketten die bij de software zitten, afzonderlijke modules met ondersteuning voor verschillende dingen, enz.

Samenvatting: Sommige ports worden in verschillende packages verdeeld. make install zal alleen de hoofdpackage installeren.

Om de verschillende packages te tonen die gebouwd worden door een port, gebruikt u

$ make show=PKGNAMES

make install zal slechts de eerste subpackage installeren. Om ze allemaal te installeren, gebruikt u

$ make install-all

Om de verschillende subpackages op te sommen die beschikbaar zijn voor een port, gebruikt u

$ make show=MULTI_PACKAGES
Het is mogelijk om te selecteren welke subpackage(s) ge´nstalleerd moeten worden van binnen de ports tree. Na enkele tests zal deze procedure gewoon pkg_add(1) aanroepen om de gewenste subpackage(s) te installeren.
$ env SUBPACKAGE="-server" make install

Opmerking: Het subpackages mechanisme behandelt alleen packages, het wijzigt geen configuratie-opties vˇˇr het bouwen van de port. Voor dat doel moet u flavors gebruiken.

15.3.9 - Meerdere ports bouwen met dpb

Als u meer dan ÚÚn of twee ports tegelijk wilt bouwen, dan kunt u een hulpmiddel uit /usr/ports/infrastructure/bin gebruiken - dpb(1). dpb(1) neemt een lijst van ports om te bouwen en bouwt ze automatisch in de optimale volgorde en maakt daarbij zo veel mogelijk gebruik van parallellisme. Het kan ook meerdere machines gebruiken voor het bouwen. Het produceert gedetaileerde logbestanden van het bouw-proces om problemen op te lossen, standaard in /usr/ports/log.
/usr/ports/infrastructure/bin/dpb -P ~/localports
leest een lijst van pkgpaths (pkgpath(7)) in ~/localports en bouwt alle packages. Het kan de de packages ook installeren nadat ze zijn gebouwd. ~/localports kan er ongeveer zo uitzien:
net/cvsync
www/mozilla-firefox
net/rsync
net/nfsen
textproc/mupdf
misc/magicpoint
lang/sbcl
editors/emacs23
Als u op de commandoregel of via -P of -I geen lijst van ports opgeeft om te bouwen, dan zal dpb(1) alle ports in de ports tree bouwen.

15.3.10 - Beveiligingsupdates

Wanneer ernstige fouten of beveiligingslekken ontdekt worden in externe software, worden ze hersteld in de -stable branch van de ports tree. In tegenstelling tot het basis-OS geldt dat de levenscyclus 1 release is: alleen -current en de laatste release worden geŘpdatet, zoals uitgelegd in FAQ 5 - OpenBSD's Flavors.

Dit betekent dat al wat u moet doen is ervoor te zorgen dat u een checkout doet van de juiste branch van de ports tree, en dan de gewenste software er uit te bouwen. U kunt uw tree up-to-date houden met CVS en bijkomend inschrijven op de ports-security mailinglijst om beveiligingsaankondigingen i.v.m. software in de ports tree te ontvangen.

Natuurlijk bereiken beveiligingsupdates de -current ports tree alvorens ze opgenomen worden in de -stable branch.

15.3.11 - Handtekeningen voor packages

Handtekenignen zijn een goede manier om ervoor te zorgen dat packages legitiem zijn en niet corrupt.

Om te starten met het maken van gesigneerde packages moeten we eerst een root CA (certificate authority) certificaat en sleutel maken. In dit voorbeeld gebruiken we een geldigheid van 10 jaar.

# openssl req -x509 -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/pkgca.key -out /etc/ssl/pkgca.pem
Nu gaan we een build certificaat en sleutel maken die worden gebruikt om onze packages te signeren. In dit voorbeeld gebruiken we een geldigheid van 1 jaar. We maken ook een overeenkomstig Certificate Signing Request die door onze CA wordt gebruikt om het certificaat te signeren.
# openssl genrsa -out /etc/ssl/private/pkg.key 2048
# openssl req -new -key /etc/ssl/private/pkg.key -out /etc/ssl/private/pkg.csr
Laten we nu het certificaat signeren met het CA dat we in de eerste stap hebben gemaakt.
# openssl x509 -req -days 365 -in /etc/ssl/private/pkg.csr -CA /etc/ssl/pkgca.pem -CAkey /etc/ssl/private/pkgca.key -CAcreateserial -out /etc/ssl/pkg.crt
# rm /etc/ssl/private/pkg.csr

We voegen tenslotte de volgende regel toe aan /etc/mk.conf om standaard gesigneerde packages te maken.

PKG_CREATE=/usr/sbin/pkg_create -s x509 -s /etc/ssl/pkg.crt -s /etc/ssl/private/pkg.key

Bij het installeren van gesigneerde packages zult u een extra regel zien op het einde van de uitvoer om u te informeren over het aantal gesigneerde package(s) dat zojuist is ge´nstalleerd.

$ sudo pkg_add vte-0.24.3.tgz
vte-0.24.3: ok
Packages with signatures: 1

Als u bij het werken met gesigneerde packages in de problemen komt (bv. door een verlopen certificaat...), dan kunt u (her-)installatie en/of verwijdering forceren met ÚÚn van de volgende commando's (afhankelijk van wat u wilt bereiken):

$ sudo pkg_add -r -D installed PKGNAME
$ sudo pkg_add -D nosig PKGNAME
$ sudo pkg_delete -q PKGNAME

15.4 - FAQ

15.4.1 - Ik krijg allerlei gekke fouten. Ik lijk dit ports zootje maar niet aan de praat te krijgen.

Het is zeer waarschijnlijk dat u een systeem en ports tree gebruikt die niet synchroon zijn.

Excuseer?

Een andere veel voorkomende fout is een ontbrekende X11 installatie. Zelfs als de port die u probeert te bouwen niet rechtstreeks afhangt van X11, kan een subpackage ervan of kunnen de dependencies ervan X11 headers en libraries vereisen. Ports bouwen op systemen zonder X11 wordt niet ondersteund, dus als u er op aandringt om dit toch te doen, moet u zelf maar uitzoeken hoe het werkt. Voor heel wat ports zijn er echter "no_x11" ge-"flavor"de packages beschikbaar, die u kan installeren zonder dat u X11 nodig hebt op uw systeem.

15.4.2 - De laatste versie van mijn Top-Favoriete-Software is niet beschikbaar!

Als u een release of stable versie van OpenBSD gebruikt, zal u geen package updates vinden tot de volgende release, of totdat zich beveiligingsproblemen voordoen die een update van de port in de -stable branch en van de overeenstemmende package rechtvaardigen.

WAARSCHUWING: Meng GEEN versies van Ports en OpenBSD!

Dit toch doen zal u vroeg of laat (waarschijnlijk zelfs erg vroeg) hoofdpijn bezorgen wanneer u allerlei fouten probeert op te lossen!

Maar hey, ik ben hier helemaal -current!

De ports verzameling is een vrijwilligersproject. Soms heeft het project gewoon niet de mankracht wat betreft ontwikkelaars om alles up-to-date te houden. Ontwikkelaars pikken eigenlijk gewoon op wat ze interessant vinden en kunnen testen in hun omgeving. Sommige individuele ports kunnen hierom achter lopen op de hoofdversies. Belangrijker, niet updaten naar de laatste versie is vaak een bewuste beslissing. De nieuwe versie kan problemen hebben die de maintainer probeert op te lossen, of die de toepassing gewoon slechter gemaakt hebben dan de oude versie. OpenBSD kan ook andere doelstellingen hebben dan de ontwikkelaars in andere projecten, wat soms leidt tot functionaliteiten of implementatiekeuzes die niet wenselijk zijn vanuit het standpunt van OpenBSD ontwikkelaars. De update kan ook uitgesteld worden omdat de nieuwe versie niet beschouwd wordt als een cruciale update.

Als u echt een nieuwere versie van een port nodig hebt, kan u best aan de maintainer vragen de port te updaten (zie hieronder om te weten te komen wie de maintainer van de port is). Als u kunt helpen, des te beter.

15.4.3 - Waarom is er geen package voor mijn Top-Favoriete-Software?

Hier zijn verschillende mogelijke redenen voor:

15.4.4 - Waarom is er geen port van mijn Top-Favoriete-Software?

De ports verzameling is een vrijwilligersproject. Actieve port-ontwikkeling gebeurt door een beperkt aantal mensen, in hun vrije tijd. Deze mensen maken gewoonlijk alleen nieuwe ports voor software die ze rechtstreeks gebruiken of waarin ze ge´nteresseerd zijn.

U kan helpen. Overweeg uw eigen port te creŰren. Er is hierover wat documentatie beschikbaar: het OpenBSD Porter's Handbook. Lees ze, en lees ze opnieuw. Vooral het gedeelte over het onderhouden van uw port. Probeer vervolgens een nieuwe port te maken, en test hem zorgvuldig en stap voor stap. Als hij uiteindelijk goed werkt voor u, dien hem dan in op de ports mailinglijst op ports@openbsd.org. Er is een goede kans dat u van andere mensen wat feedback en tests zal krijgen. Als het testen succesvol gebeurt, zal het in overweging genomen worden om uw port op te nemen in de ports tree.

15.4.5 - Waarom is mijn Top-Favoriete-Software geen onderdeel van het basissysteem?

Omdat OpenBSD bedoeld is om een klein alleenstaand UNIX-achtig besturingssysteem te zijn, moeten we een grens trekken wat betreft dingen opnemen. In het algemeen, opdat een toepassing wordt opgenomen in het basissysteem:

Verdere antwoorden op deze vraag vindt u ook in FAQ 1.

15.4.6 - Wat gebruik ik best: packages of ports?

In het algemeen wordt u ten zeerste aangeraden packages te gebruiken boven een toepassing te bouwen vanuit ports. Het OpenBSD ports team beschouwt packages als het doel van hun port-werk, niet de ports zelf.

Een complexe toepassing vanaf broncode bouwen is niet triviaal. Niet alleen moet de toepassing gecompileerd worden, maar de tools die gebruikt worden om ze te bouwen, moeten ook gebouwd worden. Jammer genoeg zijn OpenBSD, de tools en de toepassing allemaal bezig te evolueren, en vaak is het een uitdaging om alle stukken te laten samenwerken. Zodra alles werkt, kan een herziening in gelijk welk onderdeel de volgende dag er voor zorgen dat het niet meer werkt. Iedere zes maanden, wanneer een nieuwe uitgave van OpenBSD gemaakt wordt, wordt er moeite gedaan om het bouwen van elke port op elk platform te testen, maar tijdens de ontwikkelingscyclus is het waarschijnlijk dat er enkele ports zullen breken.

Bovenop het laten samenwerken van alle onderdelen, is er nog de kwestie van tijd en middelen die vereist zijn om bepaalde toepassingen vanaf broncode te bouwen. Toepassingen als producten van Mozilla of KDE kunnen uren tijd en enorme hoeveelheden schijfruimte en RAM/swap vergen om te bouwen. Waarom zoveel tijd en moeite besteden, wanneer programma's reeds gecompileerd zijn en klaar zitten op uw CD-ROM of FTP mirror, wachtend om gebruikt te worden?

Natuurlijk zijn er enkele goede redenen om in sommige gevallen toch ports te gebruiken en niet packages:

Voor de meeste mensen en de meeste toepassingen is het gebruik van packages echter een veel gemakkelijker, en zeker ook de aanbevolen manier om toepassingen toe te voegen aan OpenBSD.

15.4.7 - Hoe regel ik deze ports fijn voor maximale prestatie?

OpenBSD gaat over stabiliteit en veiligheid. Net zoals de GENERIC kernel de standaard en de enige ondersteunde kernel is, zorgt het ports team ervoor dat de ports werken en stabiel zijn. Als u allerlei compileropties wil inschakelen, doet u dat maar op eigen houtje. Stel alstublieft geen vragen op de mailinglijsten zoals waarom het niet werkt, wanneer u probeerde enkele verborgen knoppen in te schakelen om het sneller te laten werken. In het algemeen is al dit fijnregelen niet nodig voor meer dan 99% van de gebruikers, en is het heel waarschijnlijk compleet tijdverlies, voor u, de gebruiker, maar ook voor de ontwikkelaars die over uw "problemen" lezen wanneer er in werkelijkheid geen zijn.

15.4.8 - Ik diende enkele weken geleden een nieuwe port/een update in. Waarom wordt deze niet gecommitted?

Het ports team heeft erg beperkte middelen en er was geen committer die tijdig naar uw port/update kon kijken. Hoe frustrerend dit ook kan zijn, negeer dit feit gewoon. Zorg voor uw port, stuur updates en uiteindelijk regelt iemand het misschien wel. Het is nog gebeurd dat mensen plots wat vrije tijd hebben om te besteden aan het committen van ports of dat hun interesses verschuiven naar nieuwe gebieden en plots wordt uw oude indiening interessant, als ze herinnerd wordt.

15.5 - Problemen melden

Als u problemen hebt met een bestaande port, zend dan alstublieft een e-mail naar de maintainer van de port. Om te zien wie de maintainer van de port is, typt u bijvoorbeeld:
$ cd /usr/ports/archivers/unzip
$ make show=MAINTAINER

Anders, als er geen maintainer is, of als u hem/haar niet kan bereiken, zend dan een e-mail naar de OpenBSD ports mailinglijst, ports@openbsd.org. Gebruik alstublieft NIET de misc@openbsd.org mailinglijst voor vragen over ports.

Geef in elk geval alstublieft:

Voor ports die niet correct bouwen, is een volledig afschrift van het bouwen bijna altijd vereist. U kan hiervoor het portslogger script gebruiken, dat u terugvindt in /usr/ports/infrastructure/bin. Een voorbeeldgebruik van portslogger zou kunnen zijn:
$ mkdir ~/portslogs
$ cd /usr/ports/archivers/unzip
$ make clean install 2>&1 | /usr/ports/infrastructure/bin/portslogger \
           ~/portslogs
Hierna zou u in uw ~/portslogs directory van het bouwen een logbestand moeten hebben dat u naar de maintainer van de port kan sturen. Zorg er ook voor dat u geen speciale opties gebruikt bij het bouwen, bijvoorbeeld in /etc/mk.conf.

Anders kan u ook

15.6 - Ons helpen

Er zijn vele manieren waarop u kan helpen. Ze worden hieronder opgesomd, in toenemende volgorde van moeilijkheid.

Hardware donaties kunnen helpen bij het testen van ports op de verschillende platformen waar OpenBSD op draait.

Opmerking: Voor al het aanmaken van nieuwe ports en het daaropvolgende testen, of voor het testen van port updates, moet u een -current systeem draaien! In het algemeen is dit geen wenselijke omgeving door haar voortdurend evoluerende aard, dus ga alleen verder als u zeker bent dat u -current wil blijven volgen.

[FAQ Index] [Naar Sectie 14 - Inrichting van de Schijf]


[terug] www@openbsd.org
$OpenBSD: faq15.html,v 1.57 2013/05/02 06:05:50 ajacoutot Exp $