                           Podgotovka relizov FreeBSD

  Murray Stokely

       <murray@FreeBSD.org>

       http://www.FreeBSD.org/~murray/
     

   Izdanie: e5712d4822

   FreeBSD `eto zaregistrirovannaya torgovaya marka FreeBSD Foundation.

   CVSup `eto zaregistrirovannaya torgovaya marka John D. Polstra.

   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.

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

   2014-06-13 14:53:24 +0000 Taras Korenko.
   Annotaciya

   V `etoj stat'e opisyvaetsya podhod, kotoryj ispol'zuetsya gruppoj
   podgotovki relizov FreeBSD dlya sozdaniya kachestvennyh versij
   Operacionnoj Sistemy FreeBSD. V nej detal'no opisyvaetsya metodologiya,
   ispol'zuemaya dlya oficial'nyh relizov FreeBSD i rasskazyvaetsya ob
   instrumentah, dostupnyh tem, kto interesuetsya sozdaniem modificirovannyh
   relizov FreeBSD dlya tirazhirovaniya vnutri organizacii ili v
   kommercheskih celyah.

   [ Po razdelam / Odnim fajlom ]

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

   Soderzhanie

   1. Vvedenie

   2. Process vypuska reliza

   3. Postroenie relizov

   4. Rasprostranenie

   5. Rasshiryaemost'

   6. Uroki, izvlechionnye iz FreeBSD 4.4

   7. Napravleniya buduschih rabot

   8. Blagodarnosti

   9. Spravochnaya literatura

1. Vvedenie

   Razrabotka FreeBSD predstavlyaet soboj ves'ma otkrytyj process. FreeBSD
   sostavlyaetsya v rezul'tate obschih usilij tysyach lyudej po vsemu miru.
   Proekt FreeBSD predostavlyaet anonimnyj publichnyj dostup po protokolu
   CVS[1], tak chto lyuboj mozhet poluchit' dostup k zhurnalu izmenenij,
   raznicam (patcham) mezhdu vetkami razrabotki i drugim prodvinutym
   vozmozhnostyam, kotorye daiot strogoe upravlenie ishodnym kodom. `Eto
   sil'no pomogaet v privlechenii k FreeBSD vsio bol'shego kolichestva
   talantlivyh razrabotchikov. Odnako, i ya dumayu, chto vse so mnoj
   soglasyatsya, nastupit haos, esli dostup po zapisi budet otkryt vsem v
   Internet. Po`etomu tol'ko <<izbrannaya>> gruppa primerno iz 300 chelovek
   imeet dostup po zapisi v CVS-hranilische. `Eti kommittery[5] otvechayut v
   celom za razrabotku FreeBSD. Vybiraemaya iz samyh zasluzhennyh
   razrabotchikov gruppa pravleniya[6] obespechivaet nekotoryj uroven'
   upravleniya proektom.

   Temp razrabotok, veduschihsya vo FreeBSD, ostavlyaet malo vremeni na
   tschatel'nuyu dovodku sistemy do kachestva produktivnogo reliza. Dlya
   resheniya `etoj problemy razrabotka vediotsya v dva parallel'nyh potoka.
   Osnovnoj vetkoj razrabotki yavlyaetsya HEAD, ona zhe osnovnaya liniya
   nashego dereva CVS, izvestnaya takzhe pod imenem <<FreeBSD-CURRENT>> ili,
   dlya kratkosti, <<-CURRENT>>.

   Podderzhivaetsya i bolee stabil'naya vetka, izvestnaya kak
   <<FreeBSD-STABLE>> ili, dlya kratkosti, <<-STABLE>>. Obe vetki nahodyatsya
   v osnovnom CVS-hranilische v Kalifornii i repliciruyutsya pri pomoschi
   CVSup[2] na zerkala po vsemu miru. FreeBSD-CURRENT[7] yavlyaetsya
   <<perednim kraem>> rabot nad FreeBSD, cherez kotoryj popadayut vse
   izmeneniya v sisteme. FreeBSD-STABLE yavlyaetsya vetkoj razrabotki, iz
   kotoroj sozdayutsya osnovnye relizy. V `etu vetku izmeneniya popadayut
   raznymi putyami, i predpolagaetsya, chto snachala oni popali v
   FreeBSD-CURRENT, gde byli tschatel'no protestirovany soobschestvom nashih
   pol'zovatelej.

   V promezhutke mezhdu relizami mashinami Proekta FreeBSD, vydelennymi dlya
   postroeniya sistemy, ezhemesyachno avtomaticheski sobirayutsya sn`epshoty,
   kotorye dostupny dlya zakachki po adresu
   ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/. Obschedostupnost'
   sn`epshotov binarnyh relizov, a takzhe zhelanie soobschestva nashih
   pol'zovatelej otslezhivat' rabotu nad -STABLE pri pomoschi CVSup i <<make
   world>>[7] pomogaet podderzhat' ves'ma horoshee kachestvo FreeBSD-STABLE,
   dazhe do vypolneniya meropriyatij proverki kachestva, predvaryayuschih
   vypusk osnovnyh relizov.

   V processe vypuska reliza pol'zovateli postoyanno prisylayut soobscheniya
   ob oshibkah i pozhelaniya po rasshireniyu funkcional'nosti. Soobscheniya o
   problemah popadayut v nashu bazu dannyh GNATS[8] po `elektronnoj pochte,
   posredstvom utility send-pr(1) ili cherez Web-interfejs, dostupnyj po
   adresu http://www.FreeBSD.org/send-pr.html.

   Dlya udovletvoreniya nashih samyh konservativno nastroennyh pol'zovatelej,
   nachinaya s FreeBSD 4.3, poyavilis' vetki dlya otdel'nyh relizov. `Eti
   vetki sozdayutsya vskore posle togo, kak vypuskaetsya okonchatel'nyj
   reliz. Posle ego vyhoda v vetku reliza pomeschayutsya tol'ko samye
   kritichnye ispravleniya i dobavleniya, kasayuschiesya bezopasnosti. Krome
   obnovlenij ishodnyh tekstov posredstvom CVS, dlya sistem vetok RELENG_X_Y
   imeyutsya i binarnye nabory patchej.

  1.1. CHto obsuzhdaetsya v dannom dokumente?

   V posleduyuschih glavah `etoj stat'i obsuzhdayutsya:

   Razdel 2, <<Process vypuska reliza>>

           Razlichnye `etapy processa podgotovki reliza vplot' do postroeniya
           aktual'noj sistemy.

   Razdel 3, <<Postroenie relizov>>

           Process sborki.

   Razdel 5, <<Rasshiryaemost'>>

           Kak bazovyj reliz mozhet byt' rasshiren tret'imi storonami.

   Razdel 6, <<Uroki, izvlechionnye iz FreeBSD 4.4>>

           Nekotorye iz urokov, poluchennyh pri vypuske reliza FreeBSD 4.4.

   Razdel 7, <<Napravleniya buduschih rabot>>

           Napravleniya buduschih rabot.

2. Process vypuska reliza

   Novye relizy FreeBSD vypuskayutsya iz vetki -STABLE s intervalom primerno
   v chetyre mesyaca. Process vypuska relizov FreeBSD nachinaetsya za 45 dnej
   do predpolagaemoj daty reliza s togo, chto otvetstvennyj za reliz posylaet
   soobschenie po `elektronnoj pochte v adres spiskov rassylki dlya
   razrabotchikov, chtoby napomnit' poslednim o nalichii vsego lish' 15 dnej
   na vnesenie novyh izmenenij do momenta zamorozki koda. V `etot period
   mnogie razrabotchiki vypolnyayut dejstviya, izvestnye kak
   <<MFC-perenosy>>. MFC oznachaet <<Merge From CURRENT>> (perenos iz
   CURRENT) i opisyvaet process perenosa protestirovannyh izmenenij iz
   nashego dereva razrabotki -CURRENT v nashe derevo -STABLE.

  2.1. Prosmotr koda

   Za tridcat' dnej do predpolagaemogo reliza hranilische ishodnyh tekstov
   perevoditsya v rezhim <<stabilizacii koda>>. V `etot period vse izmeneniya
   v dereve -STABLE dolzhny podtverzhdat'sya Gruppa Vypuska Relizov FreeBSD
   <re@FreeBSD.org>. V pervyj 15-dnevnyj period razresheny sleduyuschie tipy
   izmenenij:

     * Ispravleniya oshibok.

     * Obnovlenie dokumentacii.

     * Ispravleniya lyubogo haraktera, kasayuschiesya bezopasnosti.

     * Neznachitel'nye ispravleniya v drajverah ustrojstv, takie, kak,
       naprimer, dobavlenie novyh ID ustrojstv.

     * Lyubye drugie izmeneniya, kotorye odobryaet gruppa podgotovki reliza,
       s uchiotom potencial'nogo riska.

   Posle pervyh 15 dnej stabilizacii koda vypuskaetsya predvaritel'nyj reliz,
   prednaznachennyj dlya shirokogo testirovaniya, a kod perevoditsya v
   sostoyanie <<zamorozki>>, kogda stanovitsya gorazdo trudnee dokazyvat'
   neobhodimost' vneseniya novyh izmenenij v sistemu, esli oni ne kasayutsya
   ispravleniya ser'ioznyh oshibok ili informacionnoj bezopasnosti. Vo vremya
   zamorozki koda kazhduyu nedelyu vypuskaetsya ne menee odnoj
   predvaritel'noj versii reliza, do teh por, poka ne budet gotov
   okonchatel'nyj variant reliza. V dni, predshestvuyuschie vypusku
   okonchatel'nogo reliza, gruppa ego podgotovki rabotaet v postoyannom
   kontakte so sluzhboj bezopasnosti i lyud'mi, podderzhivayuschimi
   dokumentaciyu i porty, chtoby obespechit' dostupnost' vseh komponentov,
   neobhodimyh dlya uspeshnogo vypuska reliza.

  2.2. Kontrol'nyj spisok dlya proverki okonchatel'nogo reliza

   Posle togo, kak dlya shirokogo testirovaniya bylo vypuscheno neskol'ko
   predvaritel'nyh relizov i vse osnovnye problemy byli resheny, mozhet
   nachat'sya process <<shlifovki>> okonchatel'nogo reliza.

    2.2.1. Sozdanie vetki reliza

   Kak skazano vo vvodnoj chasti, vetka RELENG_X_Y yavlyaetsya sravnitel'no
   novym dobavleniem v nashej metodologii podgotovki relizov. Pervym shagom v
   sozdanii `etoj vetki yavlyaetsya proverka togo, chto vy rabotaete s samoj
   poslednej versiej ishodnyh tekstov RELENG_X, iz kotoroj vy hotite sozdat'
   novuyu vetku.

 /usr/src# cvs update -rRELENG_4 -P -d

   Sleduyuschim shagom yavlyaetsya sozdanie t`ega tochki otvetvleniya, chtoby
   diffy oblegchili rabotu s nachalom vetki v CVS:

 /usr/src# cvs rtag -rRELENG_4 RELENG_4_8_BP src

   Posle `etogo sozdaiotsya t`eg novoj vetki po komande:

 /usr/src# cvs rtag -b -rRELENG_4_8_BP RELENG_4_8 src

  Primechanie:

   Ispol'zovanie t`egov RELENG_* razresheno tol'ko menedzheram CVS i
   uchastnikam gruppy po vypusku relizov.

   <<T`egom>> v ponyatii CVS nazyvayut metku, kotoraya identificiruet
   ishodnyj tekst v nekotoryj moment vremeni. Vvodya t`eg v derevo, my
   obespechivaem to, chto v buduschem tot, kto stroit reliz, vsegda smozhet
   vospol'zovat'sya tem zhe samym kodom, chto ispol'zovalsya nami dlya
   sozdaniya oficial'nyh relizov Proekta FreeBSD.

                            Vetvi razrabotki FreeBSD
                            Vetka FreeBSD 3.x STABLE
                            Vetka FreeBSD 4.x STABLE
                            Vetka FreeBSD 5.x STABLE
                            Vetka FreeBSD 6.x STABLE
                            Vetka FreeBSD 7.x STABLE
                            Vetka FreeBSD 8.x STABLE
                            Vetka FreeBSD 9.x STABLE

    2.2.2. Uvelichenie nomera versii

   Pered tem, kak okonchatel'nyj reliz budet pomechen, postroen i vypuschen,
   neobhodimo modificirovat' sleduyuschie fajly, otraziv v nih korrektnuyu
   versiyu FreeBSD:

     * doc/ru_RU.KOI8-R/books/handbook/mirrors/chapter.xml

     * doc/en_US.ISO8859-1/books/porters-handbook/book.xml

     * doc/share/xml/freebsd.ent

     * src/Makefile.inc1

     * src/UPDATING

     * src/gnu/usr.bin/groff/tmac/mdoc.local

     * src/release/Makefile

     * src/release/doc/en_US.ISO8859-1/share/xml/release.dsl

     * src/release/doc/share/examples/Makefile.relnotesng

     * src/release/doc/share/xml/release.ent

     * src/share/examples/cvsup/standard-supfile

     * src/sys/conf/newvers.sh

     * src/sys/sys/param.h

     * src/usr.sbin/pkg_install/add/main.c

     * www/en/docs/man.xml

     * www/en/cgi/ports.cgi

     * ports/Tools/scripts/release/config

   Novyj reliz dolzhen byt' takzhe otrazhion v fajlah zamechanij k relizu i
   informacii o zamechennyh oshibkah (v vetke reliza), a fajly
   sootvetstvuyuschim obrazom obrezany (v vetke stable/current):

     * src/release/doc/en_US.ISO8859-1/relnotes/common/new.xml

     * src/release/doc/en_US.ISO8859-1/errata/article.xml

   Utilita sysinstall dolzhna byt' obnovlena i ukazyvat' kolichestvo
   dostupnyh portov i ob"iom diskovogo prostranstva, trebuemogo dlya
   Kollekcii Portov[4]. Na dannyj moment `eta informaciya hranitsya v fajle
   src/usr.sbin/sysinstall/dist.c.

   Posle postroeniya reliza dlya opovescheniya mirovogo soobschestva o
   vypuske reliza neobhodimo obnovit' nekotorye fajly.

     * doc/share/images/articles/releng/branches-relengX.pic

     * www/share/xml/advisories.xml

     * www/share/xml/includes.release.xml

     * www/share/xml/includes.release.xsl

     * www/en/releases/*

     * www/en/releng/index.xml

     * www/en/news/news.xml

     * www/en/search/web.atoz

     * src/share/misc/bsd-family-tree

    2.2.3. Podgotovka novoj starshej reliz vetki (RELENG_X)

   Kogda novaya starshaya reliz vetka, takaya kak RELENG_6 otvetvlyaetsya iz
   HEAD, nekotorye dopolnitel'nye fajly dolzhny byt' obnovleny pered tem, kak
   relizy budut sozdany iz `etoj novoj vetki.

     * src/share/examples/cvsup/stable-supfile - kogda primenimo, dolzhen
       byt' obnovlen, chtoby ukazyvat' na novuyu -STABLE vetku.

    2.2.4. Sozdanie t`egov reliza

   Pri gotovnosti okonchatel'nogo reliza sleduyuschaya komanda sozdast t`eg
   RELENG_4_8_0_RELEASE.

 /usr/src# cvs rtag -rRELENG_4_8 RELENG_4_8_0_RELEASE src

   Menedzhery dokumentacii i portov otvechayut za vnesenie t`ega v
   sootvetstvuyuschie vetki s t`egom RELEASE_4_8_0.

   Inogda v poslednij moment, uzhe posle sozdaniya poslednih t`egov mozhet
   potrebovat'sya vnesenie ispravlenij. Na praktike `eto ne yavlyaetsya
   problemoj, tak kak CVS pozvolyaet vypolnyat' manipulyacii s t`egami po
   komande cvs tag -d tagname filename. Ochen' vazhno, chtoby vse poslednie
   izmeneniya byli pomecheny sootvetstvuyuschim t`egom, kak chast' reliza.
   Relizy FreeBSD dolzhny byt' vsegda povtoryaemymi. Lokal'nye izmeneniya v
   parametry okruzheniya vypuskayuschego reliz nedopustimy.

3. Postroenie relizov

   <<Relizy>> FreeBSD mogut byt' postroeny lyubym chelovekom, imeyuschim
   bystrodejstvuyuschuyu mashinu i dostup k hranilischu ishodnyh tekstov.
   (`Eto dolzhen byt' lyuboj, tak kak my predostavlyaem anonimnyj dostup k
   CVS! Obratites' k Rukovodstvu dlya proyasneniya detalej.) Edinstvennym
   osobym trebovaniem yavlyaetsya nalichie ustrojstva md(4). Esli ustrojstvo
   v vashem yadre ne podgruzheno, to modul' yadra dolzhen byt' podgruzhen
   avtomaticheski pri vypolnenii komandy mdconfig(8) na `etape sozdaniya
   nositelya dlya zagruzki. Vse instrumenty, neobhodimye dlya postroeniya
   reliza, dostupny iz hranilischa CVS v kataloge src/release. `Eti
   instrumenty predostavlyayut edinyj metod postroeniya relizov FreeBSD.
   Polnyj reliz mozhet byt' real'no postroen pri pomoschi lish' odnoj
   komandy, vklyuchaya sozdanie ISO-obrazov, podhodyaschih dlya zapisi na
   CDROM, ustanovochnyh disket i ustanovochnogo kataloga FTP. `Eta komanda
   nazyvaetsya sootvetstvuyuschim obrazom: make release.

  3.1. make release

   Dlya uspeshnogo postroeniya reliza vy dolzhny snachala zapolnit' katalog
   /usr/obj, zapustiv komandu make world ili prosto make buildworld. Cel',
   vypolnyaemaya dlya postroeniya reliza, trebuet korrektnogo zadaniya
   neskol'kih peremennyh, ispol'zuemyh pri ego sborke:

     * CHROOTDIR - Katalog, ispol'zuemyj v srede s izmenionnoj kornevoj
       fajlovoj sistemoj pri postroenii polnogo reliza.

     * BUILDNAME - Naimenovanie stroyaschegosya reliza.

     * CVSROOT - Mestonahozhdenie CVS-hranilischa.

     * RELEASETAG - T`eg CVS, sootvetstvuyuschij relizu, kotoryj vy
       sobiraetes' stroit'.

   Esli u vas eschio net dostupa k lokal'nomu CVS-hranilischu, to vy mozhete
   zerkalirovat' odno iz nih pri pomoschi CVSup. Postavlyaemyj sup-fajl,
   /usr/share/examples/cvsup/cvs-supfile, mozhet sluzhit' horoshej otpravnoj
   tochkoj dlya zerkalirovaniya hranilischa CVS.

   Esli RELEASETAG opuschen, to reliz budet stroit'sya iz vetki HEAD
   (izvestnoj kak -CURRENT). Relizy, stroyaschiesya iz `etoj vetki obychno
   nazyvayut <<sn`epshotami -CURRENT>>.

   Dlya nastrojki postroeniya reliza suschestvuet mnogo drugih peremennyh
   Bol'shinstvo iz `etih peremennyh opisany v nachale fajla
   src/release/Makefile. Tochnaya komanda, sluzhaschaya dlya postroeniya
   oficial'nogo reliza FreeBSD 4.7 (x86) takova:

 make release CHROOTDIR=/local3/release \
         BUILDNAME=4.7-RELEASE \
         CVSROOT=/host/cvs/usr/home/ncvs \
         RELEASETAG=RELENG_4_7_0_RELEASE

   Makefile dlya reliza mozhet byt' razbit na neskol'ko razlichnyh shagov.

     * Sozdanie chistogo sistemnogo okruzheniya v otdel'noj ierarhii
       katalogov po komande <<make installworld>>.

     * Vygruzka iz CVS chistoj versii ishodnyh tekstov sistemy, dokumentacii
       i portov v ierarhiyu dlya postroeniya reliza.

     * Sozdanie kopii /etc i /dev v okruzhenii s izmenionnym kornem fajlovoj
       sistemy.

     * Smena kornevoj fajlovoj sistemy na ierarhiyu postroeniya reliza,
       chtoby izbezhat' vliyaniya vneshnego okruzheniya na postroenie.

     * Vypolnenie make world v okruzhenii s izmenionnoj kornevoj fajlovoj
       sistemoj.

     * Postroenie binarnyh fajlov dlya raboty s Kerberos.

     * Postroenie yadra GENERIC.

     * Sozdanie promezhutochnogo dereva katalogov, gde budut stroit'sya
       binarnye fajly i formirovat'sya distributivy.

     * Postroenie i ustanovka instrumentov dlya raboty s dokumentaciej,
       neobhodimyh dlya preobrazovaniya ishodnyh tekstov dokumentacii (SGML)
       v format HTML i tekstovye dokumenty, kotorye soputstvuyut reliz.

     * Postroenie i ustanovka aktual'noj dokumentacii (rukovodstva
       pol'zovatelej, uchebniki, zamechaniya k relizu, perechen' apparatnoj
       sovmestimosti i tak dalee.)

     * Postroenie <<sviornutyh>> binarnyh fajlov, ispol'zuemyh na
       ustanovochnyh disketah.

     * Podgotovka distributivnyh arhivov binarnyh fajlov i ishodnyh tekstov.

     * Sozdanie zagruzochnogo nositelya i <<fixit>>-diskety.

     * Sozdanie ierarhii dlya ustanovki pri pomoschi FTP.

     * (opcional'no) Sozdanie obrazov ISO dlya nositelej CDROM/DVD.

   Dlya polucheniya bolee polnoj informacii ob infrastrukture postroeniya
   relizov, pozhalujsta, obratites' k spravochnoj stranice po release(7).

  Primechanie:

   Vazhno, chtoby iz fajla /etc/make.conf byli udaleny vse ustanovki,
   specifichnye dlya konkretnogo hosta. K primeru, budet glupo
   rasprostranyat' binarnye fajly, postroennye na sisteme s peremennoj
   CPUTYPE, ukazyvayuschej na opredelionnyj tip processora.

  3.2. Programmnoe obespechenie tret'ih lic (<<ports>>)

   Kollekciya portov FreeBSD soderzhit bolee 24,000 programmnyh paketov
   storonnih razrabotchikov, kotorye dostupny dlya FreeBSD. Za podderzhku
   celostnosti dereva portov, kotoroe mozhet ispol'zovat'sya dlya sozdaniya
   binarnyh paketov, postavlyaemyh s oficial'nymi relizami FreeBSD, otvechaet
   Gruppa Menedzherov Dereva Portov FreeBSD <portmgr@FreeBSD.org>.

   Rassmotrenie rabot s nashej kollekciej paketov storonnih razrabotchikov
   pri podgotovke relizov vyhodit za ramki `etogo dokumenta. `Etot vopros
   gluboko rassmotren v otdel'noj stat'e, The Release Engineering of Third
   Party Packages.

  3.3. ISO s relizami

   Nachinaya s FreeBSD 4.4, Proekt FreeBSD prinyal reshenie rasprostranyat'
   vse chetyre obraza ISO, ranee prodavaemye cherez BSDi/Wind River
   Systems/FreeBSD Mall kak <<oficial'nye>> distributivy na CDROM. Kazhdyj iz
   chetyrioh diskov dolzhen soderzhat' fajl README.TXT, opisyvayuschij
   soderzhimoe diska, fajl CDROM.INF, v kotorom nahodyatsya meta-dannye o
   diske dlya togo, chtoby sysinstall(8) mog proveryat' i ispol'zovat'
   soderzhimoe, a takzhe fajl filename.txt, soderzhaschij perechen'
   soderzhimogo na diske. `Etot perechen' mozhet byt' sozdan prostoj
   komandoj:

 /stage/cdrom# find . -type f | sed -e 's/^\.\///' | sort > filename.txt

   Specifichnye trebovaniya dlya kazhdogo CD opisyvayutsya nizhe.

    3.3.1. Disk 1

   Pervyj disk prakticheski polnost'yu sozdaiotsya komandoj make release.
   Edinstvennym izmeneniem, kotoroe nuzhno vnesti v katalog disc1,
   yavlyaetsya dobavlenie podkataloga tools, a takzhe perenos maksimal'no
   vozmozhnogo kolichestva programmnyh paketov storonnih razrabotchikov,
   kotorye pomestyatsya na disk. Katalog tools soderzhit programmnoe
   obespechenie, pozvolyayuschee pol'zovatelyam sozdavat' ustanovochnye
   diskety iz drugih operacionnyh sistem. `Etot disk nuzhno sdelat'
   zagruzochnym, chtoby pol'zovatelyam sovremennyh PK ne nuzhno bylo
   sozdavat' ustanovochnye diskety.

   Esli v reliz neobhodimo vklyuchit' specializirovannoe yadro, to neobhodimo
   modificirovat' sysinstall(8) i release(7), dobaviv v nih instrukcii po
   ustanovke. Sootvetstvuyuschij kod nahoditsya v src/release i
   src/usr.sbin/sysinstall. V chastnosti, v src/usr.sbin/sysinstall
   neobhodimo budet redaktirovat' src/release/Makefile, dist.c, dist.h,
   menus.c, install.c i Makefile. Takzhe mozhet potrebovat'sya obnovit'
   sysinstall.8.

    3.3.2. Disk 2

   Vtoroj disk takzhe v osnovnom sozdaiotsya po komande make release. On
   soderzhit <<zhivuyu fajlovuyu sistemu>>, kotoruyu mozhno ispol'zovat' iz
   sysinstall(8) dlya ispravleniya processa ustanovki FreeBSD. `Etot disk
   dolzhen byt' zagruzochnym i soderzhat' takzhe upakovannuyu kopiyu
   hranilischa CVS v kataloge CVSROOT i demonstracionnye versii
   kommercheskogo programmnogo obespecheniya v kataloge commerce.

    3.3.3. Diski 3 i 4

   Ostavshiesya dva diska soderzhat dopolnitel'nye programmnye pakety dlya
   FreeBSD. Oni dolzhny byt' ob"edineny v gruppy (klastery), chtoby otdel'nyj
   paket i vse ego zavisimosti nahodilis' na odnom i tom zhe diske.
   Dopolnitel'naya informaciya o sozdanii `etih diskov nahoditsya v stat'e
   The Release Engineering of Third Party Packages.

    3.3.4. Podderzhka neskol'kih diskov

   Sysinstall podderzhivaet ustanovku paketov s neskol'kih diskov. Dlya `eto
   nuzhno, chtoby na kazhdom diske byl fajl INDEX, soderzhaschij nazvaniya
   vseh paketov so vseh diskov, s dopolnitel'nym polem, ukazyvayuschem na
   kakom diske soderzhitsya dannyj konkretnyj paket. Takzhe, na kazhdom
   diske, v fajle cdrom.inf dolzhna byt' ukazana peremennaya CD_VOLUME dlya
   togo, chtoby sysinstall mog opredelit' kakoj `etoj disk. Kogda
   pol'zovatel' budet pytat'sya ustanovit' paket, kotorogo net na tekuschem
   diske, sysinstall vydast zapros na vstavku sootvetstvuyuschego diska.

4. Rasprostranenie

  4.1. Servery FTP

   Posle togo, kak reliz byl tschatel'no protestirovan i podgotovlen k
   rasprostraneniyu, dolzhen byt' obnovlion glavnyj FTP-server. Vse
   oficial'nye obschedostupnye servery FTP-servery FreeBSD yavlyayutsya
   zerkalami glavnogo servera, otkrytogo tol'ko drugim serveram FTP. `Etot
   server izvesten pod imenem ftp-master. Kogda reliz gotov, na servere
   ftp-master dolzhny byt' izmeneny sleduyuschie stroki:

   /pub/FreeBSD/releases/arch/X.Y-RELEASE/

           Ustanovochnyj katalog FTP, poluchaemyj po komande make release.

   /pub/FreeBSD/ports/arch/packages-X.Y-release/

           Polnyj komplekt postroennyh paketov dlya `etogo reliza.

   /pub/FreeBSD/releases/arch/X.Y-RELEASE/tools

           Simvolicheskaya ssylka na ../../../tools.

   /pub/FreeBSD/releases/arch/X.Y-RELEASE/packages

           Simvolicheskaya ssylka na
           ../../../ports/arch/packages-X.Y-release.

   /pub/FreeBSD/releases/arch/ISO-IMAGES/X.Y/X.Y-RELEASE-arch-*.iso

           ISO-obrazy. Zdes' <<*>> `eto disc1, disc2 i tak dalee. Tol'ko esli
           zdes' est' disc1 i al'ternativnyj pervyj ustanovochnyj CD
           (naprimer, obrezannaya ustanovka bez okonnoj sistemy), to zdes'
           mozhet byt' takzhe i mini.

   Dlya polucheniya dopolnitel'noj informacii o sisteme zerkal'nyh
   FTP-serverov FreeBSD, pozhalujsta, prochtite stat'yu o Zerkalirovanii
   FreeBSD.

   Mozhet projti ot neskol'kih chasov do dvuh dnej mezhdu tem, kak obnovitsya
   ftp-master, i na osnovnoj masse FTP-serverov 1-go urovnya poyavitsya novoe
   programmnoe obespechenie, v zavisimosti ot togo, v tozhe samoe li vremya
   paket byl zagruzhen. Obyazatel'no, chtoby vypuskayuschie reliz
   koordinirovali svoi dejstviya s Administratory zerkal'nyh sajtov FreeBSD
   do togo, kak ob"yavlyat' ob obschedostupnosti novogo programmnogo
   obespecheniya s serverov FTP. V ideal'nom sluchae nabor paketov k relizu
   dolzhen byt' zagruzhen po krajnej mere za chetyre dnya do momenta vypuska
   reliza. Reliz dolzhen byt' zagruzhen v promezhutke ot 24 do 48 chasov do
   momenta vyhoda zaplanirovannogo reliza s vyklyuchennymi polnomochiyami
   <<other>>. `Eto pozvolit zerkaliruyuschim serveram sgruzit' ego, no nikto
   ne smozhet poluchit' ego s zerkal'nyh serverov. V moment vyhoda reliza
   dolzhno byt' poslano soobschenie v adres Administratory zerkal'nyh sajtov
   FreeBSD, govoryaschee o tom, chto reliz vypuschen i nastupilo vremya dlya
   otkrytiya dostupa na zerkal'nyh serverah. Obyazatel'no vmeste so vremenem
   ukazhite i chasovoj poyas, naprimer, otnositel'no GMT.

  4.2. Tirazhirovanie CD-ROM

   Vskore poyavitsya: Sovety po peredache ISO-obrazov FreeBSD na
   tirazhirovanie i primenyaemye mery po kontrolyu kachestva.

5. Rasshiryaemost'

   Hotya FreeBSD predstavlyaet soboj zakonchennuyu operacionnuyu sistemu,
   nichego ne zastavlyaet vas ispol'zovat' sistemu tol'ko v tom vide, kotoryj
   prigotovlen nami dlya rasprostraneniya. My popytalis' sproektirovat'
   sistemu maksimal'no rasshiryaemoj, chtoby ona mogla vypolnyat' rol'
   platformy, na osnove kotoroj mozhno stroit' drugie kommercheskie produkty.
   Edinstvennym <<pravilom>>, kotoroe my nalagaem, yavlyaetsya
   nastoyatel'naya rekomendaciya dokumentirovat' uluchsheniya, vnosimye vami
   v distributiv FreeBSD s netrivial'nymi izmeneniyami! Soobschestvo FreeBSD
   mozhet pomogat' tol'ko pol'zovatelyam togo programmnogo obespecheniya,
   kotoroe rasprostranyaem my. My opredelionno privetstvuem uluchsheniya v
   forme, naprimer, instrumentov ustanovki i administrirovaniya, no ne mozhem
   otvechat' na voprosy o nih.

  5.1. Sozdanie modificirovannyh zagruzochnyh disket

   Vo mnogih mestah imeyutsya slozhnye usloviya, kotorye trebuyut
   razmescheniya dopolnitel'nyh modulej yadra ili pol'zovatel'skih
   instrumentov na ustanovochnye diskety. <<Bystrym i neakkuratnym>> sposobom
   sdelat' `eto yavlyaetsya izmenenie promezhutochnogo kataloga v
   suschestvuyuschej ierarhii pri vypolnenii make release:

     * Primenite patchi ili dobav'te dopolnitel'nye fajly v katalog
       postroeniya reliza s izmenionnyh kornem fajlovoj sistemy.

     * rm ${CHROOTDIR}/usr/obj/usr/src/release/release.[59]

     * perestrojte sysinstall(8), yadro i ostal'nye chasti sistemy, kotorye
       kosnulis' vashi izmeneniya.

     * chroot ${CHROOTDIR} ./mk floppies

   Diskety novogo reliza budut nahodit'sya v ${CHROOTDIR}/R/stage/floppies.

   Libo mozhet byt' vyzvana cel' boot.flp postroeniya ili skript sozdaniya
   fajlovoj sistemy, src/release/scripts/doFS.sh, kotorye mozhet byt' vyzvan
   napryamuyu.

   Lokal'nye patchi mogut byt' takzhe prilozheny k postroeniyu reliza pri
   pomoschi zadaniya peremennoj LOCAL_PATCH pri vypolnenii make release.

  5.2. Skripty sysinstall

   Instrument ustanovki i nastrojki sistemy FreeBSD, sysinstall(8), mozhet
   rabotat' po scenariyu, poleznomu dlya avtomatizirovannoj ustanovki v
   bol'shih kompaniyah. `Eta funkcional'nost' mozhet ispol'zovat'sya
   sovmestno s tehnologiej Intel(R) PXE[12] dlya pervonachal'noj ustanovki
   sistem iz seti, ili s modificirovannymi zagruzochnymi disketami so
   skriptami sysinstall. Primer skripta dlya sysinstall dostupen v dereve CVS
   v vide fajla src/release/sysinstall/install.cfg.

6. Uroki, izvlechionnye iz FreeBSD 4.4

   Formal'no process podgotovki reliza dlya 4.4 nachalsya 1 avgusta 2001
   goda. Posle `etoj daty vse bez isklyucheniya izmeneniya v vetke RELENG_4
   FreeBSD podtverzhdalis' Gruppa Vypuska Relizov FreeBSD <re@FreeBSD.org>.
   Pervyj predvaritel'nyj reliz dlya arhitektury x86 byl vypuschen 16
   avgusta, za nim vyhodilo eschio 4 predvaritel'nyh reliza, i vsio
   zakonchilos' 18 avgusta vypuskom okonchatel'nogo reliza. Rukovoditel'
   sluzhby bezopasnosti ochen' plotno zanimalsya processom vypuska v
   poslednyuyu nedelyu, tak kak v predyduschih predvaritel'nyh relizah byli
   najdeny problemy, kasayuschiesya informacionnoj bezopasnosti. CHut' bolee
   chem za mesyac v adres Gruppa Vypuska Relizov FreeBSD <re@FreeBSD.org>
   postupilo bolee 500 pisem.

   Soobschestvo nashih pol'zovatelej ves'ma chiotko pokazalo, chto
   bezopasnost' i stabil'nost' reliza FreeBSD ne dolzhna prinosit'sya v
   zhertvu lyubym naznachennym srokam okonchaniya rabot ili planiruemym datam
   vyhoda reliza. Proekt FreeBSD za vremya svoego suschestvovaniya
   znachitel'no vyros, i nikogda ranee neobhodimost' v standartizacii
   procedur podgotovki relizov ne stoyala tak ostro. `Eto stalo eschio bolee
   vazhno, kogda FreeBSD byla perenesena na novye apparatnye platformy.

7. Napravleniya buduschih rabot

   Nashim rabotam po podgotovke relizov zhiznenno vazhno rasti vmeste s
   uvelicheniem kolichestva pol'zovatelej sistemy. Vmeste s `etim my ochen'
   plotno rabotaem nad dokumentirovaniem dejstvij, vypolnyaemyh pri vypuske
   relizov FreeBSD.

     * Parallelizm - nekotorye `etapy postroeniya reliza na samom dele
       vypolnyat' parallel'no <<zatrudnitel'no>>. Bol'shinstvo vypolnyaemyh
       zadach ves'ma intensivno rabotayut s I/O, tak chto dlya uskoreniya
       processa make release nalichie neskol'kih vysokoskorostnyh diskov
       gorazdo bolee vazhno, chem ispol'zovanie neskol'kih processorov. Esli
       dlya razlichnyh ierarhij v chroot(2)-okruzhenii ispol'zuetsya
       neskol'ko diskov, to izvlechenie iz CVS derev'ev ports i doc mozhet
       vypolnyat'sya odnovremenno s komandoj make world na drugom diske.
       Ispol'zovanie RAID-reshenij (apparatnyh ili programmnyh) mozhet
       znachitel'no sokratit' obschee vremya postroeniya.

     * Krossplatformennoe postroenie relizov - Postroit' reliz dlya IA-64 ili
       Alpha na x86-oborudovanii? make TARGET=ia64 release.

     * Testirovanie - Nam nuzhna uluchshennaya avtomatizirovannaya sistema
       testirovaniya korrektnosti dlya FreeBSD.

     * Instrumenty ustanovki - Nasha programma ustanovki davno perezhila svoj
       vek. V razrabotke nahodyatsya neskol'ko proektov, kotorye dolzhny dat'
       uluchshennuyu tehnologiyu ustanovki. Odnim iz takih proektov byl libh,
       cel'yu kotorogo bylo sozdanie novoj intellektual'noj tehnologii raboty
       s paketami i programmy ustanovki s GUI.

8. Blagodarnosti

   YA rad poblagodarit' Dzhordana Habbarda (Jordan Hubbard) za to, chto on
   dal mne vozmozhnost' vzyat' pod svoyu otvetstvennost' nekotorye chasti
   processa podgotovki reliza FreeBSD 4.4, a takzhe za vse gody ego raboty,
   sdelavshie FreeBSD takoj, kakoj ona yavlyaetsya sejchas. Konechno, reliz
   ne byl by vozmozhen bez toj raboty, kotoruyu prodelali Satoshi Asami
   <asami@FreeBSD.org>, Steve Price <steve@FreeBSD.org>, Bruce A. Mah
   <bmah@FreeBSD.org>, Nik Clayton <nik@FreeBSD.org>, David O'Brien
   <obrien@FreeBSD.org>, Kris Kennaway <kris@FreeBSD.org>, John Baldwin
   <jhb@FreeBSD.org> i ostal'nye chleny soobschestva razrabotchikov FreeBSD.
   YA takzhe rad vyrazit' blagodarnost' Rodney W. Grimes
   <rgrimes@FreeBSD.org> i Poul-Henning Kamp <phk@FreeBSD.org>, a takzhe
   ostal'nym, rabotavshim nad instrumentami podgotovki relizov v pervye gody
   suschestvovaniya FreeBSD. `Eta stat'ya byla takzhe napisana pod
   vpechatleniem dokumentacii po podgotovke relizov ot CSRG[13], NetBSD
   Project[10] i zamechanij Dzhona Baldvina (John Baldwin) po predlagaemomu
   processu podgotovki relizov[11].

9. Spravochnaya literatura

   [1] CVS - Concurrent Versions System http://www.cvshome.org

   [2] CVSup - The CVS-Optimized General Purpose Network File Distribution
   System http://www.polstra.com/projects/freeware/CVSup

   [3] http://pointyhat.FreeBSD.org

   [4] Kollekciya portov FreeBSD http://www.FreeBSD.org/ports

   [5] Kommittery FreeBSD
   http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/contributors/staff-committers.html

   [6] Pravlenie FreeBSD ../../../../administration.html#t-core

   [7] Rukovodstvo FreeBSD
   http://www.FreeBSD.org/doc/ru_RU.KOI8-R/books/handbook

   [8] GNATS: The GNU Bug Tracking System http://www.gnu.org/software/gnats

   [9] Statistika FreeBSD PR http://www.FreeBSD.org/prstats/index.html

   [10] NetBSD Developer Documentation: Release Engineering
   http://www.NetBSD.org/developers/releng/index.html

   [11] John Baldwin's FreeBSD Release Engineering Proposal
   http://people.FreeBSD.org/~jhb/docs/releng.txt

   [12] PXE Jumpstart Guide
   http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/pxe/index.html

   [13] Marshall Kirk McKusick, Michael J. Karels, and Keith Bostic: The
   Release Engineering of 4.3BSD
