Ich habe mir angewöhnt mit
# cd /usr/src
# make update
sowohl den Source Tree, wie auch die Ports in einem Rutsch aktuell zu halten, bzw von /usr/ports aus mit make update die ports zu aktualisieren. Bisher lief das ganze mit cvsup, das ich natürlich immer noch für den Source Tree verwende, aber die Ports update ich inzwischen mit
# portsnap fetch update
das geht nach einem einmaligen
# portsnap fetch extract
deutlich schneller als mit cvsup. Außerdem erspart man sich damit ein make fetchindex.
Da ich auf mein make update trotzdem nicht verzichten will habe ich natürlich auch dafür einen weg gefunden.
Die auch im wiki propagierten Zeilen in der /etc/make.conf :
kann man so verändern das make update für die Ports portsnap verwendet :
Der Aufruf make update in /usr/src ruft einfach folgendes auf:
$SUP -h $SUPHOST $SUPFLAGS $SUPFILE
$SUP -h $SUPHOST $SUPFLAGS $PORTSUPFILE
Der Trick ist nun mit
SUP= eval
die Festlegung auf ein einzelnes Programm zu umgehen. Eval ist ein Shell-Builtin das eine Zeichenkette als Befehl auswertet, so als würde man sie per hand in der shell eintippen unt Enter drücken.
Da eval mit dem Parameter -h nichts anfangen kann darf SUPHOST nicht gesetzt sein. SUPFLAGS enthält standardmäßig "-g -L 2 -P -" womit eval natürlich auch nichts anfangen kann. Deshalb muss man die Variable zwar definieren, aber vollkommen leer lassen. Als SUPFILE braucht man dann nur noch den aufruf von cvsup und portsnap einzutragen.
# cd /usr/src
# make update
sowohl den Source Tree, wie auch die Ports in einem Rutsch aktuell zu halten, bzw von /usr/ports aus mit make update die ports zu aktualisieren. Bisher lief das ganze mit cvsup, das ich natürlich immer noch für den Source Tree verwende, aber die Ports update ich inzwischen mit
# portsnap fetch update
das geht nach einem einmaligen
# portsnap fetch extract
deutlich schneller als mit cvsup. Außerdem erspart man sich damit ein make fetchindex.
Da ich auf mein make update trotzdem nicht verzichten will habe ich natürlich auch dafür einen weg gefunden.
Die auch im wiki propagierten Zeilen in der /etc/make.conf :
Code:
SUP_UPDATE= yes
DOC_LANG= en_US.ISO8859-1
SUP= /usr/local/bin/cvsup
SUPFLAGS= -E -g -L 2 -z
SUPHOST= cvsup4.de.freebsd.org
SUPFILE= /usr/local/etc/cvsup/sources
PORTSSUPFILE= /usr/local/etc/cvsup/ports
#DOCSUPFILE= /usr/local/etc/cvsup/doc
Code:
SUP_UPDATE= yes
SUP= eval
SUPFLAGS=
SUPFILE= "/usr/local/bin/cvsup -h cvsup4.de.freebsd.org /usr/local/etc/cvsup/sources"
PORTSSUPFILE= "/usr/sbin/portsnap fetch update"
#DOCSUPFILE= "/usr/local/bin/cvsup -h cvsup4.de.freebsd.org /usr/local/etc/cvsup/doc"
Der Aufruf make update in /usr/src ruft einfach folgendes auf:
$SUP -h $SUPHOST $SUPFLAGS $SUPFILE
$SUP -h $SUPHOST $SUPFLAGS $PORTSUPFILE
Der Trick ist nun mit
SUP= eval
die Festlegung auf ein einzelnes Programm zu umgehen. Eval ist ein Shell-Builtin das eine Zeichenkette als Befehl auswertet, so als würde man sie per hand in der shell eintippen unt Enter drücken.
Da eval mit dem Parameter -h nichts anfangen kann darf SUPHOST nicht gesetzt sein. SUPFLAGS enthält standardmäßig "-g -L 2 -P -" womit eval natürlich auch nichts anfangen kann. Deshalb muss man die Variable zwar definieren, aber vollkommen leer lassen. Als SUPFILE braucht man dann nur noch den aufruf von cvsup und portsnap einzutragen.