Anonym CVS är en metod för att hålla din lokala kopia av OpenBSD-källkodsträdet uppdaterad mot ändringarna som görs i -current OpenBSD-källkoden.
Den största fördelen med anonym CVS över andra källkods-uppdateringstekniker är att denna jobbar direkt mot en central källkods-förvaringsplats eller spegel. Det betyder att du har ett stort antal CVS kommandon till ditt förfogande att använda för att kontrollera sammanslagningar och uppdatera dina ändringar med andra källkodsändringar och köra diff:ar, ändra historier och andra frågor mot den centrala förvaringsplatsen.
OpenBSD projektet har för tillfället tre stycken huvudförråd:
För att sammanfatta, den riktiga styrkan med att använda anonym CVS är att det är ett "tolerant" källkodskontrolleringssystem - det respekterar ändringar som du har gjort till ditt lokala arkiv och gör "sitt bästa" för att uppdatera hela ditt källkodsträd, istället för att lämna en lista till dig med svårbegripliga problem som måste lösas innan man kan fortsätta.
CVS är källkodskontrolleringssystemet som används för att ta hand om OpenBSD:s källkodsträd. Det implementerar ett centralt "förråd" för all officiellt släppt källkod och alla ändringar, medans den tillåter utvecklare att tillhandahålla lokala kopior av källkoden med deras pågående ändringar. Utvecklare med skrivrättigheter kan commit:a ändringar direkt till OpenBSD:s källkodsträd, medans anonyma CVS användare har läsrättigheter och kan hålla deras lokala kopior av kod uppdaterad och göra förfrågningar mot det centrala förrådet.
CVS största fördel är att den klarar av att göra intelligenta ihopslagningar med ändringar till det centrala förrådet med förändringar som du gjort till ditt lokala arkiv. Det betyder att om du gör en ändring i en modul och kör en update, så kommer inte dina dina ändringar bli "bortblåsta", istället kommer CVS göra sitt bästa med att försöka slå samman ändringarna gjorda på det centrala förrådet med de ändringar som du har gjort på din lokala kopia.
I det fallet att ändringarna inte kan bli helt ihopslagna erbjuder CVS en "mjuk reservutväg" i den bemärkelsen att den erbjuder dig kommenterade ändringar i din lokala kopia, den bevarar en omodifierad version av din kopia och fortsätter att uppdatera andra källmoduler som du anhöll om.
Den senaste versionen av CVS finns tillgänglig hos Cyclic. Versioner tidigare än 1.6 rekommenderas inte, och fungerar eventuellt inte. Om du redan har OpenBSD installerat, finns CVS inkluderat.
Folk som äger en OpenBSD CD kan ha sett CVS/ katalogen på den. Den finns där av ett skäl; CD:n har en checkout av OpenBSD:s src modul som är möjlig att fortsätta uppdatera ifrån. Genom att använda detta träd resulterar det i en mycket snabbare första CVS update istället för en färsk checkout av hela OpenBSD:s källkodsträd. Det finns två sätt att använda denna CD:
# cd /mnt; pax -rw CVS Makefile [a-z]* /usr/src
# mount -t union -o -b /mnt /usr/src
För personer som inte har en CD till hands, använd cvs(1) för att "checkout:a" källkoden till dig. Detta diskuteras i nästa sektion.
Efter det här kommer /usr/src/ vara en fin liten utchecknings-area där alla cvs(1) kommandon kommer att fungera som vanligt.
CVS designades till att vara ett simpelt verktyg för att få tag på och uppdatera ens källkod, därför är det inte så mycket involverat för att kunna klara av att göra det. Du måste först bestämma dig om du vill följa current eller en patch-gren. Current trädet innehåller alla upp-till-minuten ändringar, medans en patch-gren innehåller en föredetta utgåva plus att patch:erna från errata redan är medtagna.
När du väl har bestämt vilket träd du vill följa, behöver du välja vilken anonym CVS server du ska använda. En lista på dessa servrar finns nedan. Notera dock, att det finns 3 olika sätt att komma åt dessa servrar.
OBSERVERA: - Till användare som önskar använda ssh; du måste först sätta CVS_RSH variabeln till platsen där ssh finns:
$ export CVS_RSH="/usr/bin/ssh"
$ setenv CVS_RSH /usr/bin/ssh
När du väl har valt vilken anonym CVS server du vill använda, och vilken metod, så kan du börja använda cvs. De av er som äger en CD-skiva har redan en CVS checkout på den, och ni kan börja använda den genom metoden som beskrevs ovan. Om du inte har en CD att tillgå, använd metoden nedan för att checka ut källkoden. Denna metod lägger OpenBSD källkodsträdet i /usr/src/.
# cd /usr; cvs checkout src
Ovanstående kommer att checka ut current källkodsträdet. Många av er vill bara köra release-källkod, speciellt om du patchar ditt system. För att checka ut release-källkoden måste du specifiera ett märkord tillsammans med ditt kommando. Till exempel:
# cd /usr; cvs checkout -P -rOPENBSD_2_7 srcEller OPENBSD_2_6 för 2.6, osv.
För tillfället är det bara OPENBSD_2_7 som innhåller utgåvokällkoden tillsammans med errata:n redan medtagen.
Det finns två nivåer av tillgång till källkodsträdet:
Var god uppmärksamma noteringen om ssh vs. rsh nedan!
Observera: Om din server finns listad här med felaktig eller okänd information var vänlig kontakta beck@openbsd.org.
Du kan använda traceroute(8) för att finna den server som ligger närmast dig. Problem med en enskild server ska rapporteras till underhållaren av den specifika servern.
OBSERVERA: Det finns en del frågor angående kryptografisk mjukvara som alla borde vara medvetna om:
Ett exempel skulle kunna vara:
% setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs
% cd /tmp
% cvs get src/sys/arch/sparc
[ kopierar filerna från förrådet till din maskin. ]
% cvs log src/sys/arch/sparc/sparc/locore.s
[ visar commit loggen för den valda filen. ]
% cvs diff -bc -r1.1 -r1.5 src/sys/arch/sparc/sparc/locore.s
[ visar ändringarna mellan revision 1.1 och 1.5. ]
För att kunna använda en cvs "pserver"
(en direkt tcp anslutning istället för att använda ssh
eller rsh) måste du logga in först:
För att regelbundet uppdatera ditt källkodsträd
genom anoncvs kan man göra på följande sätt:
(Om du följer current):
(Om du följer patch-grenen för 2.7):
(Om du följer current):
(Om du följer patch-grenen för 2.7):
(Om du följer current):
(Om du följer en patch-gren):
För att använda ports, är det som
med src:
Eller för att göra en diff mellan en lokalt patchad modul (här
cd.c) för att inkludera i en buggrapport:
[ *OBS* Du måste använda cvs version 1.8 eller högre för att göra det här. ]
% setenv CVSROOT :pserver:anoncvs@anoncvs.ca.openbsd.org:/cvs
% cvs login
(Loggar in på anoncvs@anoncvs1.ca.openbsd.org)
CVS password: anoncvs
[ Det här skriver en rad till ~/.cvspass (filnamnet kan ändras genom att sätta CVS_PASSFILE). ]
[ En exempelrad från min ~/.cvspass efter att ha skrivit "blah" i ovanstående: ]
[ lösenordet är: ]
[ :pserver:anoncvs@anoncvs5.usa.openbsd.org:/cvs Au'yc]
[ ...efter att ha loggat in EN GÅNG; alla andra försök att använda den ovanstående CVSROOT kommer att fungera. ]
% cvs get ksrc-i386 ksrc-common
[ låter dig grabba ENDAST det som är absolut nödvändigt för att bygga om en i386 kärna. ]
# setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs
# cd /usr
# cvs -q get -PA src
# setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs
# cd /usr
# cvs -q get -rOPENBSD_2_7 -P src
# cd /usr/src
# cvs -q up -PAd
# cd /usr/src
# cvs -q up -rOPENBSD_2_7 -Pd
Varje gång du kör detta borde det synkronisera ditt /usr/src/ träd.
Det borde inte förstöra dina lokala ändringar, istället bör
den försöka att slå ihop ändringarna. Om du använder obj kataloger
(inte obj symboliska länkar), kan du vilja lägga till "-I obj" till cvs kommandoraden.
Det hindrar cvs från att spotta ut varningar om alla obj katalogerna som den kommer att
hitta och som inte ligger i förrådet.
-A flaggan till cvs, eller du kan finna dig
själv följa current istället.
# cd /usr/src
# cvs -d $CVSROOT -q up -PAd
# cd /usr/src
# cvs -d $CVSROOT -q up -Pd
I ovanstående exempel är -q valfritt, det är bara
till för att minimera cvs utdata. För de av er som gillar att se
flera skärmdumpar fulla med utdata, kan -q uteslutas.
# setenv CVSROOT anoncvs@anoncvs.ca.openbsd.org:/cvs
# cd /usr
# cvs -q get -PA ports
# cd /usr
# cvs -q up -PAd ports
# cd /usr
# cvs diff -u src/sys/scsi/cd.c > /tmp/patch
CVS(1) manualsidan (inkluderad med CVS källkoden) har mycket mer information om hur CVS kan användas.
X11 källkodsträd
Anoncvs speglarna bär också OpenBSD:s X11 källkodsträd.
Du kan använda metoden ovan för att uppdatera ditt X11 källkodsträd
från den andra CD:n. Antingen kopiera eller använd en union montering
för att få X11 källkoden under /usr/X11/:
# cd /mnt; cp -Rp X11 /usr
# mount -t union -o -b /mnt/X11 /usr/X11
# cd /usr/X11
# cvs -q update -PAd
Varning: När du använder cvs bör du vara aktsam att den aktuella katalogen som du står i antingen är rooten av det träd som du refererar till, eller i ett separat ställe som /tmp/. Vissa kommandon som "get" kan skapa godtyckliga sub-träd i den aktuella katalogen, och en påföljande uppdatering kommer rekursivt fylla ut detta sub-träd.
Anoncvstjänsten ger gröngölingar till utvecklare en chans att lära sig CVS operationer och bli väl involverad i utvecklingsprocessen innan han börjar commit:a ändringar -- som ett resultat av uppvisade användbara skickligheter och resultat med hög kvalitet, kommer de naturligtvis senare att bli erbjudna utvecklar-rättigheter. Likaså, personer som erbjuder patchar kan skapa deras diff:ar relativt till CVS trädet, vilket innebär enklare integration.
Anoncvs: rsh vs. ssh
Som standard använder CVS klienten rsh för att prata med CVS
servern. Många av CVS siterna stödjer inte nu längre
rsh på grund av säkerhetsskäl eller ett lokalt
problem som brandväggar eller protokollemuleringar
så som slirp, vilket hindrar dig från att använda rsh.
Alternativet är att använda en "secure shell" anslutning
genom antingen OpenSSH (*FRITT*) eller
ssh (icke-kommersiellt och kommersiellt).
OpenBSD:s anoncvs förråd stödjer SSH1 protokollet, men inte SSH2 protokollet på grund av användandet av en "strikt icke-kommersiell användnings licenspolicy".
När ssh väl är installerat, sätt miljövariabeln CVS_RSH till att peka ut ssh (vanligtvis /usr/bin/ssh). Om din lokala site hindrar dig ifrån att ansluta utåt till port 22 (vilket ssh använder som standard), använd port 2022.
Bli inte frestad att slå på komprimering eftersom CVS redan komprimerar. Använd någonting som liknar det som följer i din $HOME/.ssh/config fil. Observera att alla anoncvs servrar tillåter ssh anslutningar på port 2022. Observera även att de flesta anoncvs servrar inte längre accepterar none-kryptometoden, eftersom den är inaktiverad i nyare versioner av ssh på grund av säkerhetsskäl.
Host anoncvs.ca.openbsd.org Port 2022
CVS kan vara lite pratig ibland, för att tysta ned den en aning kan du göra följande:
setenv CVS_CLIENT_PORT -1
Om du önskar ändra från en CVS server till en annan (till exempel om din normala är nere, eller på grund av något annat skäl); miljövariabeln som tillåter dig göra det är:
setenv CVS_IGNORE_REMOTE_ROOTObservera att du även måste använda dig av -d flaggan som nämndes ovan.
Användare som vill spegla själva OpenBSD CVS trädet kan nu göra så från anoncvs.usa.openbsd.org. Observera att detta är cvs trädet, inte ett ut-checkat källkodsträd. Det är bara anvädbart om du vill kunna göra snabba cvs operationer (diff, annotate, mm) eller om du har flera källkodsträd och du bara vill överföra data en gång (du kan sedan checka ut ett träd ifrån din lokala cvs spegel).
En exempel-supfil skulle kunna vara:
cvs host=anoncvs.usa.openbsd.org hostbase=/ base=/home delete
vilket skulle spegla cvs trädet till /home/cvs/ med sup data-filerna i /home/sup/. Hela OpenBSD cvsträdet är precis under en gigabyte i storlek.
Om du önskar bli en ny anoncvs spegel site, var god kontakta anoncvsadministratören. Anoncvs speglar kräver ungefär 1GB med disk, och använder upp till 4MB med swap per anoncvsanvändare (förutsatt att användaren gör en stor operation. Även om mindre operationer använder färre resurser tar anoncvs mycket mer än vad ftp eller sup gör). Sådanna anoncvs maskiner bör ha utmärkt nätverksåtkomst till den area som den är tänkt att serva. Ett dokument existerar som beskriver hur man kan sätta upp anoncvsservrar.
Efter att ha uppgraderat ditt källkodsträd bör du läsa kommentarerna i början av /usr/src/Makefile innan du försöker dig på att bygga om systemet. Du bör också, om möjligt, bygga en ny kärna innan du gör en make build. I vissa fall kan det vara nödvändigt att bygga om och installera config tillbehöret innan du kan bygga kärnan. Om config GENERIC misslyckas, är det troligen skälet.
Det är viktigt att observera att en uppgradering från en release- till current-trädet genom att bygga om källkoden kan vara ganska svårt på grund av olika beroenden som ofta inte är helt självklara. Därför är det rekommenderat att du först installerar den senaste snapshot:en innan du ger dig i kast med att bygga ett helt träd ifrån källkod.