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 vijf 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.
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 jouw 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.
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/XF4.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 en
sys.tar.gz zich in /usr bevinden:
# 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
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 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_3_8 src
Of OPENBSD_3_7 voor 3.7, etc.
De OPENBSD_3_8 tag bevat de broncode van de uitgave plus de errata reeds toegepast.
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.
BELANGIJKE OPMERKING: Er zijn enkele kwesties rondom cryptografische software waar iedereen bewust van moet zijn:
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:
% setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs
% cd /tmp
% cvs get src/sys/arch/sparc
[kopieert de bestanden van de repository naar uw machine]
% cvs log src/sys/arch/sparc/sparc/locore.s
[toont het commit-log voor het aangegeven bestand]
% cvs diff -bc -r1.1 -r1.5 src/sys/arch/sparc/sparc/locore.s
[toons de wijzigingen tussen de revisies 1.1 en 1.5]
% setenv CVSROOT :pserver:anoncvs@anoncvs.ca.openbsd.org:/cvs
% 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 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:
(Wanneer u current volgt):
# setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs # cd /usr # cvs -q get -P src
(Wanneer u de patch branch voor 3.8 volgt):
# setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs # cd /usr # cvs -q get -rOPENBSD_3_8 -P src
(Wanneer u current volgt):
# cd /usr/src # cvs -q up -Pd
(Wanneer u de patch branch voor 3.8 volgt):
# cd /usr/src # cvs -q up -rOPENBSD_3_8 -PdElke keer u dit uitvoert zal het uw /usr/src tree synchroniseren. Het zal geen lokale wijzigingen vernietigen, maar zal proberen de wijzigingen samen te voegen.
# cd /usr/src # cvs -d $CVSROOT -q up -Pd
Om ports te gebruiken, is het gelijkaardig aan src:
(Wanneer u current volgt):
# setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs # cd /usr # cvs -q get -P ports
(Wanneer u de patch branch voor 3.8 volgt):
# setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs # cd /usr # cvs -q get -rOPENBSD_3_8 -P ports
(Wanneer u current volgt):
# cd /usr/ports # cvs -q up -Pd
(Wanneer u de patch branch voor 3.8 volgt):
# cd /usr/ports # cvs -q up -rOPENBSD_3_8 -Pd
of om een diff te maken van een lokaal gepatchde 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.
N.B.: Voor gebruikers die rsh willen gebruiken, u moet eerst de CVS_RSH omgevingsvariabele laten wijzen naar het rsh(1) programma:
$ export CVS_RSH=/usr/bin/rsh
% setenv CVS_RSH /usr/bin/rsh
Standaard gebruikt OpenBSD's CVS-client ssh ("secure shell": OpenSSH) om met de CVS-server te praten.
Veel CVS-sites ondersteunen niet langer rsh 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:
% setenv CVS_CLIENT_PORT -1
Gebruikers die de OpenBSD CVS tree zelf willen mirroren kunnen dat nu doen via anoncvs.usa.openbsd.org of anoncvs3.usa.openbsd.org (dit zijn verschillende machines). Merk op dat dit de cvs tree is, niet een checkout van een source tree. Het is alleen nuttig als u snel cvs-handelingen wilt uitvoeren (diff, annotate, etc) of als u meerdere source trees hebt en u wilt de data maar een keer overdragen (u kan dan een checkout doen van een tree van uw lokale cvs-mirror).
Een voorbeeld van supfile kan zijn:
cvs host=anoncvs.usa.openbsd.org hostbase=/ base=/home delete
welke de cvs tree mirrort naar /home/cvs en de sup databestanden in /home/sup komen. De volledige OpenBSD cvs tree is op dit moment 2.5GB groot en zal uiteraard blijven groeien.
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 ongeveer 2.2GB schijfruimte en gebruiken tot 32MB 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.
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 je een tree bouwt uit broncode.