[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