   Podgotovka relizov FreeBSD v chasti programmnyh paketov storonnih
                             razrabotchikov

  Steve Price

   <steve@FreeBSD.org>

   $FreeBSD: doc/ru_RU.KOI8-R/articles/releng-packages/article.sgml,v
   1.2 2006/03/22 17:20:49 marck 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.

   XFree86 `eto torgovaya marka XFree86 Project, 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)''.

   V `etom dokumente opisyvaetsya podhod, ispol'zuemyj gruppoj
   menedzherov portov FreeBSD dlya sozdaniya vysokokachestvennogo
   nabora paketov, prednaznachennogo dlya razmescheniya na nositelyah
   s oficial'nymi relizami FreeBSD. `Etot dokument nahoditsya v
   sostoyanii dorabotki, i postepenno on pokroet ves' process
   postroeniya celostnogo nabora paketov v ''Klastere Portov''
   proekta FreeBSD.org, opishet, kak nastroit' lyuboj drugoj nabor
   mashin v kachestve klastera portov, kak razdelit' pakety dlya
   razmescheniya na nositelyah s relizom i kak proverit' celostnost'
   nabora paketov.

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

1. Postroenie paketov iz Kollekcii Portov

   Kollekciya portov FreeBSD predstavlyaet soboj sobranie bolee chem
   23,000 programmnyh paketov storonnih razrabotchikov, dostupnyh
   dlya FreeBSD. Za podderzhku dereva portov, kotoroe mozhet
   ispol'zovat'sya dlya podgotovki binarnyh paketov, iduschih s
   nekotorym relizom FreeBSD, v rabochem sostoyanii, otvechaet Gruppa
   Menedzherov Dereva Portov FreeBSD <portmgr@FreeBSD.org>.

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

  1.1. Klaster portov

   Dlya podgotovki celostnogo nabora paketov storonnih razrabotchikov
   dlya relizov FreeBSD kazhdyj port stroit'sya v otdel'nom
   okruzhenii s izmenionnym kornem fajlovoj sistemy, s iznachal'no
   pustymi katalogami /usr/local i /usr/X11R6. Trebuemye zavisimosti
   ustanavlivayutsya v vide paketov do momenta nachala postroeniya.
   `Eto obespechivaet celostnost' processa postroeniya paketov.
   Zapuskaya postroenie paketa v chistom okruzhenii, my mozhem
   garantirovat', chto metadannye paketa (takie, kak trebuemye
   zavisimosti) korrektny. Takim obrazom, my nikogda ne sozdaiom
   pakety, kotorye, v zavisimosti ot ranee ustanovlennogo
   programmnogo obespecheniya, na odnih sistemah rabotat' mogut, a na
   drugih rabotat' ne budut.

   ''Klaster portov'' dlya arhitektury x86 v nastoyaschee vremya
   sostoit iz central'nogo uzla (Dual Pentium(R) III 733MHz) i 8
   podchinionnyh uzlov (Pentium III 800MHz), vypolnyayuschih real'noe
   postroenie paketov. V takoj konfiguracii polnoe postroenie paketov
   zanimaet bolee 24 chasov. `Eti mashiny razmescheny vmeste s
   ostal'nym oborudovaniem Proekta FreeBSD v uglu s oborudovaniem
   kompanii Yahoo u provajdera Exodus v kalifornijskom gorode
   Santa-Klara.

   ''Klaster portov'' dlya arhitektury Alpha sostoit iz 7 mashin PWS
   500A, predostavlennyh kompaniej Compaq, i oni takzhe raspolozheny
   vmeste s oborudovaniem kompanii Yahoo.

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

2. Razdelenie paketov

   Dlya FreeBSD 4.4 bylo sozdano bolee 4.1 gigabajt paketov. `Eto
   privelo k problemam dlya rasprostraneniya na CDROM, tak kak nam
   nuzhno zapisat' kak mozhno bol'she paketov bez neobhodimosti
   zastavlyat' pol'zovatelya vstavlyat' drugoj disk dlya poiska
   zavisimostej. Resheniem yavlyaetsya sozdanie ''klasterov'' blizkih
   paketov s pohozhimi zavisimostyami i gruppirovat' ih na otdel'nye
   diski. V `etom razdele opisyvaetsya programmnoe obespechenie i
   metodologiya, ispol'zovannaya pri sozdanii takih naborov paketov
   dlya oficial'nyh diskov FreeBSD s relizami.

   Skripty i ostal'nye fajly, neobhodimye dlya vypolneniya
   razdeleniya paketov, mozhno najti v dereve CVS v kataloge
   ports/Tools/scripts/release. Skopirujte `etot katalog na mashinu s
   svobodnym diskovym prostranstvom, dostatochnym dlya hraneniya 2
   ili 3 kopij nabora paketov, kotoryj vy hotite razdelit'.

   V `etom kataloge nahodyatsya sleduyuschie skripty:

   config

           V `etom fajle nahoditsya svobodnoe prostranstvo na kazhdom
           diske i to, razresheno li na `etih diskah razmeschat'
           pakety, distributivnye fajly ili oba tipa fajlov
           odnovremenno. Pervaya kolonka soderzhit nazvanie diska.
           Ono dolzhno byt' v vide disc[0-9a-z]. Na dannyj moment
           nastrojka vypolnena na 10 diskov (4 dlya reliza i 6 dlya
           instrumental'nogo nabora). Pri `etom podrazumevaetsya
           dopolnitel'nyj disk pod nazvaniem ''scratch'', kuda
           pomeschayutsya ostal'nye distributivnye fajly i pakety,
           esli oni bol'she nikuda ne pomeschayutsya. Vtoraya kolonka
           mozhet byt' 1 ili 0, gde 1 oznachaet vozmozhnost'
           razmescheniya na `etom diske paketov. Tret'ya kolonka
           rabotaet tak zhe, no kontroliruet razmeschenie na `etom
           diske paketov. Poslednyaya kolonka otmechaet kolichestvo
           bajtov svobodnogo prostranstva na diske.

   doit.sh

           `Eto rabochaya loshadka. Kak tol'ko vse fajly budut na
           svoih mestah i vsio budet polnost'yu nastroeno, `etot
           skript upravlyaet processom razdeleniya paketov. Imejte v
           vidu, chto on interaktivnyj, tak chto vam nuzhno
           prismatrivat' za ego rabotoj. Podrobnosti o tom, chto
           delaet skript, budut dany pozzhe.

   checkdeps.pl

           Proveryaet nalichie vseh zavisimostej po fajlu INDEX i
           katalogu s paketami.

   oneshot.pl

           Zdes' proishodit osnovnoe volshebstvo (ya ispol'zuyu `eto
           slovo s nekotoroj natyazhkoj, tak kak bol'shej chast'yu
           vsio reshaetsya v lob). Imeya perechen' trebuemyh paketov
           dlya kazhdogo diska i nabor paketov/distributivnyh fajlov,
           `etot skript razmeschaet pakety ili distributivnye fajly
           po diskam vmeste so vsemi ih zavisimostyami.

   print-cdrom-packages.sh

           `Etot fajl yavlyaetsya kopiej
           src/release/scripts/print-cdrom-packages.sh iz reliza, nad
           kotorym vy rabotaete.

   scrubindex.pl

           `Etot skript udalyaet stroki iz fajla INDEX dlya
           otsutstvuyuschih paketov. On takzhe udalyaet zavisimosti
           XFree86(TM). ZAMECHANIE: vam nuzhno izmenit' znachenie
           peremennoj xdep, chtoby obespechit' pravil'nost' nomera
           versii.

   setup.sh

           `Eto vspomogatel'nyj skript, ispol'zuemyj mnoyu v klastere
           sborki paketov dlya polucheniya kopii dereva portov i
           sootvetstvuyuschego nabora paketov/distributivnyh fajlov.

   Vot kontrol'nyj spisok togo, chto vam nuzhno budet proverit' ili
   nastroit' pered tem, kak prodolzhit'.

    1. Otredaktirujte config, otmetiv kolichestvo imeyuschihsya u vas
       diskov, ih razmery i sobiraetes' li vy razmeschat' na nih
       pakety, distributivnye fajly, oba tipa fajlov ili nichego iz
       nih.

    2. Prover'te, chto vy udalili katalog gen, kotoryj mog ostat'sya
       ot predyduschih rabot. `Etot katalog soderzhit rabochie fajly,
       kotorye budut aktual'ny tol'ko dlya tekuschih dejstvij.

    3. Pri pervom vashem progone luchshe vsego izbezhat' kopirovaniya
       paketov i distributivnyh fajlov. `Eto sohranit kak vremya, tak
       i diskovoe prostranstvo, poka vy smozhete prodelat' paru
       probnyh zapuskov, chtoby udostoverit'sya v tom, chto vsio
       pomeschaetsya, i tak dalee. V fajle oneshot.pl zadajte
       peremennuyu fake v znachenie 1 i vmesto real'nogo kopirovaniya
       fajlov on budet tol'ko vypolnyat' nad nimi komandu touch(1).
       Obyazatel'no vyklyuchite `etu vozmozhnost' ili ustanovite
       peremennuyu fake v znachenie 0 pered tem, kak peredavat'
       poluchayuschiesya diski tomu, kto budet tirazhirovat' diski, v
       protivnom sluchae katalogi budut zapolneny fajlami s nulevymi
       razmerami.

    4. Ubedites', chto u vas est' poslednyaya kopiya fajla
       print-cdrom-packages.sh, i on vzyat iz sootvetstvuyuschego
       reliza.

    5. Prover'te, chto zavisimost' XFree86 v fajle scrubindex.pl
       imeet korrektnyj nomer versii. Vam takzhe nuzhno budet
       proveryat', chto `eto znachenie pravil'no zadano v fajle
       doit.sh.

   Teper' vam nuzhno sdelat' kopiyu dereva portov, paketov i
   distributivnyh fajlov iz poslednego postroeniya klastera paketov.
   Posmotrite fajl setup.sh v kachestve rabochego primera, no zdes'
   opisano vsio neobhodimoe.

    1. Voz'mite kopiyu ports.tar.gz i raspakujte eio v katalog ports
       otdel'no ot fajla doit.sh i kataloga scripts.

    2. Udalite katalog packages/distfiles ili simvolicheskie ssylki
       na nego. V bento imeyutsya `eti simvolicheskie ssylki i vy
       budete poluchat' smeshannye rezul'taty, esli ne izbavites' ot
       nih pered obrabotkoj.

    3. Sozdajte novyj katalog ports/packages i skopirujte nabor
       paketov iz klastera postroeniya paketov.

    4. Sozdajte novyj katalog ports/distfiles i skopirujte
       distributivnye fajly iz klastera postroeniya paketov.
       ZAMECHANIE: esli vy ne hotite kopirovat' distributivnye fajly,
       prosto sozdajte katalog i ostav'te ego pustym. `Etot katalog
       dolzhen suschestvovat', dazhe esli v niom nichego net.

   Teper' my okonchatel'no gotovy k vesiolomu zanyatiyu po real'nomu
   razdeleniyu paketov. Zapuskajte obrabotku komandoj ./doit.sh. Vot
   chto ona delaet pri pervom eio zapuske.

    1. Sozdaiot spisok ogranichennyh k rasprostraneniyu (kotorye ne
       mogut nahodit'sya na glavnom FTP-servere) portov.

    2. Zaprosit u vas, nuzhno li udalenie ogranichennyh k
       rasprostraneniyu portov. V bol'shinstve sluchaev zdes' vam
       luchshe otvetit' (y)es.

    3. Sozdaiot perechen' paketov/distributivnyh fajlov, kotorye ne
       mogut byt' razmescheny na diskah.

    4. Zaprosit u vas razreshenie na udalenie paketov/distributivnyh
       fajlov, kotorye ne razmeschayutsya na kompakt-disk. V
       bol'shinstve sluchaev zdes' luchshe otvetit' (y)es.

    5. Kopiruet fajl INDEX iz kataloga ports v katalog gen. Pri `etom
       ona udalyaet strochki portov, dlya kotoryh net paketov. Takzhe
       proveryaetsya nalichie vseh trebuemyh zavisimyh paketov.

    6. Sozdaiot spisok paketov, trebuemyh dlya razmescheniya na
       kazhdom diske.

    7. Delaet zapros na sozdanie diskov. Posle generacii kazhdogo
       diska ona proveryaet otsutstvuyuschie zavisimosti, vychischaet
       fajl INDEX i sozdaiot fajl CHECKSUM.MD5.

    8. Vypolnyaet proverku togo, chto na kazhdom diske razmescheny
       trebuemye pakety i vydaiot obschuyu statistiku po razmeram
       kazhdogo diska.

   Esli vam poveziot s pervogo raza, to vse trebuemye pakety budut
   postroeny i razmescheny po diskam. Vsio, chto vam nuzhno sdelat',
   `eto zadat' v kachestve znacheniya peremennoj fake v 0 v fajle
   oneshot.pl i perezapustit' ./doit.sh. Pri vtorom i posleduyuschem
   zapuskah shagi 1-5 vyshe budut propuskat'sya. Esli vy hotite
   vypolnit' lyubye iz teh shagov povtorno, obratites' k doit.sh,
   chtoby vyyasnit', kakie fajly neobhodimo udalit' dlya togo, chtoby
   ne propustit' `eti `etapy. Esli vy hotite povtorit' vse `eti
   shagi, to prosche vsego vypolnit' rm -rf gen.

   K momentu uspeshnogo zaversheniya pakety i distributivnye fajly
   budut raspolagat'sya v katalogah disc*, a ostavshiesya fajly budut
   nahodit'sya v kataloge scratch.

   CHto delat', esli chto-to proishodit ne tak? Vot nekotorye
   rasprostranionnye problem i ih resheniya.

   Otsutstvie trebuemyh paketov

           Takoe chasto sluchaetsya. Vam nuzhno podozhdat'
           poyavleniya novogo nabora paketov, gde budut postroeny
           otsutstvuyuschie pakety, libo poprosit' kogo-nibud'
           perezapustit' postroenie paketov dlya vas. Ne pytajtes'
           stroit' otsutstvuyuschie pakety na sobstvennoj mashine i
           dobavlyat' ih. Hotya vam mozhet udastsya obojtis' `etim,
           esli vy ochen' ostorozhny, vse zhe v bol'shinstve sluchaev
           vy, skoree vsego, propustite kakuyu-to malen'kuyu detal' i
           prostoj process dobavleniya odnogo paketa mozhet privesti
           k neozhidannoj nerabotosposobnosti soten ostal'nyh.

   Trebuemye pakety ne pomeschayutsya

           Takoe tozhe sluchaetsya, i `eto otnositel'no legko
           ispravit'. Prosto otredaktirujte fajl
           print-cdrom-packages.sh, perenosya pakety, poka oni ne
           stanut pomeschat'sya. Da, `eto iteracionnyj process, i
           `eto odna iz prichin, po kotoroj vy dolzhny vklyuchat'
           fake v oneshot.pl, poka ne poluchite to, chto hotite.
           Perezapustite ./doit.sh posle togo, kak vnesli svoi
           izmeneniya.

   Trebuemye pakety raspolagayutsya ne na tom (ili ni na kakom) diske

           Obychno `eto oznachaet, chto vy ne dobavili ih v fajl
           print-cdrom-packages.sh ili razmestili ih ne na tom diske.
           `Etot skript yavlyaetsya svyatym istochnikom, po kotoromu
           v celom opredelyaetsya, gde dolzhen nahodit'sya paket.
           Esli vy hotite obespechit' raspolozhenie paketa na
           opredelionnom diske, to `eto edinstvennoe mesto,
           garantiruyuschee trebuemoe vam raspolozhenie.

   Esli vy okonchatel'no zaputalis', i ne mozhete ponyat', pochemu
   vsio rabotaet nepravil'no i kak `eto ispravit', to poshlite pis'mo
   v adres Steve Price <steve@FreeBSD.org> s pros'boj o pomoschi.

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

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