[OpenBSD]

Anonymous CVS


Inhoud


Wat is Anonymous CVS?

Anonymous CVS is een methode om uw lokale kopie van de OpenBSD source tree up to date te houden met de wijzigingen die in de huidige OpenBSD broncode gemaakt worden. Naast het volgen van de bleeding edge ontwikkelingen is het ook mogelijk om de errata-patches van een versie te volgen.

Het grote voordeel van Anonymous CVS over andere technieken om broncode te updaten is dat het werkt met een centrale broncode repository of mirror. Dit betekent dat u de volledige set van CVS-commando's tot uw beschikking hebt om uw wijzigingen samen te voegen en te updaten met andere wijzigingen in de broncode en om diffs uit te voeren, histories te wijzigen en andere queries tegen de centrale repository.

Het OpenBSD-project heeft op dit moment vier actieve en twee historische broncode-repositories:

Samenvattend is de ware kracht van Anonymous CVS dat het een "tolerant" broncodecontrolesysteem is - het respecteert wijzigingen die u hebt gemaakt aan uw lokale broncode en doet zoveel mogelijk zijn best om uw gehele source tree te updaten, in plaats van u achter te laten met een lijst van geheimzinnige problemen die opgelost moeten worden voordat u verder kan.

Wat is CVS?

CVS is het broncodecontrolesysteem dat gebruikt wordt om de OpenBSD source tree te onderhouden. Het implementeert een centrale repository voor alle officieel uitgebrachte broncode en wijzigingen, en stelt ontwikkelaars in staat om lokale kopiťťn van de broncode te onderhouden met hun wijzigingen. Er zijn twee toegangsniveaus voor de broncode tree:

De grote kracht van CVS is dat het de mogelijkheid heeft om wijzigingen in de centrale repository en wijzigingen die u in uw lokale kopie aanbrengt intelligent samen te voegen. Dit betekent dat wanneer u een wijziging aanbrengt in een module en een update uitvoert uw wijzigingen niet "weggevaagd" worden, CVS doet daarentegen zijn best om de wijzigingen die aangebracht zijn in de centrale code samen te voegen met de wijzigingen die u in uw lokale kopie hebt gemaakt.

Wanneer de wijzigingen niet volledig samengevoegd kunnen worden heeft CVS een "soft fallback", welke u aangetekende wijzigingen aan uw lokale kopie geeft, een ongewijzigde kopie van uw versie behoudt en vervolgt met het updaten van andere broncode-modules die u aangevraagd hebt.

Beginnen met Anonymous CVS

Hoewel u de hele broncode tree kan downloaden van een AnonCVS server kun u vaak veel tijd en bandbreedte besparen door uw broncode tree "vooraf te laden" met de broncodebestanden van de OpenBSD-CD of een FTP-server. Dit is helemaal het geval als u -stable draait, omdat er relatief weinig bestanden gewijzigd worden tussen -release en -stable.

Om de CVS tree van de CD uit te pakken naar /usr/src (aannemend dat de CD gemount is op /mnt):

    # cd /usr/src
    # tar xzf /mnt/src.tar.gz
    # cd /usr
    # tar xzf /mnt/xenocara.tar.gz
    # tar xzf /mnt/ports.tar.gz
De broncodebestanden die van de FTP-servers gedownload kunnen worden zijn verdeeld in twee bestanden om de downloadtijd zo klein mogelijk te houden voor degene die enkel met een deel van de tree willen werken. De twee bestanden zijn sys.tar.gz, welke alleen de bestanden bevat om de kernel mee te maken, en src.tar.gz welke alle andere "userland" programma's bevat. Over het algemeen wilt u ze echter beide geÔnstalleerd hebben. Aannemend dat de gedownloade bestanden, src.tar.gz, sys.tar.gz en xenocara.tar.gz zich in /usr bevinden:
    # 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

Niet iedereen zal alle bestanden willen uitpakken, maar omdat het systeem gesynchroniseerd moet worden, moeten gewoonlijk alle trees opgezet worden.

U kan ook gewoon cvs(1) gebruiken om een "checkout" van de broncode repository te doen. Dit wordt behandeld in de volgende sectie.

Hierna is /usr/src een mooi checkout-gebied waar alle cvs(1)-commando's zullen werken.

CVS gebruiken om uw source tree op te halen en te Updaten

CVS is ontworpen als een eenvoudige manier om uw broncode op te halen en te updaten. U moet eerst bepalen of u -current of een patch branch wilt volgen. De current branch bevat alle laatste wijzigingen, terwijl de patch branch een formele uitgave bevat plus de patches van errata en kleinere kwesties. Voor meer informatie over deze "flavors" van OpenBSD, zie hier.

Wanneer u eenmaal hebt besloten welke tree u wilt volgen moet u kiezen welke Anonymous CVS-server u gaat gebruiken. Een lijst van deze servers bevindt zich hieronder.

Wanneer u eenmaal hebt besloten welke Anonymous CVS Server u wilt gebruiken kan u beginnen cvs te gebruiken. Zij die CD's hebben kunnen beginnen met de CVS checkout die op de CD staat met de hierboven genoemde methode om de broncode op uw systeem te krijgen. Als u geen CD bij de hand hebt, gebruik dan de methode hieronder om een checkout van de broncode te maken. Deze methode plaatst de OpenBSD source tree in /usr/src.

	# cd /usr; cvs checkout -P src

Bovenstaande zal een checkout uitvoeren van de current source tree . Velen van jullie zullen enkel de broncode van de patch branch willen. Om een checkout uit te voeren van de patch branch moet u een tag specificeren bij uw commando. Bijvoorbeeld:

	# cd /usr; cvs checkout -P -rOPENBSD_4_8 src

Of OPENBSD_4_7 voor 4.7, etc.

De OPENBSD_4_8 tag bevat de broncode van de uitgave plus de reeds toegepaste errata.

Beschikbare Anonymous CVS-Servers

Lees alstublieft de opmerking over ssh vs. rsh hieronder!

N.b.: Als uw server niet op de lijst voorkomt of met onjuiste of onvolledige informatie neem alstublieft contact op met beck@openbsd.org

U kan traceroute(8) gebruiken om uit te zoeken welke server het dichtsbij is. Problemen met een server moeten gemeld worden aan de onderhouder van de server in kwestie.

Crypto broncode ophalen via cvs(1)

BELANGIJKE OPMERKING: Er zijn enkele kwesties rondom cryptografische software waar iedereen bewust van moet zijn:

Voorbeelden van cvs(1)

N.B.: Als u een branch wilt updaten (zoals de patch branch) naar current, geeft u de -A flag meegeven aan cvs, maar anders is deze flag van weinig betekenis. Sommige oudere versies van de OpenBSD-documentatie hebben deze flag aanbevolen in veel voorbeelden. We raden deze flag niet langer aan tenzij absoluut noodzakelijk.

Een voorbeeld van het gebruik van een anoncvs-server zou zijn:

$ cd /tmp
$ cvs -d anoncvs@anoncvs.ca.openbsd.org:/cvs get src/sys/arch/sparc
    [kopieert de bestanden van de repository naar uw machine]
$ cd src/sys/arch/sparc
$ cvs log locore.s
    [toont het commit-log voor het aangegeven bestand]
$ cvs diff -bc -r1.1 -r1.5 locore.s
    [toons de wijzigingen tussen de revisies 1.1 en 1.5]

Om een cvs ``pserver'' te gebruiken (een directe TCP-verbinding in plaats van ssh of rsh gebruiken) moet u eenmaal inloggen:

%$ cvs -d :pserver:anoncvs@anoncvs.ca.openbsd.org:/cvs login
(Logging in to anoncvs@anoncvs1.ca.openbsd.org)
CVS password: anoncvs
    [Dit schrijft een regel naar ~/.cvspass (bestandsnaam overschreven door CVS_PASSFILE.]
    [Een voorbeeldregel voor mijn ~/.cvspass na het intoetsen van 'blah' voor het        ]
    [bovenstaande wachtwoord is:                                                         ]
    [:pserver:anoncvs@anoncvs5.usa.openbsd.org:/cvs Au'yc                                ]
    [Na EEN maal ingelogt te hebben werkt elk commando voor CVSROOT.                     ]
$ cvs -d :pserver:anoncvs@anoncvs.ca.openbsd.org:/cvs get ksrc-i386 ksrc-common
    [Haalt ENKEL dat op wat nodig is om een i386 kernel te herbouwen.                    ]

Hier is hoe iemand die regelmatig anoncvs gebruikt zijn source tree zou updaten:

Om ports te gebruiken, is het gelijkaardig aan src:

In bovenstaand voorbeeld is -q optioneel, alleen bedoeld om de uitvoer van cvs te minimaliseren. Voor degenen die graag schermen vol uitvoer zien kan het weggelaten worden.

Om een diff te maken van een lokaal gepatchte module (hier cd.c) om met een bugreport mee te sturen:

	# cd /usr
	# cvs diff -u src/sys/scsi/cd.c > /tmp/patch

De cvs(1) man pagina (inbegrepen bij de CVS-broncode) heeft veel meer informatie over hoe CVS gebruikt kan worden.

Waarschuwing: Wanneer u cvs gebruikt moet u er goed op letten dat uw huidige directory de root van de tree die u aangeeft is of een aparte plek zoals /tmp. Sommige commando's zoals "get" kunnen een willekeurige sub-tree aanmaken in de huidige directory en een volgende update zal deze sub-tree recursief uitbreiden.

De anoncvs-dienst geeft beginnende ontwikkelaars een kans om CVS te leren en grondig geintroduceerd te worden aan het ontwikkelproces voordat ze "commit"-rechten krijgen -- als een gevolg van het tonen van nuttige vaardigheden en resultaten van hoge kwaliteit zullen ze natuurlijk later ontwikkelaarstoegang krijgen. Ook kunnen mensen die patches aangeven hun "diff"'s tegen de CVS tree genereren wat de integratie makkelijker maakt.

rsh(1) of ssh(1)?

CVS ondersteunt drie manieren om via de CVS-client de CVS-server te benaderen:

N.B.: Voor gebruikers die rsh willen gebruiken, u moet eerst de CVS_RSH omgevingsvariabele laten wijzen naar het rsh(1) programma:

Standaard gebruikt OpenBSD's CVS-client ssh ("secure shell": OpenSSH) om met de CVS-server te praten.

Veel CVS-sites ondersteunen niet langer rsh of pserver voor veiligheidsredenen. Lokale problemen zoals firewalls of imperfecte protocolemulators zoals slirp kunnen ook het gebruik van rsh belemmeren. Wanneer rsh echter gewenst is moet de CVS_RSH omgevingsvariabele wijzen naar rsh (gebruikelijk /usr/bin/rsh).

Als het lokaal beleid belemmert om uitgaande verbindingen te maken naar ssh's standaardpoort van 22 kan daarvoor in de plaats poort 2022 gebruikt worden. Merk op dat echter niet alle anoncvs-servers ssh-verbindingen op deze poort accepteren. Verder accepteren de meeste anoncvs-servers niet langer het none cipher daar het in recente versies van ssh uitgeschakeld is voor veiligheidsredenen. Wees ook niet verleid om compressie aan te zetten: CVS gebruikt al compressie.

Men kan het volgende in het $HOME/.ssh/config configuratiebestand plaatsen om de bovengenoemde valkuilen en restricties te voorkomen:

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

CVS is een beetje lawaaierig bij het opstarten; om het wat in te tomen kan u het volgende doen:

	$ export CVS_CLIENT_PORT=-1

Mirroren van de CVS repository via sup(1)

Gebruikers die de OpenBSD CVS tree zelf willen mirroren kunnen dan nu doen vanaf anoncvs.usa.openbsd.org of anoncvs3.usa.openbsd.org (dit zijn verschillende machines). Merk op dat dit de cvs tree is, niet de uitgecheckte broncode. Dit is alleen zinvol als u zelf snelle cvs operaties wilt doen (diff, annotate, enz.) of als u meerdere source trees hebt en u de data slechts eenmaal wilt overbrengen (u kunt dan een checkout doen vanaf uw lokale cvs mirror).

Een voorbeel supfile zou kunnen zijn:

	cvs host=anoncvs.usa.openbsd.org hostbase=/ base=/home delete

Dit zou de cvs tree mirroren in /home/cvs en de sup gegevensbestanden komen terecht in /home/sup. The volledige OpenBSD cvs tree is momenteel ongeveer 5 GB groot en zal, uiteraard, blijven groeien.

Een anoncvs mirror opzetten

Als u een nieuwe anoncvs mirror site wilt opzetten en openstellen voor het publiek, neem dan alsjeblieft contact op met de anoncvs-onderhouder. Anoncvs mirrors vereisen momenteel ongeveer 5 GB schijfruimte (en dit zal toenemen!) en gebruiken tot 32 MB swap per anoncvs-gebruiker (aannemend dat de gebruiker een grote operatie uitvoert; alhoewel kleinere operaties minder bronnen gebruikt heeft anoncvs nog steeds meer impact dan ftp of sup). Zulke anoncvs-machines zouden een zeer goede netwerkverbinding moeten hebben voor het gebied dat ze zullen dienen. Een document die de opzet van anoncvs-servers beschrijft is beschikbaar.

Laatste opmerkingen

Na het upgraden van uw source tree zou u de opmerkingen bovenaan /usr/src/Makefile moeten lezen voordat u een build probeert. Ook zou u indien mogelijk een nieuwe kernel moeten bouwen voordat u een make build doet. In sommige gevallen kan het noodzakelijk zijn om het config programma te herbouwen en te installeren voordat u de kernel kan bouwen. Als config GENERIC faalt is dit waarschijnlijk het geval.

Het is belangrijk om op te merken dat het upgraden van een release naar de current tree door de broncode te herbouwen vrij lastig kan zijn door afhankelijkheden die vaak niet voor de hand liggen. Daarom wordt aanbevolen dat u eerst de laatste snapshot installeert voordat u een tree bouwt uit broncode.


OpenBSD www@openbsd.org
$OpenBSD: anoncvs.html,v 1.101 2011/01/16 11:10:26 ajacoutot Exp $