Anoniminis CVS yra metodas lokaliai laikyti naujausią OpenBSD išeities tekstų medžio kopiją su visais pakeitimais. Galima ne tik stebėti naujausio kodo plėtojimą, bet ir leidinių klaidų pataisymus.
Pagrindinis anoniminio CVS privalumas lyginant su kitomis išeities tekstų atnaujinimo sistemomis yra tas, kad jis tiesiogiai dirba su centrine saugykla arba jos veidrodžiu. Tai reiškia, kad jūs turite pilną CVS komandų komplektą atnaujinimui ir jūsų ir kitų programuotojų pakeitimų apjungimams, diff bylų sudarinėjimui, pakeitimų stebėjimui ir kitokioms užklausoms.
OpenBSD projektas šiuo metu turi keturias pagrindines išeities tekstų saugyklas:
Tikroji anoniminio CVS naudojimosi stiprybė yra ta, CVS yra „tolerantiška“ išeities tekstų kontroliavimo sistema - ji atsižvelgia į pakeitimus, kurie buvo padaryti lokaliuose išeities tekstuose ir deda dideles pastangas, kad atnaujintų visą išeities tekstų medį vietoje to, kad paliktų jus su paslaptingų problemų sąrašu, kurios turėtų būti išspręstos norint tęsti.
CVS yra išeities tekstų kontroliavimo sistema, naudojama OpenBSD išeities tekstų medžiui tvarkyti. Ji sukuria centrinę saugyklą visiems oficialiai išleistiems failams ir jų ir pakeitimams, tuo pačiu metu leisdama programuotojams naudoti lokalias išeities teksto kopijas su lokaliais pakeitimais. Yra keli priėjimo prie CVS saugyklos lygiai:
Pagrindinė CVS stiprybė yra ta, kad ji turi galimybę vykdyti protingus kodo apjungimus (merge) centrinių saugyklų pakeitimuose, kuriuos jūs atliekate savo lokalioje saugyklos kopijoje. Tai reiškia, kad jeigu ką nors pakeičiate modulyje ir įvykdote atnaujinimą, jūsų pakeitimai nėra platinami, CVS stengiasi kaip galima geriau apjungti pakeitimus, padarytus centriniams išeities tekstams su pakeitimais, kuriuos jūs padarėte lokalioje kopijoje.
Jeigu pakeitimai negali būti visiškai apjungti CVS leidžia patiems juos apjungti.
Kad išpakuoti išeities tekstų medį iš kompaktinės plokštelės į /usr/src (laikome, kad kompaktinė plokštelė primontuota /mnt):
# cd /usr/src
# tar xzf /mnt/src.tar.gz
# cd /usr
# tar xzf /mnt/xenocara.tar.gz
# tar xzf /mnt/ports.tar.gz
Išeities tekstas pateiktas parsisiuntimui FTP serveriuose yra padalintas į dvi
dalis, kad sumažintų parsisiuntimo laiką tiems, kas dirba tik su viena išeities
tekstų medžio dalimi. Tie du archyvai yra sys.tar.gz, kuriame
talpinami failai, naudojami branduolio kūrimui, ir src.tar.gz, kuriame
talpinami kitų „pagalbinių programų“ išeities tekstai.
Paprastai jums reikės instaliuoti šiuos abu archyvus.
Laikome, kad parsisiuntėte failus src.tar.gz,
sys.tar.gz ir xenocara.tar.gz į /usr:
# cd /usr/src
# tar xzf ../sys.tar.gz
# tar xzf ../src.tar.gz
# cd /usr
# tar xzf xenocara.tar.gz
# tar xzf ports.tar.gz
Ne visi nori išpakuoti visus failų rinkinius, bet kadangi sistema privalo būti suderinama, jūs tikriausiai turėsite parsisiųsti visus medžius.
Jūs taip pat galite naudoti cvs(1), kad parsisiųstumėt („checkout“) išeities tekstų saugyklą. Tai aprašoma sekančioje dalyje.
Po archyvų išpakavimo /usr/src bus puiki vieta atnaujinti išeities tekstų medį, kurioje visos cvs(1) komandos veiks puikiai.
CVS buvo sukurta taip, kad būtų lengva gauti ir atnaujinti išeities tekstą. Visų pirma turite nuspręsti ar norėsite sekti -current, ar pataisymų šaką. Plėtojama laida turi visus atnaujinimus iki pat šios minutės, tuo tarpu pataisymų šakoje rasite oficialų leidinį, pataisymus iš klaidų sąrašo puslapio ir smulkesnių problemų pataisymus. Daugiau informacijos apie OpenBSD šakas rasite čia.
Kai nuspręsite kurią išeities teksto šaką naudoti, turėsite pasirinkti anoniminį CVS serverį. Serverių sąrašą galite rasti žemiau.
Kai pasirinkote anoniminį CVS serverį jau galite pradėti naudotis CVS. Turintys kompaktines plokšteles gali pradėti CVS išeities teksto siuntimą naudodami kompaktinę plokštelę, kaip buvo aprašyta aukščiau, kad gautų išeities tekstus į savo sistemą. Jeigu neturite kompaktinės plokštelės po ranka, naudokite siuntimo metodą kurį aprašėme žemiau. Šis metodas parsiunčia OpenBSD išeities tekstus į /usr/src.
# cd /usr; cvs checkout -P src
Komanda aukščiau parsiųs plėtojamą išeities tekstą. Daugelis iš jūsų norėsite tik pataisymų išeities tekstų šakos. Jeigu norite parsiųsti pataisymų šaką, turite nurodyti papildomą parametrą. Pavyzdžiui:
# cd /usr; cvs checkout -P -rOPENBSD_5_1 src
Arba OPENBSD_5_0 jei siunčiate 5.0 leidinį ir pan.
Į OPENBSD_5_1 parametrą įeina leidinio išeities tekstai ir klaidų pataisymai.
Prašome atidžiai perskaityti ssh ar rsh prierašą žemiau!
Dėmesio: jeigu jūsų serveris pateiktas su klaidinga informacija, prašome susisiekti su beck@openbsd.org
Jūs tikriausiai norėsite naudoti traceroute(8), kad surastumėte arčiausiai savęs esantį serverį. Apie serverių problemas turėtų būti pranešta konkretaus serverio prižiūrėtojui.
SVARBU: yra kelios kriptografinės programinės įrangos problemos, todėl kiekvienas turi būti susipažinęs su šia informacija:
PASTABA: jeigu norite atnaujinti išeities teksto šaką (pvz., iš pataisymų) į
current, jūs turėtumėte pridėti -A parametrą. Kai kurios
senesnės OpenBSD dokumentacijos versijos rekomendavo naudoti šį parametrą
daugelyje pavyzdžių. Mes neberekomenduojame jo ten, kur jis nebūtinas.
Anoniminio CVS naudojimo pavyzdys:
$ cd /tmp
$ cvs -d anoncvs@anoncvs.ca.openbsd.org:/cvs get src/sys/arch/sparc
[kopijuoja failus iš saugyklos į jūsų kompiuterį]
$ cd src/sys/arch/sparc
$ cvs log locore.s
[parodo pasirinkto failo pakeitimus]
$ cvs diff -bc -r1.1 -r1.5 locore.s
[parodo pakeitimus tarp 1.1 ir 1.5 versijų]
$ cvs -d :pserver:anoncvs@anoncvs.ca.openbsd.org:/cvs login
(Logging in to anoncvs@anoncvs1.ca.openbsd.org)
CVS password: anoncvs
[Įrašys eilutę į ~/.cvspass (failas gali būti pakeistas per CVS_PASSFILE)]
[Eilutės pavyzdys iš mano ~/.cvspass parašius „blah“ aukščiau parodytame ]
[pavyzdyje, slaptažodis yra: ]
[:pserver:anoncvs@anoncvs5.usa.openbsd.org:/cvs Au'yc ]
[Po to kai prisijungsite KARTĄ naudojant CVSROOT visos komandos veiks. ]
$ cvs -d :pserver:anoncvs@anoncvs.ca.openbsd.org:/cvs get ksrc-i386 ksrc-common
[Parsiunčia TIK failus, reikiamus i386 branduolio kompiliavimui.]
Štai taip galite atnaujinti savo išeities tekstą:
(Jeigu pasirinkote current):
# cd /usr # cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -P src
(Jeigu pasirinkote pataisymų šaką 5.1 leidiniui):
# cd /usr # cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -rOPENBSD_5_1 -P src
(Jeigu pasirinkote current):
# cd /usr/src # cvs -q up -Pd
(Jeigu pasirinkote pataisymų šaką 5.1 leidiniui):
# cd /usr/src # cvs -q up -rOPENBSD_5_1 -PdKiekvieną kartą paleidžiant šias komandas cvs sinchronizuoja /usr/src medį. Tai nesunaikina jokių lokalių pakeitimų, cvs stengiasi apjungti juos.
# cd /usr/src # cvs -d anoncvs@anoncvs.ca.openbsd.org:/cvs -q up -Pd
Parsisiųsti portus galite panašiai kaip ir sistemą:
(Jeigu pasirinkote current):
# cd /usr # cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -P ports
(Jeigu pasirinkote pataisymų šaką 5.1 leidiniui):
# cd /usr # cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -rOPENBSD_5_1 -P ports
(Jeigu pasirinkote current):
# cd /usr/ports # cvs -q up -Pd
(Jeigu pasirinkote pataisymų šaką 5.1 leidiniui):
# cd /usr/ports # cvs -q up -rOPENBSD_5_1 -Pd
Jeigu norite sukurti diff failą iš lokaliai pataisyto failo (šiuo atveju cd.c) paruoštą pateikimui kartu su klaidos aprašymu:
# cd /usr # cvs diff -u src/sys/scsi/cd.c > /tmp/patch
Daug platesnę informaciją apie CVS naudojimą rasite cvs(1) dokumentacijos puslapyje (įtrauktame kartu su CVS išeities tekstais).
Dėmesio: naudodami cvs turite pasirūpinti patys, kad darbinė direktorija būtų cvs medžio pagrindinė direktorija arba atskira direktorija, tokia, kaip /tmp. Tokios komandos, kaip „get“ gali sukurti subkatalogus darbiniame kataloge ir tolesni atnaujinimai gali rekursyviai ją plėtoti.
Anoncvs paslauga suteikia programuotojas šansą išmokti CVS operacijas ir aktyviai dalyvauti plėtojimo procese prieš gaunant skaitymo-rašymo priėjimą -- kaip rezultatą parodžius meistriškumą ir puikų rezultatą. Taigi žmonės, pateikiantys pataisymus, gali sukurti savo diff failus susietus su CVS medžiu, kurie palengvina integraciją.
PASTABA: vartotojai kurie norite naudoti rsh, jūs pirma turite nustatyti CVS_RSH aplinkos kintamąjį, kuris nurodytų kelią į rsh(1) programą:
$ export CVS_RSH=/usr/bin/rsh
% setenv CVS_RSH /usr/bin/rsh
Pagal nutylėjimą OpenBSD CVS klientas naudoja ssh („saugų apvalkalą“: OpenSSH) prisijungimams prie CVS serverių.
Dauguma CVS serverių nebe palaiko rsh arba pserver dėl saugumo sumetimų. Tokios lokalios problemos, kaip blokavimas ugniasienių arba netobuli protokolo emuliatoriai (tokie kaip slirp) gali kliudyti rsh naudojimui. Tačiau jeigu rsh yra būtinybė galima nustatyti CVS_RSH aplinkos kintamąjį su pilnu keliu iki rsh (paprastai /usr/bin/rsh).
Jeigu lokalios taisykles neleidžia išeinamų prisijungimų į ssh prievadą pagal nutylėjimą (22), prievadas 2022 gali būti naudojamas vietoje jo. Tačiau ne visi anoniminiai CVS priima ssh prisijungimus į šį prievadą. Be to, daugelis anoncvs serverių nebe priima none šifro, kadangi jis išjungtas paskutinėse ssh versijose saugumo sumetimais. Taip pat nenaudokite programinio duomenų spaudimo: CVS tai daro pati.
Kad išvengti sunkumų, paminėtų aukščiau, reikia tinkamai sukonfigūruoti $HOME/.ssh/config:
Host anoncvs.ca.openbsd.org Compression no Port 2022
CVS pateikia šiek tiek per daug pranešimų; galite jų išvengti naudodami aplinkos kintamąjį:
$ export CVS_CLIENT_PORT=-1
Jeigu norite sukurti naują anoniminį CVS veidrodį ir padaryti jį prieinamu viešai prašome susisiekti su anoncvs prižiūrėtojais. Anoncvs veidrodis šiuo metu reikalauja apie 5GB disko vietos (jis ir toliau auga!), ir naudoja iki 32MB operatyviosios atminties kiekvienam anoncvs vartotojui (laikome, kad vartotojas atlieka sudėtingą operaciją; nors paprastesnės operacijos naudoja mažiau resursų, anoncvs vis tiek jų sunaudoja daug daugiau nei ftp). Tokie anoncvs serveriai turi turėti nepriekaištingą tinklo prieigą tai sričiai, kurią turėtų aptarnauti. Taip pat yra dokumentas, kuris aprašo anoncvs serverio sukūrimą.
Svarbu pastebėti, kad medžio atnaujinimas iš leidinio į plėtojamą versiją perkompiliuojant išeities tekstus gali būti ganėtinai sudėtingas dėl priklausomybių, kurios ne visuomet aiškios. Taigi rekomenduojama pirma instaliuoti naujausią kasdieninį kompiliavimą (snapshot) prieš bandant kompiliuoti medį iš išeities tekstų.