[OpenBSD]

Anonymous CVS


Tartalomjegyzék


Mi az Anonymous CVS?

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 és egyéb lekérdezések végrehajtására a központi raktárral szemben.

Az OpenBSD projekt jelenleg öt 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 hibajelzéseket hagyna hátra, melyeket ki kellene javítani a további használat előtt.

Mi a CVS?

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, amelyben elvégezhetik a változtatásaikat. A forrásfa elérésének két szintje létezik:

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 megtartva az eredeti, módosítatlan verziót, a többi kért forrás modul aktualizálása viszont folytatódik.

Az Anonymous CVS használatának megkezdése.

Letöltheted ugyan az egész forrásfát az AnonCVS kiszolgálóról is, de gyakran időt és sávszélességet takaríthatsz meg ha előre letöltöd a fát a fájlokkal az OpenBSD CD-ről vagy egy FTP kiszolgálóról. Ez különösen igaz -stable futtatása esetén, mivel aránylag kevés fájl változik meg a -release és a -stable között. A CVS fa kibontása a CD-ről az /usr/src katalógusba (feltételezve, hogy a CD a /mnt alá van csatlakoztatva):

    # cd /usr/src; tar xzf /mnt/src.tar.gz
    # cd /usr; tar xzf /mnt/XF4.tar.bz
    # tar xzf /mnt/ports.tar.gz
Az FTP kiszolgálókról letölthető forrás fájlok két különálló fájlba vannak szétválasztva, a letöltési idő csökkentése miatt, azok számára akik csak a fa egy részével kívánnak dolgozni. A két fájl a sys.tar.gz, amely a rendszermag készítéséhez szükséges fájlokat tartalmazza, és a src.tar.gz, amely az egyéb "userland" segédprogramokat tartalmazza. Általában azonban, mindkettőt telepíteni akarod. Feltételezve, hogy a letöltött fájlok a src.tar.gz és a sys.tar.gz az /usr katalógusban vannak:
    # cd /usr/src
    # tar xzf ../sys.tar.gz
    # tar xzf ../src.tar.gz
    # cd /usr
    # tar xzf XF4.tar.gz
    # tar xzf ports.tar.gz

Nem mindenki akarja kicsomagolni az összes fájlkészletet, de mivel a rendszert szinkronban kell tartani, ezért általában szükséges minden fát beállítani.

A cvs(1) segítségével is letöltheted ("checkout") a teljes forrás raktárt (repository). Erről szól a következő fejezet.

Ezután az /usr/src katalógus egy olyan "checkout" hely lesz, amelyen belül használhatjuk az összes cvs(1) parancsot.

A forrásfa letöltése és frissítése a CVS segítségével.

A CVS-t úgy tervezték, hogy a forráskódot egyszerűen lehessen vele megszerezni és frissíteni. Először is el kell döntened, hogy a current-et vagy a patch ágat akarod-e követni. A current fa a legfrissebb változásokat, míg a patch ág a hivatalos kiadásokat és azok hibajegyzékben felsorolt, illetve egyéb kisebb hibáinak javításait tartalmazza. Az OpenBSD ezen úgynevezett "ízeiről" (flavors) további információkat ezen az oldalon találsz.

Ha eldöntötted melyik fát kívánod követni ki kell választani egy Anonymous CVS szervert. Ezen szerverek listáját megtalálod alább.

Miután kiválasztottad a használni kívánt Anonymous CVS szervert, elkezdheted 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 rendelkezel CD-vel az alábbi módon juthatsz 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_3_8 src

Vagy OPENBSD_3_7 a 3.7-as verzióhoz, stb.

Az OPENBSD_3_8 címke tartalmazza a release verzió forráskódját és a hibajegyzék javításait.

Anonymous CVS szerverek.

Kérlek tekintsd meg a lentebb található megjegyzést az ssh és rsh közti különbségekről!

Megjegyzés: Ha a szervered hibás adatokkal van itt feltüntetve kérlek írj a beck@openbsd.orgcímre!

A traceroute(8) paranccsal tudod kideríteni, hogy melyik szerver van hozzád közelebb. A szerverekkel kapcsolatos problémáid kérlek intézd annak karbantartójához

A kriptografikus kód megszerzése cvs(1)-szel.

FONTOS MEGJEGYZÉS: A kriptografikus programokkal kapcsolatban van pár kérdés, amiről nem árt tudni:

Példák a cvs(1) használatára.

MEGJEGYZÉS: Ha egy ágat akarsz frissíteni (ilyen a patch ág) current-re (legfrissebb), megadhatod az -A kapcsolót a cvsnek. Néhány régebbi OpenBSD dokumentáció javasolta ennek a használatát a példákban, azonban többé nem javasoljuk az alkalmazását, ha csak nem feltétlenül szükséges.

Egy anoncvs szervert a következőképpen használhatunk: $ cd /tmp $ cvs -d anoncvs@anoncvs.ca.openbsd.org:/cvs get src/sys/arch/sparc [átmásolja a távoli szerverről a fájlokat a számítógépedre] $ cd src/sys/arch/sparc $ cvs log locore.s [megmutatja az adott fájl változásokkal kapcsolatos naplóját] $ cvs diff -bc -r1.1 -r1.5 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:

$ cvs -d :pserver:anoncvs@anoncvs.ca.openbsd.org:/cvs login
(Belépés anoncvs@anoncvs1.ca.openbsd.org-re)
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                         ]
    [az első bejelenkezés után már minden további művelet megy a fenti CVSROOT-tal]
$ cvs -d :pserver:anoncvs@anoncvs.ca.openbsd.org:/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:

A ports használatához az src-hez hasonlóan kell eljárnunk:

A fenti példában a -q elhagyható, csak azért alkalmaztuk, hogy a cvs kimenetét csökkentsük.

Egy diff készítése a helyileg megpatchelt modul esetén (itt cd.c) egy bugriporthoz 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.

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.

rsh(1)-t vagy ssh(1)-t használjak?

CVS háromféle elérést támogat a CVS kiszolgáló és a CVS kliens között:

MEGJEGYZÉS: Azoknak a felhasználóknak, akik az rsh-t akarják használni, először be kell állítaniuk a CVS_RSH környezeti változót, hogy az rsh(1) programra mutasson:

Alapértelmezésként az OpenBSD CVS kliense az ssh-t használja ("secure shell": OpenSSH) a CVS szerverrel való kommunikációra.

Biztonsági okok miatt sok CVS szerver nem támogatja többé az rsh-t. Az olyan helyi problémák mint a tűzfalak, vagy a hibás protokoll emulátorok, mint a slirp szintén megnehezíthetik az rsh használatát. Amennyiben mégis az rsh-t szeretné használni, a CVS_RSH környezeti változónak az rsh-ra kell mutatnia (általában /usr/bin/rsh).

Ha a helyi szabályok tiltják az ssh alapértelmezett 22-es portját, a 2022-es port még használható lehet. Fontos tudni, hogy ez a port nem minden anoncvs szervernél alkalmazható. Továbbá a legtöbb anoncvs szerver nem fogadja el a none titkosítást, mivel ez biztonsági okok miatt le van tiltva az újabb ssh verziókban. A tömörítés bekapcsolása felesleges, a CVS önmagában is végez tömörítést.

A fenti problémák kikerülésére például a következőket lehet megadni a $HOME/.ssh/config fájlban:

	Host anoncvs.ca.openbsd.org
	Compression no
	Port 2022

Ha a CVS által küldött rengeteg információ zavar minket, a következőt tehetjük:

	$ export CVS_CLIENT_PORT=-1

A CVS raktár tükrözése sup(1)-pal.

Azok, akik az OpenBSD CVS fát szeretnék tükrözni, azt az anoncvs.usa.openbsd.org-ról, vagy az anoncvs3.usa.openbsd.org-ról tehetik meg (ezek különböző számítógépek). Figyelembe kell azonban venni, hogy ez a cvs fa, nem az ebből nyert forrásfa. Használata akkor ajánlott, ha gyors cvs műveletek végrehajtására (diff, annotate, stb) van szükség, vagy ha több forrásfa van a helyi gépen és az új adatokat csak egyszer akarja letölteni (a helyi cvs tükörből később ezeket lehet frissíteni).

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 jelenleg körülbelül 2,5 gigabyte méretű és természetesen tovább fog nőni.

Anoncvs tükör felállítása.

Ha egy új anoncvs tükörszervert kívánsz felállítani és nyilvánossá kívánod tenni a nagyközönség részére, kérlek vedd fel a kapcsolatot az anoncvs karbantartójával. Az anoncvs tükrök körülbelül 2,2 GB tárhelyet igényelnek és maximum 32 MB-nyi további helyet felhasználónként (feltételezve, hogy a felhasználó nagy műveletet hajt végre, a kisebbek kevesebb erőforrást igényelnek, de mindenképpen többet mint az FTP vagy a SUP). 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.

Záró megjegyzések

A forrásfa frissítése után érdemes elolvasni a /usr/src/Makefile tetején találhatő megjegyzéseket, továbbá a make build kiadása előtt érdemes új kernelt fordítani ha lehetséges. Néhány esetben szükséges lehet a config program újrafordítása és -installálása is. Ha a config GENERIC hibázik valószínűleg ez a probléma.

Fontos megjegyezni, hogy egy kiadásról a current fára újrafordítással frissíteni nem mindig egyszerű a függőségek miatt melyek nem mindig egyértelműek. Ajánlott először a legutolsó snapshotra frissíteni az újrafordítást megelőzően.


OpenBSDwww@openbsd.org
$OpenBSD: anoncvs.html,v 1.53 2006/04/08 15:13:13 saad Exp $