orm@doc-tcpip.org

Erstellt: April 2003 - Letzte Modifikation: April 2006

[ Main | Local ]


Package Management und Ports

Notizen

Package Management

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.

Installation einer Package

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.

Umgang mit der Ports Collection

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.

Was ist installiert (Packages und Ports)

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 -c 

Lange 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

Löschen einer Applikation

pkg_delete

Wie aktuell ist meine Installation?

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.

Wie wird installiert?

 
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 "<"

Alle installierten Ports auf einen neuen Stand bringen

Dazu dient das portupgrade-Kommando:

 
portupgrade -anrR  wie portversion -l "<"
	    -l  zum 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


[ Main | Local ]

[ Allgemein | UNIX | AIX | TCP-IP | TCP | ROUTING | DNS | NTP | NFS | FreeBSD | Linux | SMTP | Tracing | GPS ]

Copyright 2001-2014 by Orm Hager - Es gilt die GPL
Feedback bitte an: Orm Hager (orm@doc-tcpip.org )