Podgotovka relizov FreeBSD v chasti programmnyh paketov storonnih razrabotchikov

  Steve Price

   <steve@FreeBSD.org>

   Izdanie: 43126

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

   2013-11-07 gabor.
   Annotaciya

   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.

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

   Soderzhanie

   1. Postroenie paketov iz Kollekcii Portov

   2. Razdelenie paketov

1. Postroenie paketov iz Kollekcii Portov

   Kollekciya portov FreeBSD predstavlyaet soboj sobranie bolee chem 24,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(R) 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(TM) 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.
