Az Anonymous CVS egy módszer, amivel az OpenBSD forrásfa helyi másolatával követhetjük az éppen aktuális OpenBSD fában történt változásokat, továbbá hozzájuthatunk a kiadásokhoz készült patchekhez is.
Az Anonymous CVS legnagyobb elõnye a többi technikával szemben az, hogy egy központi forráskód raktárból, vagy azok tükreibõl dolgozik. Ez azt jelenti, hogy a CVS parancsok teljes palettája rendelkezésre áll a saját változtatások egyéb változásokkal való összevetésére, illetve azok frissen tartására. Lehetõség nyílik különbségek (diff), változási listák es egyéb lekérdezések végrehajtására a központi raktárral szemben.
Az OpenBSD projekt jelenleg három fõ forrásraktárral rendelkezik:
Összefoglalásként elmondhatjuk, hogy az Anonymous CVS igazi erõsségét az adja, hogy egy "toleráns" forráskód ellenõrzõ rendszer - figyelembe veszi a változtatásokat a helyi forrásokban és mindent elkövet hogy frissítse a teljes forrásfát, ahelyett, hogy misztikus hibákat hagyna hátra.
A CVS egy forráskód ellenõrzõ rendszer, amit az OpenBSD forrásfájának karbantartására használunk. Egy központi raktárt használ az összes hivatalosan megjelentetett kiadás forráskódjának és az abban történt változásoknak a tárolására, és lehetõvé teszi, hogy a fejlesztõk rendelkezzenek ennek másolatával, amiben a változtatásaikat kipróbálhatják. Az "írási joggal" rendelkezõ fejlesztõk a változtatásokat érvényesíteni tudják az OpenBSD forrásfában, míg az "Anonymous CVS" felhasználók "olvasási joggal" rendelkeznek, ami lehetõvé teszi számukra, hogy a saját másolataikat naprakészen tudják tartani és lekérdezéseket tudjanak végrehajtani a központi raktárban.
A CVS fõ erõssége abban rejlik, hogy képes a fejlesztõ saját másolatában történt változásokat önállóan alkalmazni a központi raktárra. Ez azt jelenti, hogyha egy modulban változtatunk és frissítünk a CVS megpróbálja ezeket a változásokat minél tökéletesebben beleolvasztani a központi forrásokba.
Abban az esetben ha a változásokat nem sikerül teljesen integrálni a CVS egy ún. "soft fallback" lehetõséget biztosít, ami annyit jelent, hogy megkapjuk a helyi másolatban történt változások listáját és az eredeti, módosítatlan verziót.
A CVS legfrisseb verziója elérhetõ a Cyclic-tõl. Az 1.6-osnál régebbi verziók nem ajánlottak. Ha Ön már rendelkezik telepített OpenBSD-vel a CVS elérhetõ a rendszerébõl.
Akik rendelkeznek OpenBSD CD-vel észrevehették rajta a CVS/ könyvtárakat. Ennek az az oka, hogy a CD tulajdonképpen az OpenBSD src modul egy kiragadott része, amibõl késõbb frissíteni lehet a rendszert. Ha ezt a fát használjuk az elsõ frissítés sokkal gyorsabban fog lezajlani, hisz nem kell az egész OpenBSD forrásfát letölteni, csak a változásokat. Két módja van a CD használatának:
# cd /mnt; pax -rw CVS Makefile [a-z]* /usr/src
# mount -t union -o -b /mnt /usr/src
Azok akik nem rendelkeznek CD-vel a cvs(1)-t használhatják a forrásfa megszerzésére. Ennek menetét a következõ fejezetben tárgyaljuk.
Ezután az /usr/src tartalmazni fogja a forráskódot, amiben az összes cvs(1) parancsot használhatjuk.
A CVS-t arra tervezték, hogy a forráskódot egyszerûen lehessen vele frissíteni. Elõször is el kell dönteni, hogy a current-et vagy egy patch ágat akarunk-e követni. A current fa a legfrissebb változásokat, míg a patch ág a kiadásokat és azok hibajegyzékben felsorolt javításait tartalmazza.
Ha eldöntötte melyik fát kívánja követni ki kell választania egy Anonymous CVS szervert. Ezen szerverek listáját megtalálja alább. A szerverek elérésére 3 mód van.
MEGJEGYZÉS: - Az ssh használatához a CVS_RSH változót ssh-ra kell állítani.
$ export CVS_RSH="/usr/bin/ssh"
$ setenv CVS_RSH /usr/bin/ssh
Miután kiválasztotta a használni kívánt Anonymous CVS szervert és a kapcsolódás típusát elkezdheti használni a cvs-t. Akik rendelkeznek az OpenBSD CD-vel frissíthetik az azon található forrásokat a fent említettek szerint. Ha nem rendelkezik CD-vel az alábbi módon juthat hozzá a forráskódhoz. Ezzel a módszerrel a forrásfa az /usr/src-be kerül.
# cd /usr; cvs checkout -P src
A fenti parancs a current forrásfát fogja letölteni a /usr/src-be. Sokak számára azonban a patch ág használata a kedvezõbb, ennek letöltése a következõképpen lehetséges:
# cd /usr; cvs checkout -P -rOPENBSD_2_7 srcVagy OPENBSD_2_6 a 2.6-os verzióhoz, stb.
Jelenleg csak az OPENBSD_2_7 címke tartalmazza az adott verzió forráskódját és a hibajegyzék javításait.
Két szintû forrásfa hozzáférés létezik:
Kérem tekintse meg a megjegyzést az ssh és rsh közti különbségekrõl alább!
Megjegyzés: Ha az Ön szervere hibás adatokkal van itt feltüntetve kérem írjon a beck@openbsd.org címre!
A traceroute(8) paranccsal tudja kideríteni, hogy melyik szerver van Önhöz közelebb. A szerverekkel kapcsolatos problémáit kérjük intézze annak karbantartójához
FONTOS MEGJEGYZÉS: A kriptografikus programokkal kapcsolatban van pár kérdés, amirõl nem árt tudni:
Egy CVS szervert a következõképpen használhatunk:
% setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs
% cd /tmp
% cvs get src/sys/arch/sparc
[átmásolja a távoli szerverrõl a fájlokat az Ön számítógépére]
% cvs log src/sys/arch/sparc/sparc/locore.s
[megmutatja az adott fájl változásokkal kapcsolatos naplóját]
% cvs diff -bc -r1.1 -r1.5 src/sys/arch/sparc/sparc/locore.s
[megmutatja a változásokat az 1.1 és az 1.5-ös verziók között]
A cvs `pserver'' használatához (az ssh vagy rsh helyett közvetlen kapcsolat) elõször be kell lépni:
[ *FONTOS* 1.8-as, vagy annál újabb cvs-re van szükség ehhez ]
% setenv CVSROOT :pserver:anoncvs@anoncvs.ca.openbsd.org:/cvs
% cvs login
(Logging in to anoncvs@anoncvs1.ca.openbsd.org)
CVS password: anoncvs
[egy sorral bõvíti a ~/.cvspass-t (a fájlnév állítható: CVS_PASSFILE). ]
[Miután fent 'blah'-t írok jelszónak a ~/.cvspass így néz ki: ]
[:pserver:anoncvs@anoncvs5.usa.openbsd.org:/cvs Au'yc ]
[miután egyszer bejelentkeztünk minden további mûvelet a fenti CVSROOT-tal]
[mûködni fog... ]
% cvs get ksrc-i386 ksrc-common
[csak az i386-os kernel újrafordításához szükségeseket szedi le ]
A következõképpen tudjuk frissen tartani a forrásfát:
(amennyiben a current-et akarja követni):
# setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs # cd /usr # cvs -q get -PA src
(amennyiben a 2.7-es patch ágat akarja követni):
# setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs # cd /usr # cvs -q get -rOPENBSD_2_7 -P src
(amennyiben a current-et akarja követni):
# cd /usr/src # cvs -q up -PAd
(amennyiben a 2.7-es patch ágat akarja követni):
# cd /usr/src # cvs -q up -rOPENBSD_2_7 -PdMinden alkalommal, mikor lefuttatjuk ezeket a parancsokat, szinkronizáljuk az /usr/src fát. A helyi változásokat nem semmisíti meg, inkább megpróbálja összefûzni a kettõt. Ha használ obj könyvtárakat (nem obj szimbolikus linkeket) hasznosnak találhatja a "-I obj" opciót a cvs parancssorban, ez ugyanis meggátolja a cvs-t, hogy minden ilyen könyvtárnál hibaüzenetekkel bombázzon.
-A
opciót elhagyja a cvs paraméterei közül, mert ha ezt nem
teszi meg a current-et fogja követni.
(amennyiben a current-et akarja követni):
# cd /usr/src # cvs -d $CVSROOT -q up -PAd
(ha a patch ágat akarja követni):
# cd /usr/src # cvs -d $CVSROOT -q up -Pd
A ports használatához az src-hez hasonlóan kell eljárnunk:
# setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs # cd /usr # cvs -q get -PA ports
# cd /usr # cvs -q up -PAd ports
Egy diff készítése a helyileg megpatchelt modul esetén (itt cd.c) egy bugreporthoz csatolva:
# cd /usr # cvs diff -u src/sys/scsi/cd.c > /tmp/patch
A CVS(1) manlap (a CVS forrásban is megtalálható) sokkal több információt tartalmaz a CVS használatáról.
X11 forrásfa
Az anoncvs tükrök az OpenBSD X11 forrásfát is tartalmazzák. A fenti
receptek alkalmazhatók a második CD-n található források frissítésére.
Másolja, vagy használja a union mount-ot az X11 források /usr/X11
alatt való eléréséhez:
# cd /mnt; cp -Rp X11 /usr
# mount -t union -o -b /mnt/X11 /usr/X11
# cd /usr/X11
# cvs -q update -PAd
Figyelmeztetés: A cvs használata közben figyelni kell arra, hogy az aktuális könyvtár a forrásfa gyökere, vagy egy másik hely, például a /tmp. Néhány parancs, például a "get" képes tetszõleges alkönyvtárakat létrehozni az aktuális könyvtárban és egy késõbbi frissítés kitörölheti ezeket.
Az anoncvs szolgáltatás lehetõséget biztosít a kezdõ fejlesztõknek a CVS megtanulásához mielõtt megkapnák a "commit" hozzáférésüket. Ezen felül akik patcheket szeretnének közzétenni könnyedén elkészíthetik a diffeket a CVS fához képest, így jelentõsen megkönnyítik az integrációt.
Anoncvs: rsh vagy ssh
Alapértelmezésként a CVS kliens rsh-t használ a CVS szerverrel való
kommunikációra. Számos CVS szerver nem támogatja tovább az rsh-t biztonsági
megfontolásokból és egy helyi probléma, mint például egy tûzfal is
meggátolhatja ennek használatát.
Az alternatíva a "secure shell" használata, mint például az
OpenSSH (*INGYENES*) vagy az
ssh (üzleti).
Az OpenBSD anoncvs raktárak az SSH1 protokollt támogatják az SSH2 helyett annak licenszelési problémái miatt.
Ha az ssh telepítve van a CVS_RSH környezeti változót úgy kell beállítani, hogy az ssh-ra mutasson (ez általában az /usr/bin/ssh). Ha a tûzfal meggátolja a kapcsolódást a 22-es portra használja a 2022-t.
Ne kapcsolja be a tömörítést, mert a CVS önmagában is megteszi ezt. A következõhöz hasonló beállítást ajánlunk a $HOME/.ssh/config fájlban. Érdemes megjegyezni, hogy nem az összes anoncvs szerver használható a 2022-es porton, továbbá hogy a legtöbb anoncvs szerver nem fogadja el a none ciphert, azaz a kódolás nélküli átvitelt.
Host anoncvs.ca.openbsd.org Port 2022
A CVS kicsit zajosan indul, a lecsendesítéséhez a következõt lehet tenni:
setenv CVS_CLIENT_PORT -1
Ha váltani kíván egy másik CVS szerverre (mert amit használni szokott éppen nem mûködik, stb) a következõ környezeti változót kell beállítania:
setenv CVS_IGNORE_REMOTE_ROOTEzen felül szükség lesz a -d opcióra is, ahogy azt feljebb említettük.
Azok, akik az OpenBSD CVS fát szeretnék tükrözni az anoncvs.usa.openbsd.org-ról tehetik meg. Figyelembe kell azonban venni, hogy ez a cvs fa, nem az ebbõl nyert forrásfa. Csak gyors cvs mûveletekre használható (diff, annotate, stb).
Egy példa supfile így nézhet ki:
cvs host=anoncvs.usa.openbsd.org hostbase=/ base=/home delete
ami tükrözi a cvs fát a /home/cvs könyvtárba a sup adatfájlokat pedig a /home/sup-ba teszi. A teljes OpenBSD cvs fa közel egy gigabájt nagyságú.
Ha egy új anoncvs tükörszervert kíván felállítani kérem vegye fel a kapcsolatot az anoncvs karbantartójával. Az anoncvs tükrök körülbelül 1 GB tárhelyet igényelnek és maximum 4 MB-nyi további helyet felhasználónként (feltételezve, hogy a felhasználó nagy mûveletet hajt végre, míg a kisebbek kevesebb erõforrást igényelnek). Az anoncvs szerverek kitûnõ hálózati kapcsolattal kell, hogy rendelkezzenek arra a területre nézve, ahol a szolgáltatást biztosítják. Elérhetõ egy az anoncvs szerverek felállításáról szóló leírás is.
Fontos megjegyezni, hogy egy kiadásról a current fára újrafordítással frissíteni nem mindig egyértelmû. Ajánlott elõször a legutolsõ snapshotra frissíteni az újrafordítást megelõzõen.