                          Process postroeniya paketov

  Gruppa podderzhki portov FreeBSD

   Izdanie: 43126

   Avtorskie prava (c) 2003-2006 Gruppa podderzhki portov FreeBSD

   FreeBSD `eto zaregistrirovannaya torgovaya marka FreeBSD Foundation.

   Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium i Xeon `eto
   torgovye marki ili zaregistrirovannye torgovye marki Intel Corporation ili
   ee dochernih kompanij v Soedinennyh SHtatah i drugih stranah.

   Sparc, Sparc64, i UltraSPARC `eto torgovye marki SPARC International, Inc
   v Soedinennyh SHtatah i drugih stranah. Produkty s torgovoj markoj SPARC
   osnovany na arhitekture, razrabotannoj Sun Microsystems, Inc.

   Mnogie iz oboznachenij, ispol'zuemye proizvoditelyami i prodavcami dlya
   oboznacheniya svoih produktov, zayavlyayutsya v kachestve torgovyh marok.
   Kogda takie oboznacheniya poyavlyayutsya v `etom dokumente, i Proektu
   FreeBSD izvestno o torgovoj marke, k oboznacheniyu dobavlyaetsya znak
   <<(TM)>> ili <<(R)>>.

   2013-11-07 gabor.

     ----------------------------------------------------------------------

   Soderzhanie

   1. Vvedenie

   2. Konfiguraciya mashin-klientov

   3. Podgotovka ogranichennoj sredy sborki

   4. Zapusk sborki

   5. Process sborki

   6. Preryvanie processa sborki

   7. Slezhenie za processom

   8. Sborka paketov dlya relizov

   9. Zagruzka paketov dlya razdachi

   10. `Eksperimental'naya sborka

1. Vvedenie

   Dlya togo, chtoby podgotovit' predkompilirovannye versii podderzhivaemyh
   prilozhenij dlya FreeBSD, na odnom iz <<Klasterov sborki paketov>>
   regulyarno proizvoditsya sborka polnogo dereva portov. V nastoyaschee
   vremya suschestvuet dva takih klastera: pointyhat.FreeBSD.org i
   dosirak.kr.FreeBSD.org.

   Bol'shaya chast' <<magii>> processa sborki sosredotochena v dereve
   katalogov /var/portbuild. Esli ne ogovarivaetsya inoe, vse puti ukazany
   otnositel'no `etogo kataloga. ${arch} ispol'zuetsya dlya ukazaniya na
   arhitekturu platformy sborki (i386(TM), alpha, Sparc64(R), ia64 ili
   amd64); ${branch} opisyvaet vetv' postroeniya (4, 5, 5-exp, 6, 6-exp i 7).

2. Konfiguraciya mashin-klientov

   Klienty arhitektur i386(TM), alpha, amd64 i dva iz Sparc64(R) klientov
   zagruzhayutsya po seti s pointyhat; prochie sparc64 klienty i mashiny dlya
   sborki ia64 zagruzhayutsya samostoyatel'no. Tak ili inache, vse oni v
   processe zagruzki podgotavlivayutsya k sborke paketov.

   V serii poslednih obnovlenij byla dobavlena podderzhka nesvyazannyh
   (disconnected) uzlov klastera. Nesvyazannyj uzel ne montiruet
   master-mashinu klastera po NFS, i mozhet, takim obrazom, byt' dostatochno
   udalen ot centra. Master-mashina kopiruet nuzhnye dannye (ierarhii portov,
   ishodnyh tekstov sistemy, arhivy sistemy, skripty i t.p.) pri pomoschi
   rsync na `etape nachal'noj konfiguracii uzlov. Zatem, katalog portbuild
   montiruetsya kak nullfs dlya sborok paketov.

   Psevdo-pol'zovatel' ports-${arch} mozhet vypolnit' komandu ssh(1) ot imeni
   root na lyubuyu klientskuyu mashinu arhitektury ${arch}.

   Skript scripts/allgohans ispol'zuetsya dlya vypolneniya komand na vseh
   klientah arhitektury ${arch}.

   Skript scripts/checkmachines otslezhivaet uroven' zagruzki uzlov klastera
   i raspredelyaet, kakoj iz uzlov budet stroit' ocherednoj port. `Etot
   skript ne slishkom umen i vremya ot vremeni umiraet. Luchshe vsego
   zapuskat' ego pri zagruzke osnovnoj mashiny klastera (pointyhat ili
   dosirak) v cikle while(1).

3. Podgotovka ogranichennoj sredy sborki

   Pakety sobirayutsya v ogranichennoj (chroot) srede, kotoraya
   razvorachivaetsya skriptom portbuild iz arhiva
   ${arch}/${branch}/tarballs/bindist.tar. `Etot arhiv sozdaetsya pri
   pomoschi skripta mkbindist, konfiguraciya kotorogo opisyvaetsya fajlom
   ${arch}/${branch}/mkbindist.conf.

   Skript dolzhen zapuskat'sya s pravami pol'zovatelya root i sleduyuschimi
   parametrami:

 /var/portbuild# scripts/mkbindist ${arch} ${branch}

   Pri ukazanii v fajle mkbindist.conf parametra ftp=1 s adresa
   ftp://${ftpserver}/${ftpurl}/${rel} budet zagruzhen predvaritel'no
   sobrannyj reliz. Esli ukazano ftp=0 i buildworld=1, skript mkbindist
   vypolnit makeworld dlya togo, chtoby sobrat' reliz na meste [XXX `Eta
   chast' v nastoyaschee vremya ne rabotaet].

   Esli oba parametra ravny nulyu (ftp=0 i buildworld=0), to mkbindist budet
   ispol'zovat' suschestvuyuschee na moment zapuska sostoyanie dereva
   ${worlddir} dlya sozdaniya bindist.tar. Na praktike `eto oznachaet, chto
   vy dolzhny predvaritel'no ustanovit' sistemu v ${worlddir}, chto obychno
   delaetsya pri pomoschi skripta makeworld:

 /var/portbuild# scripts/makeworld ${arch} ${branch} [-nocvs]

   `Eta komanda soberet sistemu na baze ishodnyh tekstov v dereve
   ${arch}/${branch}/src i ustanovit ee v ${worlddir}. Ishodnye teksty budut
   obnovleny, esli ne ukazan parametr -nocvs.

   Soderzhimoe arhiva bindist.tar budet raspakovano na kazhdom kliente v
   period zagruzki, a takzhe na starte kazhdogo prohoda skripta dopackages.

4. Zapusk sborki

   Dlya sborki paketov ispol'zuyutsya skripty scripts/dopackages*. Naibolee
   poleznymi yavlyayutsya:

     * dopackages.4 - sobiraet pakety dlya versii 4.X

     * dopackages.5 - sobiraet pakety dlya versii 5.X

     * dopackages.5-exp - proizvodit sborku vetvi dlya versii 5.X s
       `eksperimental'nymi izmeneniyami (vetv' 5-exp)

     * dopackages.6 - sobiraet pakety dlya versii 6.X

     * dopackages.6-exp - proizvodit sborku vetvi dlya versii 6.X s
       `eksperimental'nymi izmeneniyami (vetv' 6-exp)

     * dopackages.7 - sobiraet pakety dlya versii 7.X

   Vse oni vyzyvayut universal'nyj skript dopackages, i yavlyayutsya
   simvol'nymi ssylkami na dopackages.wrapper. Dlya sozdaniya skripta dlya
   sborki paketov novoj vetvi dostatochno sozdat' simvolicheskuyu ssylku
   dopackages.${branch}, ukazyvayuschuyu na dopackages.wrapper. Mogut byt'
   ukazany mnogochislennye parametry, naprimer:

 dopackages.6 ${arch} [-options]

   [-options] mozhet byt' proizvol'nym naborom iz sleduyuschih opcij:

     * -nofinish - Ne proizvodit' post-obrabotku po zavershenii sborki.
       Polezno, esli process sborki potrebuetsya restartovat'. V obychnyh
       situaciyah `etu opciyu sleduet ispol'zovat' vsegda.

     * -finish - Proizvesti post-obrabotku (i tol'ko: sobstvenno sborku ne
       proizvodit').

     * -restart - Restartovat' prervannyj (ili nezavershennyj, t.e.
       zapuschennyj bez flaga -finish) process sborki s samogo nachala. Pri
       `etom porty, popytka sborki kotoryh na predyduschem prohode
       zavershilas' neudachno, budut peresobrany.

     * -continue - Prodolzhit' prervannyj (ili nezavershennyj) process
       sborki. Porty, ne proshedshie sborku, ne peresobirayutsya.

     * -incremental - Sravnit' neobhodimye polya v tekuschem fajle INDEX s
       ego predyduschim sostoyaniem, udalit' pakety i zhurnaly ih sborki dlya
       obnovivshihsya portov i peresobrat' ih. `Etot klyuch pozvolyaet
       suschestvenno sokratit' vremya sborki, poskol'ku net neobhodimosti
       peresobirat' kazhdyj raz ne izmenivshiesya porty.

     * -cdrom - Tekuschaya sborka prednaznachena dlya pomescheniya na CD-ROM,
       po`etomu ishodnye arhivy i pakety portov, pomechennyh NO_CDROM dolzhny
       byt' udaleny pri post-obrabotke.

     * -nobuild - Proizvesti pervonachal'nuyu podgotovku, ne zapuskaya
       sobstvenno process sborki paketov.

     * -noindex - Ne perestraivat' fajl INDEX v hode preprocessinga.

     * -noduds - Ne perestraivat' fajl duds (spisok portov, kotorye ne budut
       stroit'sya, naprimer, pomechennye priznakami IGNORE, NO_PACKAGE i
       t.p.) pered processom sborki.

     * -trybroken - Pytat'sya sobrat' porty, pomechennye kak BROKEN (po
       umolchaniyu vyklyucheno, poskol'ku klaster arhitektury i386(TM)
       dovol'no bystr, i pri inkrementnoj sborke bol'she vremeni tratitsya na
       peresborku togo, chto vse ravno ne smozhet sobrat'sya. S drugoj
       storony, klastery drugih arhitektur dostatochno medlenny, tak chto
       pytat'sya sobirat' na nih porty s flagom BROKEN bylo by naprasnoj
       tratoj vremeni.

     * -nocvs - Ne vypolnyat' obnovlenie (cvs update) dereva ishodnyh tekstov
       (src) na `etape preprocessinga.

     * -noportscvs - Ne obnovlyat' (cvs update) derevo portov (ports) na
       `etape preprocessinga.

     * -nodoccvs - Ne obnovlyat' (cvs update) derevo dokumentacii (doc) v
       hode preprocessinga. (ustarevshaya opciya)

     * -norestr - Ne pytat'sya kompilirovat' porty, pomechennye kak
       RESTRICTED.

     * -plistcheck - Schitat' oshibkoj ostavlenie lishnih fajlov posle
       deinstallyacii porta.

     * -distfiles - Sobrat' arhivy ishodnyh fajlov (distfiles) dlya
       dal'nejshego ih perenosa na ftp-master. `Etu opciyu sleduet
       ispol'zovat' izredka, poskol'ku ona trebuet ochen' mnogo mesta.
       Ishodnye arhivy sleduet udalit' posle zagruzki ih na ftp-master.

     * -fetch-original - Zagruzhat' ishodnye arhivy s original'nyh sajtov,
       opredelennyh peremennymi MASTER_SITES, a ne s ftp-master.

   Ubedites', chto process sborki paketov dlya arhitektury ${arch}
   zapuskaetsya ot imeni pol'zovatelya ports-${arch}; v protivnom sluchae
   oshibki neizbezhny.

  Primechanie:

   Sborka paketov proizvoditsya v dva identichnyh prohoda. Inogda vremennye
   problemy, takie kak oshibki NFS ili nedostupnost' FTP-sajtov, mogut
   prervat' sborku. Dublirovanie popytok pozvolyaet obojti podobnye problemy.

   Prover'te, chtoby ports/Makefile ne ssylalsya na pustye podkatalogi. V
   osobennosti `eto vazhno dlya sborki vetvi -exp. Esli process sborki
   obnaruzhivaet pustoj katalog, obe fazy sborki vskore ostanovyatsya. Pri
   `etom v fajly ${arch}/${branch}/make.[0|1] budet zapisano soobschenie ob
   oshibke primerno takogo vida:

 don't know how to make dns-all(continuing)

   Dlya ispravleniya situacii prosto zakommentirujte ili udalite strochki
   SUBDIR, ukazyvayuschie na pustye podkatalogi. Posle `etogo vy mozhete
   perezapustit' sborku komandoj dopackages, dobaviv ej parametr -restart.

  Primechanie:

   Ta zhe problema voznikaet pri sozdanii fajla Makefile dlya novoj
   kategorii, ne soderzhaschego ni odnoj ssylki na podkatalogi (SUBDIR).
   `Eto, skoree vsego, oshibka, podlezhaschaya ispravleniyu.

5. Process sborki

   Polnyj process sborki bez kakih-libo klyuchej, nachinayuschihsya s -no,
   vypolnyaet sleduyuschuyu posledovatel'nost' operacij:

    1. Obnovlenie iz CVS-repozitoriya tekuschego dereva ports [*]

    2. Obnovlenie iz CVS-repozitoriya dereva src neobhodimoj vetvi [*]

    3. Proverka fajlov Makefile na otsutstvie strok SUBDIR [*]

    4. Sozdanie fajla duds, soderzhaschego spisok portov, kotorye ne nado
       pytat'sya sobirat' [*] [+]

    5. Generaciya novogo fajla INDEX [*] [+]

    6. Nachal'naya podgotovka uzlov, kotorye budut uchastvovat' v sborke [*]
       [+]

    7. Postroenie spiska portov ogranichennogo rasprostraneniya (restricted)
       [*] [+]

    8. Sborka paketov (faza 1) [++]

    9. Povtornaya ustanovka uzlov sborki [+]

   10. Sborka paketov (faza 2) [++]

   [*] Rezul'taty vypolneniya `etih shagov zapisyvayutsya v fajl
   ${arch}/${branch}/build.log, a takzhe v standartnyj vyvod dlya oshibok
   konsoli, s kotoroj zapuskalsya skript dopackages.

   [+] Pri neudachnom zavershenii lyubogo iz `etih shagov process
   prekraschaetsya.

   [++] Rezul'taty vypolneniya pishutsya v fajl ${arch}/${branch}/make.[0|1],
   gde make.0 sootvetstvuet pervoj, a make.1 vtoroj faze sborki. ZHurnaly
   sborki otdel'nyh portov zapisyvayutsya v fajly ${arch}/${branch}/logs, a
   zhurnaly portov, sobravshihsya neudachno, v ${arch}/${branch}/errors.

   Ranee iz repozitoriya izvlekalos' takzhe derevo dokumentacii; v
   nastoyaschij moment `eto schitaetsya nenuzhnym.

6. Preryvanie processa sborki

   Dlya preryvaniya processa sborki obychno dostatochno poslat' signal HUP
   processam dopackages* ili vyzvannym imi processam make. Processy,
   zapuschennye na uzlah sborki, zavershatsya samostoyatel'no v techenie
   neskol'kih minut (ih nalichie sleduet proveryat' komandoj ps x). Obychno
   dostatochno sleduyuschej komandy:

 % killall -HUP sh ssh make

   Udalite fajl ${arch}/lock pered tem, kak perezapustite sborku.

7. Slezhenie za processom

   Komanda scripts/stats ${branch} pokazyvaet kolichestvo sobrannyh na
   nastoyaschij moment paketov.

   Komanda cat /var/portbuild/*/loads/* pokazhet tekuschuyu zagruzku
   klientskih mashin i kolichestvo processov sborki, zapuschennyh na nih.

   Vypolnenie tail -f ${arch}/${branch}/build.log prodemonstriruet obschee
   sostoyanie processa sborki.

   V sluchae, esli port ne sobiraetsya, i iz logov ne ponyatny prichiny
   `etogo, vy mozhete sohranit' rabochij katalog sborki (WRKDIR) dlya
   posleduyuschego analiza. Dlya `etogo sozdajte fajl .keep v kataloge porta.
   Pri sleduyuschej sborke porta klasterom arhiv WRKDIR budet pomeschen v
   fajl ${arch}/${branch}/wrkdirs.

   Sledite za vyvodom komandy df(1). Esli fajlovaya sistema, soderzhaschaya
   /var/portbuild, perepolnitsya, budet Ochen' Ploho(TM).

8. Sborka paketov dlya relizov

   Pri sborke paketov dlya vklyucheniya v reliz mozhet potrebovat'sya ruchnoe
   obnovlenie ierarhij ports i src do nuzhnogo t`ega, a takzhe ispol'zovanie
   opcij -nocvs i -noportscvs.

   Dlya podgotovki komplekta paketov dlya pomescheniya na CD-ROM ispol'zujte
   parametr -cdrom pri zapuske dopackages.

   Esli na klastere dostatochno diskovogo prostranstva, mozhno primenit'
   klyuch -distfiles dlya vykachivaniya distributivnyh arhivov.

  Primechanie:

   Pervaya sborka dolzhna byt' proizvedena s parametrom -distfiles.

   Po zavershenii pervogo processa sborki perezapustite ego s parametrami
   -restart -distfiles -fetch-original, dlya togo chtoby vykachat'
   obnovlennye distributivy. Zatem, na `etape final'noj obrabotki, soberite
   spisok fajlov pri pomoschi komandy

 % cd ${arch}/${branch}
 % find distfiles > distfiles-${release}

   `Etot fajl obychno kopiruyut v katalog i386/${branch} glavnoj mashiny
   klastera.

   Dannaya procedura pomogaet chistit' komplekt distributivnyh arhivov,
   raspolagayuschijsya na ftp-master. Esli diskovoe prostranstvo
   zakanchivaetsya, mozhno sohranit' arhivy dlya svezhih relizov, a prochie -
   udalit'.

   Posle kopirovaniya distributivov (sm. nizhe) nado sozdat' okonchatel'nyj
   komplekt paketov dlya reliza. Dlya polnogo spokojstviya, zapustite skript
   ${arch}/${branch}/cdrom.sh vruchnuyu, chtoby byt' uverennym, chto vse
   pakety ogranichennogo rasprostraneniya i ih ishodnye arhivy udaleny. Zatem
   skopirujte katalog ${arch}/${branch}/packages v
   ${arch}/${branch}/packages-${release}. Posle togo, kak pakety perelozheny
   v nadezhnoe mesto, svyazhites' s gruppoj re@FreeBSD.org i soobschite im
   raspolozhenie final'nogo komplekta paketov.

   Pomnite o neobhodimosti koordinacii s gruppoj re@FreeBSD.org po povodu
   vremeni i statusa sborki paketov dlya relizov.

9. Zagruzka paketov dlya razdachi

   Posle zaversheniya sborki pakety i/ili ih ishodnye arhivy mogut byt'
   zagruzheny na ftp-master dlya razdachi po seti zerkal FTP. Esli sborka
   velas' s klyuchom -nofinish, ne zabud'te proizvesti post-obrabotku pri
   pomoschi komandy dopackages -finish (budut udaleny pakety, pomechennye kak
   RESTRICTED i NO_CDROM, a takzhe pakety, otsutstvuyuschie v fajle INDEX, iz
   fajla INDEX budut udaleny ssylki na ne sobravshiesya pakety, i, nakonec,
   budet sozdan fajl CHECKSUM.MD5 s kontrol'nymi summami sobrannyh paketov;
   krome togo, `eta faza peremestit ishodnye arhivy iz kataloga
   distfiles/.pbtmp v distfiles/, a takzhe udalit ishodnye arhivy dlya
   portov, pomechennyh kak RESTRICTED i NO_CDROM).

   Horoshej ideej yavlyaetsya zapustit' vruchnuyu skripty restricted.sh i/ili
   cdrom.sh posle zaversheniya raboty dopackages prosto dlya sobstvennogo
   spokojstviya. Skript restricted.sh zapuskaetsya pered kopirovaniem na
   ftp-master; zatem, pered podgotovkoj final'nogo nabora paketov dlya reliza
   vypolnite cdrom.sh.

   Pakety mozhno kopirovat' vo vremennuyu oblast' na ftp-master primerno
   takoj komandoj:

 # cd /var/portbuild/${arch}/${branch}
 # tar cfv - packages/ | ssh portmgr@ftp-master tar xfC - w/ports/${arch}/tmp/${branch}

   Zatem, na mashine ftp-master, ubedites', chto nabor paketov skopirovan
   korrektno, udalite staryj nabor (iz kataloga ~/w/ports/${arch}), i
   peremestite novyj na ego mesto.

  Primechanie:

   Nekotorye katalogi na ftp-master na samom dele yavlyayutsya simvol'nymi
   ssylkami. Ubedites', chto vy peremeschaete novyj nabor paketov v real'nyj
   katalog, a ne na mesto raspolozheniya odnoj iz ssylok.

   Dlya inkrementnyh sborok pakety dolzhny zagruzhat'sya posredstvom rsync.
   Tak my ne sozdaiom sil'noj zagruzki na zerkalah:

 # rsync -n -r -v -l -t -p --delete packages/ portmgr@ftp-master:w/ports/${arch}/${branch}/ | tee log

   Distributivnye arhivy kopiruyutsya pri pomoschi komandy rsync:

 # cd /var/portbuild/${arch}/${branch}
 # rsync -r -v -l -p -c -n distfiles/ portmgr@ftp-master:w/ports/distfiles/ | tee log

   VSEGDA dlya nachala ispol'zujte klyuch -n komandy rsync i proveryajte ee
   vyvod. Esli vse vyglyadit normal'no, perezapustite rsync bez opcii -n.

10. `Eksperimental'naya sborka

   Vremya ot vremeni dlya testirovaniya novyh vozmozhnostej ili ispravlenij
   obschej infrastruktury portov (bsd.port.mk), a takzhe dlya testirovaniya
   krupnyh obnovlenij, zatragivayuschih suschestvennuyu chast' paketov,
   provoditsya sborka s `eksperimental'nymi patchami. Tekuschej
   `eksperimental'noj vetkoj yavlyaetsya 6-exp v arhitekture i386(TM).

   V celom, `eksperimental'naya sborka proizvoditsya tak zhe, kak i
   obychnaya. Osnovnoe otlichie: pered zapuskom skripta dopackages nuzhno
   primenit' k derevu portov neobhodimye izmeneniya. Horoshej ideej budet
   sohranit' kopii vseh izmenyaemyh fajlov, a takzhe ih spisok. K spisku vy
   smozhete vernut'sya pered proizvedeniem okonchatel'nogo kommita.

   Dlya sozdaniya <<kontrol'nogo `ekzemplyara>> dlya sravneniya sleduet
   snachala proizvesti sborku toj vetvi arhitektury i386(TM), na kotoroj
   osnovana `eksperimental'naya vetv' (v nastoyaschee vremya `eto vetv' 6).
   Pered `eksperimental'noj sborkoj vygruzite derev'ya src i ports na moment
   proizvedeniya kontrol'noj sborki. V `etom sluchae vy mozhete byt' uvereny,
   chto sravnivaete yabloki s yablokami.

  Primechanie:

   Dva klastera sborki mogut proizvodit' kontrol'nuyu i `eksperimental'nuyu
   sborku odnovremenno. `Eto mozhet oschutimo s`ekonomit' obschee vremya
   sborki.

   Po zavershenii sborki sravnite rezul'taty kontrol'noj i `eksperimental'noj
   sborok primerno takoj komandoj (predpolagaetsya, chto kontrol'noj
   yavlyaetsya vetka 6, a `eksperimental'noj - 6-exp):

 % cd /var/portbuild/i386/6-exp/errors
 % find . -name \*.log\* | sort > /tmp/6-exp-errs
 % cd /var/portbuild/i386/6/errors
 % find . -name \*.log\* | sort > /tmp/6-errs

  Primechanie:

   Esli s momenta zaversheniya odnoj iz sborok proshlo dostatochno mnogo
   vremeni, zhurnaly sborki mogut byt' avtomaticheski arhivirovany bzip2. V
   `etom sluchae ispol'zujte sort | sed 's,\.bz2,,g'.

 % comm -3 /tmp/6-errs /tmp/6-exp-errs | less

   Rezul'tatom raboty poslednej komandy budet otchet, sostoyaschij iz dvuh
   stolbcov. V pervoj kolonke budut perechisleny porty, sborka kotoryh ne
   udalas' v kontrol'nom, no ne v `eksperimental'nom sluchae; vtoroj stolbec
   opisyvaet protivopolozhnuyu situaciyu. Prichiny, po kotorym port mozhet
   okazat'sya v pervom spiske, vklyuchayut:

     * Port byl ispravlen s momenta poslednego kontrol'nogo zapuska, ili
       obnovlen do bolee svezhej versii, kotoraya takzhe ne sobiraetsya (port
       s novoj versiej poyavitsya vo vtorom stolbce)

     * Sborka porta ispravlena patchami `eksperimental'noj versii

     * Port ne sobiraetsya `eksperimental'noj sborkoj iz-za oshibok v
       zavisimyh portah

   Vo vtorom stolbce port mozhet okazat'sya po sleduyuschim prichinam:

     * Port ne sobiraetsya s `eksperimental'nymi izmeneniyami [1]

     * Port byl obnovlen s momenta kontrol'noj sborki i stal nesobiraemym [2]

     * Port ne sobralsya po prichine vremennyh oshibok (nedostupnyj FTP sajt,
       oshibka vvoda-vyvoda na kliente i t.p.)

   Pered kommitom `eksperimental'nyh obnovlenij neobhodimo izuchit'
   soderzhimoe oboih stolbcov. CHtoby otlichit' situacii [1] i [2], mozhno
   peresobrat' sootvetstvuyuschie pakety v kontrol'noj vetke:

 % cd /var/portbuild/i386/6/ports

  Primechanie:

   Ne zabud'te obnovit' derevo portov do toj zhe daty, chto i derevo
   `eksperimental'noj sborki.

   Dlya podgotovki kontrol'noj vetvi ispol'zujte komandu:

 % /var/portbuild/scripts/dopackages.6 -noportscvs -nobuild -nocvs -nofinish

   Sborka dolzhna proizvodit'sya iz kataloga packages/All. Iznachal'no `etot
   katalog dolzhen byt' pust, za isklyucheniem simvol'noj ssylki Makefile.
   Esli `etoj ssylki net, sozdajte ee:

 % cd /var/portbuild/i386/6/packages/All
 % ln -sf ../../Makefile .
 % make -k -j<#> <spisok paketov dlya sborki>

  Primechanie:

   <#> opisyvaet uroven' parallelizma sborki. Obychno, `eto summa vesov
   klientskih mashin, ukazannyh v /var/portbuild/i386/mlist, esli u vas net
   prichin provodit' bolee tyazheluyu ili, naoborot, oblegchennuyu sborku.

   <spisok paketov dlya sborki> predstavlyaet soboj spisok imen paketov
   (vklyuchaya ih versii) v tom vide, kak oni predstavleny v fajle INDEX.
   Suffiks PKGSUFFIX (.tgz ili .tbz) yavlyaetsya neobyazatel'nym.

   Budut sobrany tol'ko ukazannye pakety, a takzhe ih zavisimye porty.

   Process sborki mozhno kontrolirovat' tak zhe, kak i standartnuyu sborku.
   Posle togo, kak vse oshibki ispravleny, vy mozhete proizvesti kommit
   komplekta ispravlenij. YAvlyaetsya horoshim tonom otpravit' pis'mo s temoj
   HEADS UP v spiski rassylki ports@FreeBSD.org i
   ports-developers@FreeBSD.org s informaciej o vnesennyh izmeneniyah.
   Kratkaya annotaciya izmenenij takzhe dolzhna byt' dobavlena v fajl
   /usr/ports/CHANGES.
