[OpenBSD]

De Ports & Packages collectie


Index


Motivatie

OpenBSD zelf is een vrij compleet systeem, maar er is nog steeds veel software dat men toegevoegd zou willen zien. Het probleem zit hem in waar de grens getrokken moet worden wat er inbegrepen wordt, naast de gebruikelijke problemen met licentie- en exportrestricties. Omdat OpenBSD een klein zelfstandig UNIX-achtig besturingssysteem moet zijn kunnen sommige dingen gewoon niet inbegrepen worden bij het systeem.

De ports & packages collectie ondergaat NIET dezelfde uitvoerige veiligheidsaudit die het OpenBSD basis systeem krijgt. 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.

De ports collectie, oorspronkelijk geleend van FreeBSD en significant herschreven, vult dit gat. Het idee is om voor alle software van een derde partij een Makefile te hebben dat bepaalt

Deze informatie wordt bewaard in een directory hierarchie onder de /usr/ports directory.

Packages zijn de binaire equivalenten van ports. Een gecompileerde port wordt een package dat eenvoudige geïnstalleerd en geregistreerd kan worden in het systeem met pkg_add(1)

Packages lijken op gewone .tgz bundels, maar ze moeten altijd toegevoegd worden met pkg_add(1), omdat er extra informatie bij kan zitten waar alleen pkg_add(1) mee om kan gaan. Tip: u kunt packages en .tgz bundels van elkaar onderscheiden met pkg_info(1).

Packages Verkrijgen

Voor de meeste reguliere architecturen is er een grote verzameling van voorgecompileerde packages beschikbaar: Een package toevoegen is zo simpel als pkg_add pkgname. Wanneer u packages van een en dezelfde bron haalt (zoals een package repository), stel dan PKG_PATH in op de URL van de repository om dependencies op te halen.

Bijvoorbeeld, om de Gimp package (en alle benodigde afhankelijkheden) voor uitgave 4.7 op een i386-machine te installeren vanaf de ftp-site:

    # export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.7/packages/i386/
    # pkg_add gimp

Ports en Packages Updaten voor een Uitgave van OpenBSD

Er is een stable branch van de ports tree.

Om bijvoorbeeld de stable branch voor uitgave 4.7 op te halen:

    $ cd /usr/ports
    $ cvs -q -d anoncvs@some.anon.server:/cvs up -r OPENBSD_4_7 -Pd

Er worden ook bepaalde binaire packages beschikbaar gemaakt. Indien u veiligheidsaankondigingen wilt ontvangen kunt u zich inschrijven op de ports-security mailinglijst.

Namen van packages worden altijd gewijzigd bij het updaten van een package om elk risico op verwarring tussen een package van de uitgave en een package met een bugfix te vermijden.

Geinstalleerde Packages Onderhouden

De packages(7) man pagina bevat nuttige informatie over het onderhouden van geïnstalleerde packages, het oplossen van conflicten (bestanden die reeds bestaan) en het afhandelen van dependencies.

Vanaf OpenBSD 3.9 wordt een update mechanisme aangeboden door pkg_add(1). Om een package (en zijn dependencies) te updaten moet u PKG_PATH instellen op een URL van een repository die updates bevat en pkg_add -ui pkgname gebruiken.

Ports Gebruiken

Wanneer een bepaald package voor uw architectuur niet bestaat kunt u de port wellicht nog wel compileren. Daarnaast willen sommige gebruikers alles vanuit de broncode compileren om verschillende redenen.

U kunt de uitgave versie halen van de pub/OpenBSD/[versie] (waar [versie] het uitgavenummer is) directory op elk van de ftp mirror sites. De uitgaveversies zijn degenen die we uitbrengen op onze CDROM en zijn uitvoeriger getest dan de snapshots. Meer informatie is beschikbaar in de ports(7) man pagina.

Levensloop van de Ports Tree

De ports tree wordt, net als de rest van OpenBSD, constant gewijzigd.

De huidige ports tree mag niet gebruikt worden met de vorige uitgave. Dit is vanwege wijzigingen, meestal in de make-routine van de port, die afhankelijk zijn van code gebaseerd op de OpenBSD-current broncode tree.

De ports tree is een geheel. Het is niet te garanderen dat het updaten van een enkele directory werkt, omdat u door dependencies van een package geforceerd bent om een groot deel van de ports tree te hercompileren. Het wordt sterk aangeraden dat men ports-current niet volgt tenzij men bereid is verschillende conflicten op te lossen. Mailinglijsten zoals ports-changes@openbsd.org of tech@openbsd.org zullen waarschijnlijk van onschatbare waarde zijn.

U wordt aangeraden om op een productiemachine ports-stable te volgen: we zullen proberen om bij problemen de stable ports tree bij te houden en ook te voorzien in binaire updates.

Merk op dat het verdwijnen van distfiles geen kwaad kan, aangezien ftp.openbsd.org de complete repository bevat. Zelfs veranderde checksums zijn geen probleem: u kunt het commando

	make checksum REFETCH=true 
gebruiken om er zeker van te zijn dat u de juiste distfile ophaalt voor uw ports tree. Zie voor beschrijvingen van current en stable de OpenBSD flavors.

Er is een lijst beschikbaar met dagelijkse wijzigingen aan ports en ports-current.

De ports-current tree kan opgehaald worden via:

Ports en het X Window Systeem

Er zitten enkele speciale aanpassingen in de OpenBSD X configuratiebestanden waardoor de ports tree applicaties die gebaseerd zijn op imake onder /usr/local kan installeren.

Voorbeeld van het Gebruik van de Ports Tree

Stel u heeft het voor elkaar gekregen om een ports tree te verkrijgen en u wilt het archiefprogramma unzip compileren en installeren. U zou zoiets als dit kunnen doen:

    % cd /usr/ports/archivers/unzip
    % su
    # make install clean
    # exit
Makkelijk, niet ? Zeker gezien wat zich allemaal op de achtergrond afspeelde:

Met OpenBSD 3.0 maken bijna alle ports packages bij het installeren.

Wanneer ports gebouwd worden wordt de directory /usr/ports/distfiles gevuld met broncode van programma's en /usr/ports/packages wordt gevuld met binaire packages. Gebruikers met een langzame verbinding kunnen mirroring-ports(7) raadplegen voor een efficiënte manier om alle distfiles in een keer op te halen. In OpenBSD-current kunt u het script /usr/ports/infrastructure/fetch/clean-old gebruiken om oude distfiles te volgen. Merk op dat de OpenBSD-CD alleen de ports tree en bepaalde packages bevat. Als u de distfiles wilt hebben moet u ze op een andere manier verkrijgen.

Geavanceerd Gebruik van de Ports Tree

De ports tree heeft voor de geavanceerde gebruiker veel mogelijkheden wat het tot een waardevol programma maakt naast de standaardinstallaties. Geavanceerde gebruikers willen mogelijk de makefiles aanpassen (lees eerst de make(1) man pagina) of verschillende variabelen instellen vanaf de make command line of in /etc/mk.conf. Deze variabelen worden gedetailleerd beschreven in de bsd.port.mk(5) man pagina en in de documenten over het porten hieronder.

Nieuwe Ports Creëren

Als u geïnteresseerd bent in het uitbreiden van de OpenBSD ports tree moet u eerst porting.html lezen. Die pagina verwijst zowel naar de FreeBSD Porter's Handbook als het OpenBSD-specifieke beleid en hints.

Wanneer een Port Achterloopt op de Oorspronkelijke Versie

De ports collectie is een vrijwilligersproject. Soms heeft het project gewoon niet genoeg mankracht om alles up-to-date te houden. Ontwikkelaars pakken de dingen op die ze interessant vinden en in hun eigen omgeving kunnen testen. Uw schenkingen bepalen voor welke platformen de ports getest kunnen worden.

Sommige individuele ports kunnen hierdoor achterliggen op de mainstream-versie. De ports verzameling kan een versie van een programma bevatten uit Januari terwijl een nieuwe versie door haar ontwikkelaars in Mei drie maanden geleden is uitgebracht. Vaak is dit een bewuste keuze; de nieuwe versie kan problemen bevatten op OpenBSD die de onderhouder probeert op te lossen of de applicatie simpelweg slechter hebben gemaakt dan de oude versie: OpenBSD kan andere doelen hebben dan de ontwikkelaars van de mainstream-ontwikkelaars van andere projecten wat soms kan resulteren in functionaliteiten en keuzes wat betreft het ontwerp of de implementatie die vanuit het standpunt van OpenBSD onwenselijk zijn. De update kan ook uitgesteld zijn omdat de nieuwe versie niet wordt beschouwd als een cruciale update.

Als u echt een nieuwe versie van een port nodig heeft moet u de ONDERHOUDER van de port vragen om de port te updaten (kijk hieronder om uit te vinden wie de onderhouder is); als u hiervoor patches kunt opsturen, des te beter. Voor het maken van geschikte patches moet u de documentatie over het bouwen van ports raadplegen.

Problemen en Contactinformatie

Wanneer u problemen heeft met een bestaande port stuur dan alstublieft een e-mail naar de onderhouder van de port. Om de onderhouder van de port te zien, type bijvoorbeeld:

       % cd /usr/ports/archivers/unzip
       % make show=MAINTAINER
Als er geen onderhouder is of u kunt hem/haar niet bereiken stuur dan een mail naar de OpenBSD ports mailinglijst, ports@openbsd.org. Gebruik alstublieft niet de misc@openbsd.org mailinglijst voor vragen over ports. Verbeteringen zijn altijd welkom, maar geef in ieder geval de volgende informatie: Voor ports die niet correct compileren is bijna altijd een volledig verslag van de compilatie nodig. U kunt hiervoor het portslogger-script gebruiken, te vinden in /usr/ports/infrastructure/build. Een voorbeeld van het gebruik van portslogger zou er als volgt uit kunnen zien:
       % cd /usr/ports/archivers/unzip
       % su
       # mkdir -p ~/portslogs
       # make clean install 2>&1 | /usr/ports/infrastructure/build/portslogger \
               ~/portslogs
Hierna zou u een logbestand van de compilatie in uw ~/portslogs directory moeten hebben die u op kunt sturen naar de onderhouder van de port. Zorg ervoor dat u geen speciale opties tijdens de compilatie gebruikt, bijvoorbeeld in /etc/mk.conf.

Anderzijds kunt u


OpenBSD www@openbsd.org
$OpenBSD: ports.html,v 1.34 2010/06/12 19:51:10 ajacoutot Exp $