                      Process postroeniya paketov

  Gruppa podderzhki portov FreeBSD

   Copyright (c) 2003, 2004, 2005, 2006 Gruppa podderzhki portov
   FreeBSD

   $FreeBSD: doc/ru_RU.KOI8-R/articles/portbuild/article.sgml,v 1.10
   2007/05/16 09:57:01 bvs Exp $

   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, SPARCEngine, 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)''.

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

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, alpha, amd64 i dva iz Sparc64 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 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.

     Zamechanie: 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.

     Zamechanie: 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.

     Zamechanie: 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 Gruppa
   Vypuska Relizov FreeBSD <re@FreeBSD.org> i soobschite im
   raspolozhenie final'nogo komplekta paketov.

   Pomnite o neobhodimosti koordinacii s gruppoj Gruppa Vypuska
   Relizov FreeBSD <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.

     Zamechanie: 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.

   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, 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.

     Zamechanie: 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

     Zamechanie: 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

     Zamechanie: 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>

     Zamechanie: <#> 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 or .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.

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

            `Etot, i drugie dokumenty, mogut byt' skachany s
                ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

  Po voprosam, svyazannym s FreeBSD, prochitajte dokumentaciyu prezhde
                 chem pisat' v <questions@FreeBSD.org>.
         Po voprosam, svyazannym s `etoj dokumentaciej, pishite
                           <doc@FreeBSD.org>.
  Po voprosam, svyazannym s russkim perevodom dokumentacii, pishite v
                    rassylku <frdp@FreeBSD.org.ua>.
  Informaciya po podpiske na `etu rassylku nahoditsya na sajte proekta
                               perevoda.
