orm@doc-tcpip.org | Erstellt: April 2003 - Letzte Modifikation: April 2006 |
Die Ports Collection ist für jedes portierte Programm eine Beschreibung, wo die Sourcen zu finden sind und wie zu Kompilieren ist.
Liegt unter /usr/ports
Aus der Ports Collection wird Software installiert. Man kann auch, statt auf der Maschine, in eine Package installieren, die man dann auf einer Maschine direkt implementieren kann.
Vorgehen zur Einrichtung eines Package Repository:
mkdir /usr/ports/packages
Erstellen der gewünschten Packages:
cd /usr/ports/was_ich_will/xxxxxx make package
So für alle gewünschte Software. Diese Software wird bei diesem Vorgehen zugleich auch auf der lokalen Maschine installiert. Wenn das nicht sein soll, muß die Software nachdem das Package generiert worden ist, mit make deinstall entfernt werden.
Das Verzeichnis /usr/ports/packages kann dann per NFS verteilt werden.
Es ist auch möglich, Packages direkt von einem der FTP Server zu ziehen. Das macht das pkg_add Kommado automatisch, wenn man den Schaltet -r und den Namen der Software angibt.
pkg_add /mnt/xxxxx/package-name.tgz
pkg_add -r programm-name
Packages finden sich auf den FTP-Servern: ftp:/ftp.de.freebsd.org/pub/FreeBSD/ports/packages Der Aufbau ist analog der Ports-Collection, also dem Baum aller Ports.
Hat es funktioniert? pkg_info | grep package
Packages installieren nicht die entsprechenden Dependencies!! Das muß man selbst tun.
Alle Information zu installierten Ports liegt in /var/db/pkg
Anzeige der Dependencies:
cd /usr/ports/astro/xearth make pretty-print-build-depends-list This port requires package(s) "XFree86-libraries-4.3.0_6 expat-1.95.6_1 fontconfig-2.2.90_3 freetype2-2.1.4_1 imake-4.3.0_1 pkgconfig-0.15.0" to build.
Suchen nach geeigneten Ports:
Mit make index wird ein aktueller Index aller Ports
aufgebaut (dauert).
cd /usr/ports make search key=gps | more Port: gpsdrive-1.33_1 Path: /usr/ports/astro/gpsdrive Info: A GPS navigation system Maint: molter@gufi.org Index: astro B-deps: XFree86-libraries-4.3.0_6 expat-1.95.6_1 fontconfig-2.2.90_3 freetype2-2.1.4_1 gdk-pixbuf-0.22.0 gettext-0.12.1 glib-1.2.10_10 gmake-3.80_1 gtk-1.2.10_10 imake-4.3.0_1 jpeg-6b_1 libgnugetopt-1.2 libiconv-1.9.1_1 libtool-1.3.5_1 pkgconfig-0.15.0 png-1.2.5_2 tiff-3.5.7_1 R-deps: XFree86-libraries-4.3.0_6 expat-1.95.6_1 fontconfig-2.2.90_3 freetype2-2.1.4_1 gdk-pixbuf-0.22.0 gettext-0.12.1 glib-1.2.10_10 gtk-1.2.10_10 imake-4.3.0_1 jpeg-6b_1 libgnugetopt-1.2 libiconv-1.9.1_1 pkgconfig-0.15.0 png-1.2.5_2 tiff-3.5.7_1 Port: gpsman-6.0.1 Path: /usr/ports/astro/gpsman Info: A Tcl/Tk-based GPS management utility Maint: david@catwhisker.org Index: astro tk83 B-deps: R-deps: XFree86-libraries-4.3.0_6 expat-1.95.6_1 fontconfig-2.2.90_3 freetype2-2.1.4_1 imake-4.3.0_1 pkgconfig-0.15.0 tcl-8.3.5_2 tk-8.3.5_2
B-deps sind zum bauen des Programmes nötig,
R-deps sind beim Lauf des Programmes nötig.
Man kann direkt nach einem Port suchen, wenn man den Namen kennt.
Das erfährt man mit dem pkg_info-Kommando.
pkg_info -ac ==> Für jeden Port eine Zeile Info. Oder direkt auf den Namen: pkg_info -cLange Version der Info: pkg_info -d Wenn man den Namen des Ports nicht genau weiss: pkg_info -xc xyzv Gibt eine einzeilige Information aller Applikationen die mit xyzv anfangen. Mit -D zeigt pkg_info Post-Installation Messages an: pkg_info -xD xyzv Anzeigen aller Files, die ein Port/package installiert: pkg_info -xL xyzv Zu welchem Paket gehört ein bestimmtes File? pkg_info -W filename Welche Applikationen benötigen dieses Programm? pkg_info -R Package_name (aus pkg_info) Welche Pakete benötigt dieses Paket? pkg_info -r Package_name Wieviel Platz braucht ein Port? pkg_info -as Wo finde ich den Port einer Software im Ports-Tree? pkg_info -o software
Kommando pkg_version. Zeigt alle installierten Applikationen.
= == up to date < == es existiert eine neuere Version > == der eigene Index ist wahrscheinlich ungültig. ? == ist nicht im Ports Index * == es existieren verschiedene Versionen Alle Applikation out of date: pkg_version -L "=" Alle Applikationen, die ein Update brauchen: pkg_version -l "<" pkg_version -v ist auch gut, etwas verboser. Auch portupgrade liefert diese Information: portversion -l "<" Zeigt alle Pakete, die Downgrade sind.
make install clean ==> das Working directory wird gelöscht, der Source Tarball bleibt in /usr/ports/distfile make install distclean ==> hier werden zusätzlich die Tarballs gelöscht. du /usr/ports | sort -rn | head
Ist portupgrade installiert:
portsclean -C ==> Säubert alle Working Directories portsclean -DD ==> Löscht alle Distfiles (Tarballs) ohne Referenzen portsclean -LPD ==> -D Distfiles -L Libraries -P Alle Packages
Portsupgrade wird über /usr/local/etc/pkgtools.conf definiert.
Man kann z.B. fremde Sprachen oder Programmgruppen ausschließen: IGNORE_CATEGORIES (Blöcke wie "astro" oder "irc")
Man muß dann die Port-Datenbank neu aufbauen: portsdb -Ufu (portsdb -Uu würde nur die Port-DB mit dem Ports Tree syncronisieren).
Man kann einzelne Ports mit einem Kompiler-Switch versehen:
MAKE_ARGS= { 'multimedia/ein_programm*' => 'WITH_GUI=1 WITH_SUPERACC=1', } (Das Sternchen erfaßt alle ein_programmXXX Namen, die 1 steht für "yes"). Sonst müßte man das von Hand angeben: portupgrade -rRm '-DWITH_GUI' 'WITH_SUPERACC' programm
Viele Nützliche Skripte: /usr/ports/Tools/scripts/ Zusammenfassung im README
Portscollection updaten:
cvsup - Editieren des cvs Supfiles - cvsup -g -L 2 ~/cvs-supfile
Alle Ports im Verzeichnis: /usr/ports/INDEX (Datum des Files ist der Zeitstempel der Port Collection)
Wird beim Update der Port-Datenbank generiert: portsdb -Uu
Anzeige aller Ports, die nicht aktuell sind: portversion -l "<"
Dazu dient das portupgrade-Kommando:
portupgrade -anrR wie portversion -l "<" -lzum mitloggen bei Problemen. portupgrade -a ==> Upgrade aller Downgrade Ports portupgrade -ai erneuert alle Ports, fragt vor jedem Port (-i). Da alles neu kompiliert wird, kann es dauern... besser mit -R baut auch alle Software neu, von der dieser Port abhängt. -r baut alle Applikationen, die von diesem Port abhängen. ==> portupgrade -arR -P es werden nur fertige Packages benutzt -F alle Files holen, aber nicht installieren. portupgrade -aFrR dann portupgrade -arR
Wenn man nicht alles aus den Ports neu kompilieren möchte, muß man Packages installieren. Dazu muß man das -P-Flag setzen.
Mit dem -F-Flag installiert man nichts, zieht aber alle Ports. Man kann so einen eigenen Installationsserver laden. pkgdb -F generiert Datenbank /var/db/pkg/pkgdb.db
Wenn es Inkonsistenzen gibt: pkgdb -fu
pkg_which
Zeigt, zu welchem Port ein File gehört. -o Origin Wo liegt der Port? -v Zeigt Applikationen und deren Package
[ Allgemein | UNIX | AIX | TCP-IP | TCP | ROUTING | DNS | NTP | NFS | FreeBSD | Linux | RPi | SMTP | Tracing | GPS | LW ]
Copyright 2001-2021 by Orm Hager - Es gilt die GPL