[BSD] freebsd build farm

Laszlo Nagy gandalf at shopzeus.com
2008. Jan. 14., H, 18:09:53 CET


Sziasztok!

Van itt jónéhány gép ami kb. azonos (32 bites celeron vagy P4, azonos 
6.2 kernellel). Van amelyiket sokáig használnak folyamatosan és 
általában probléma az ha elkezdem frissíteni a ports tree-t. Például 
használják a gnome 2.18-at és közben a gép frissít 2.20-ra.

A másik lehetőség hogy hétvégén csinálom, de akkor sem biztos hogy 
befejeződik 2 nap alatt (vannak lassabb gépek és sok a program pl. 
openoffice).

A következőt szeretném csinálni:

1. Minden gépen egyszerre frissítem a ports tree-t
2. Egy jó erős gépen lefordítok mindent, és megkérem arra hogy bináris 
csomagokat is csináljon. (Illetve majdnem mindent, fölteszem rá azokat a 
portokat amiket a legtöbb gépen használnak.) Közben az "éles" gépeket 
használják a régi csomagokkal.
3. A többi gépre bemásolom a bináris csomagokat és ELVILEG ezeken a 
gépeken a "portupgrade -aP" már alig fog valamit fordítani forrásból.

Megnéztem a dokumentációt (man ports) és valami ilyen make target-et 
találtam:


package Make a binary package for the port. The port will be
installed if it has not already been. The package is a
.tbz file that you can use to install the port on other
machines with pkg_add(1). If the directory specified by
PACKAGES does not exist, the package will be put into
the current directory. See PKGREPOSITORY and PKGFILE.

package-recursive
Like package, but makes a package for each depending
port as well.


Tehát a következő tehetem:

cd /usr/ports/x11/gnome2
make package-recursive

Erre képződni fog egy csomó bináris csomag.


Az első kérdés: nincs kedvem kézzel futtatni az összes make parancsot. 
Portupgrade segítségével hogyan készíthetek csomagokat? Tudom van egy -p 
kapcsolója:


-p
--package Build a package when each specified port is
installed or upgraded. If a package is upgraded
and its dependent packages are given from the com-
mand line (including the case where -r is speci-
fied), build packages for them as well.

de ez azt írja hogy a "dependent" portokhoz csak akkor csinál package-t 
ha meg lettek adva parancsorban, illetve -r kapcsolóval. Igen ám, de én 
-a kapcsolót szeretnék megadni. "portupgrade -ap" megfelelő lesz? (A 
doksi szerint nem, mert a -p nem vonatkozik a dependent packages-re 
abban az esetben ha -a kapcsolót használok.)

Második kérdés: ezeket a binárisokat hogyan használom föl a portupgrade 
segítségével a többi gépen? Van ugyanis neki egy -P kapcsolója:

-P
--use-packages Use packages instead of ports whenever available.
portupgrade searches the local directories listed
in PKG_PATH for each package to install or upgrade
the current installation with, and if none is
found, pkg_fetch(1) is invoked to fetch one from a
remote site. If it doesn't work either, the port
is used.

Ez majdnem jó, de én csak az első felét szeretném. Nevezetesen, ha 
PKG_PATH-ban megtalálja akkor használja azt. Ha nem találja, akkor azt 
akarom hogy pkg_fetch helyett fordítsa le forrásból. Ilyen akkor lehet 
ha valamelyik "éles" gépen van egy extra csomag amit a "fordító gép" nem 
fordított le. Ezeket forrásból szeretném. Hogyan csináljam?

Köszönöm,

Laci




További információk a(z) BSD levelezőlistáról