5.4. Het pakkettensysteem gebruiken
Terug | Hoofdstuk 5. Applicaties installeren: pakketten en ports | Volgende

## 5.4. Het pakkettensysteem gebruiken

Bijgedragen door Chern Lee.

Er zijn verschillende gereedschappen die gebruikt worden om pakketten op FreeBSD te beheren:

- Het gereedschap `sysinstall` kan op een draaiend systeem worden gebruikt om beschikbare en geïnstalleerde pakketten te installeren, te verwijderen, en weer te geven. Zie voor meer informatie Paragraaf 2.10.11, “Pakketten installeren”.

- De opdrachtregelgereedschappen om pakketten te beheren, welke het onderwerp van de rest van deze sectie zijn.

### 5.4.1. Pakketten installeren

Met pkg_add(1) kan een FreeBSD softwarepakket geïnstalleerd worden vanaf een lokaal bestand of vanaf een server op het netwerk.

Voorbeeld 5.1. Handmatig pakketten downloaden en lokaal installeren

    # ftp -a ftp2.FreeBSD.org
    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.
    ftp> cd /pub/FreeBSD/ports/packages/sysutils/
    250 CWD command successful.
    ftp> get lsof-4.56.4.tgz
    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)
    ftp> exit
    # pkg_add lsof-4.56.4.tgz

Als er lokaal geen bron is voor pakketten (zoals de FreeBSD CD-ROM-verzameling) dan is het waarschijnlijk makkelijker om de `-r` optie te gebruiken met 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.

    # pkg_add -r lsof

Het voorbeeld hierboven haalt het correcte pakket binnen en installeert het zonder dat de gebruiker iets hoeft te doen. Als u een alternatieve FreeBSD Pakkettenmirror wilt specificeren, in plaats van de hoofddistributiesite, dan moet u de omgevingsvariabele `PACKAGESITE` overeenkomstig instellen om de standaardinstellingen aan te passen. pkg_add(1) gebruikt fetch(3) om de bestanden binnen te halen, dat gebruik maakt van diverse omgevingsvariabelen zoals `FTP_PASSIVE_MODE`, `FTP_PROXY`, en `FTP_PASSWORD`. Mogelijk moeten ook éé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 fetch(3) staat de complete lijst. In het voorbeeld hierboven is gebruik gemaakt van `lsof` in plaats van `lsof-4.56.4`. Als het pakket wordt binnengehaald met behulp van de bovenstaande instellingen, dan moet het versienummer van het pakket niet gebruikt worden. pkg_add(1) haalt automatisch de laatste versie van de applicatie binnen.

### Opmerking:

pkg_add(1) downloadt de meest recente versie van een applicatie als FreeBSD-CURRENT of FreeBSD-STABLE. Als een -RELEASE versie wordt gebruikt, wordt het pakket dat bij die release hoort gebruikt. Het is mogelijk dit gedrag te veranderen door `PACKAGESITE` te wijzigen. Als u bijvoorbeeld FreeBSD 8.1-RELEASE draait, dan haalt pkg_add(1) standaard de pakketten uit `ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.1-release/Latest/`. Om pkg_add(1) de FreeBSD 8-STABLE pakketten te laten downloaden kan `PACKAGESITE` ingesteld worden op `ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/`.

Pakketbestanden worden gedistribueerd in de formaten `.tgz` en `.tbz`. Ze zijn te vinden op `ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/` of op de FreeBSD CD-ROM-distributie. Iedere CD-ROM in de FreeBSD 4-CD-ROM-verzameling (en de PowerPak, enzovoort) bevat pakketten in de map `/packages`. De opbouw van de pakketten is ongeveer gelijk aan die van `/usr/ports`. Iedere categorie heeft zijn eigen map en ieder pakket staat ook in de map `All`.

De mappenstructuur van het pakkettensysteem is gelijk aan die van het portssysteem. Samen vormen ze het pakket/portssysteem.

### 5.4.2. Pakketten beheren

pkg_info(1) is een hulpprogramma dat de diverse geïnstalleerde pakketten toont en beschrijft.

    # pkg_info
    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
    ...

pkg_version(1) is een hulpprogramma dat een samenvatting van de versie van alle geïnstalleerde pakketten geeft. Het vergelijkt de versie van het pakket met de huidige versie in de Portscollectie.

    # pkg_version
    cvsup                       =
    docbook                     =
    ...

De symbolen in de tweede kolom geven aan hoe de geïnstalleerde versie staat ten opzichte van de versie die beschikbaar is in de lokale Portscollectie.

Symbool | Betekenis
--- | ---
= | De versie van het geïnstalleerde pakket komt overeen met die in de lokale Portscollectie.
< | De geïnstalleerde versie is ouder dan die beschikbaar is in de ports.
> | De geïnstalleerde versie is nieuwer dan die in de lokale Portscollectie. De lokale Portscollectie is waarschijnlijk verouderd.
? | Het geïnstalleerde pakket kan niet gevonden worden in index van de Portscollectie. Dit kan bijvoorbeeld gebeuren als een geïnstalleerde port uit de Portscollectie wordt verwijderd of hernoemd.
* | Er zijn meerdere versies van het pakket.
! | Het geïnstalleerde pakket bestaat in de index maar om de een of andere reden was `pkg_version` niet in staat om het versienummer van het geïnstalleerde pakket met de overeenkomstige ingang in de index te vergelijken.

### 5.4.3. Pakketten verwijderen

Voor het verwijderen van een geïnstalleerd pakket wordt het hulpprogramma pkg_delete(1) gebruikt.

    # pkg_delete xchat-1.7.1

Merk op dat pkg_delete(1) de volledige naam en het volledige nummer van het pakket nodig heeft; het bovenstaande commando zou niet werken als `xchat` in plaats van `xchat-1.7.1` was gegeven. Het is echter eenvoudig om pkg_version(1) te gebruiken om de versie van het geïnstalleerde pakket te achterhalen. U zou ook eenvoudigweg een wildcard kunnen gebruiken:

    # pkg_delete xchat\*

In dit geval zullen alle pakketten waarvan de naam met `xchat` begint worden verwijderd.

### 5.4.4. Diversen

Alle informatie over pakketten wordt opgeslagen in de map `/var/db/pkg`. De lijst met geïnstalleerde bestanden en beschrijvingen van ieder pakket staat in de bestanden in deze map.

Terug | Omhoog | Volgende
5.3. Applicaties zoeken | Begin | 5.5. De Portscollectie gebruiken