A.6. CTM gebruiken

CTM is een methode om een map elders gesynchroniseerd te houden met een centrale. Het is ontwikkeld voor gebruik met de FreeBSD broncode, hoewel sommigen het ook voor andere doeleinden handig vinden. Er bestaat op dit moment weinig tot geen documentatie over het proces van het maken van delta's. Voor informatie over het gebruik van CTM kan het beste contact gezocht worden met de ctm-users mailinglijst.

A.6.1. Waarom CTM gebruiken?

CTM geeft een lokale kopie van de FreeBSD broncode. Die is in een aantal “smaken” beschikbaar. Of het gaat om slechts één tak of de complete CVS structuur, CTM kan het bieden. CTM is gewoon gemaakt voor actieve ontwikkelaars die met FreeBSD werken, maar geen of een slechte Internetverbinding hebben of gewoon automatisch de laatste wijzigingen willen ontvangen. De meest actieve takken kennen op z'n hoogst drie delta's per dag. Het is het overwegen waard om ze per automatische mail te laten sturen. De grootte van de updates wordt altijd zo klein mogelijk gehouden. Meestal kleiner dan 5 K en soms (in tien procent van de gevallen) is het 10–50 K. In uitzonderlijke gevallen komt het voor dat een mail van 100 K of meer wordt gestuurd.

Het is wel van belang op de hoogte te zijn van de valkuilen die een rol spelen bij het direct werken met broncode in plaats van met een voorverpakte release. Dit geldt nog meer als wordt gewerkt met de “current” code. Het lezen van Bijblijven met FreeBSD wordt sterk aangeraden.

A.6.2. Wat is er nodig om CTM te gebruiken?

Voor het gebruik van CTM zijn twee dingen nodig: het CTM programma en de initiële delta's om de applicatie te voeden en naar een “current” niveau te komen.

CTM is al onderdeel van FreeBSD sinds versie 2.0 is uitgebracht en is te vinden in /usr/src/usr.sbin/ctm, als de broncode aanwezig is.

De “delta's” voor CTM kunnen op twee manieren komen: met FTP of per e-mail. De volgende FTP sites bieden ondersteuning voor CTM:

ftp://ftp.FreeBSD.org/pub/FreeBSD/CTM/

Er staan er nog meer in de paragraaf mirrors.

FTP de relevante map en download het bestand README vanaf daar.

Voor delta's via e-mail:

Er dient een abonnement genomen te worden op een van de CTM distributielijsten. ctm-cvs-cur ondersteunt de complete CVS structuur. ctm-src-cur ondersteunt het hoofd van de ontwikkeltak. ctm-src-7 ondersteunt de 7.X release tak, enzovoort. Om te abonneren kan geklikt worden op de bovenstaande links of via http://lists.FreeBSD.org/mailman/listinfo kan in een lijst geklikt worden op de lijst waarvoor een abonnement gewenst is. De lijstpagina bevat instructies over hoe te abonneren.

Na het ontvangen van CTM updates per mail, kan ctm_rmail gebruikt worden voor het uitpakken en verwerken. ctm_rmail kan zelfs direct vanuit /etc/aliases gebruikt worden om het proces volledig automatisch te laten verlopen. In de hulppagina van ctm_rmail staan meer details.

Opmerking: Welke methode ook gebruikt wordt voor de CTM delta's, het is belangrijk een abonnement te nemen op de ctm-announce mailinglijst. In de toekomst worden alleen op die lijst aankondigingen gedaan over het CTM systeem. Abonneren kan door op de link hierboven te klikken en de instructies te volgen.

A.6.3. CTM de eerste keer gebruiken

Voordat de CTM delta's gebruikt kunnen worden, moet er een startpunt voor bepaald worden.

Eerst moet bepaald worden wat er al is. Het is mogelijk te beginnen vanuit een “lege” map. Dan moet een initiële “Empty” delta gebruikt worden om een door CTM ondersteunde structuur te starten. Het is de bedoeling dat deze “start” delta's ooit voor het gemak op de CD-ROM komen te staan, maar dit is nog niet het geval.

Omdat de structuren tientallen megabytes groot zijn, heeft het de voorkeur om al met iets te beginnen. Als er een -RELEASE CD-ROM beschikbaar is, kan de initiële broncode gekopieerd of uitgepakt worden. Dit bespaart nogal wat dataverkeer.

De “start” delta's kunnen herkend worden aan de X die aan het nummer is toegevoegd (bijvoorbeeld src-cur.3210XEmpty.gz). De nummering achter de X komt overeen met de oorsprong van het initiële “zaad”. Empty is een lege map. Er wordt in het algemeen iedere honderd delta's een basistransitie voor Empty gemaakt. Die zijn trouwens groot: 70 tot 80 Megabytes gzip data is normaal voor de XEmpty delta's.

Als er een delta als startpunt is gekozen, zijn ook alle delta's met hogere volgnummers nodig.

A.6.4. CTM in het dagelijks leven gebruiken

Om de delta's toe te passen:

# cd /where/ever/you/want/the/stuff
# ctm -v -v /where/you/store/your/deltas/src-xxx.*

CTM begrijpt delta's in gzip formaat, dus het niet nodig om eerst gunzip te gebruiken. Dat spaart diskruimte.

Tenzij het zeker is van de veiligheid van het proces, doet CTM niets met de structuur. Om een delta te verifiëren kan ook de vlag –c gebruikt worden en dan komt CTM ook niet aan een structuur. Dan wordt alleen de integriteit van de delta gecontroleerd en of die zonder problemen op de huidige structuur kan worden toegepast.

CTM kent nog meer opties die in de hulppagina's worden besproken.

Meer is er niet. Iedere keer dat er een delta wordt ontvangen, moet die door CTM gehaald worden om de broncode bijgewerkt te houden.

Delta's kunnen het beste niet verwijderd worden als het lastig is ze opnieuw te downloaden. Dan kunnen ze het beste bewaard worden voor het geval er eens iets gebeurt. Zelfs als er alleen floppy's beschikbaar zijn, is het wellicht verstandig die te gebruiken met fdwrite.

A.6.5. Lokale wijzigingen behouden

Een ontwikkelaar wil graag experimenteren met bestanden in de structuur en die bestanden veranderen. CTM ondersteunt lokale wijzigingen in beperkte mate: alvorens te kijken of bestand foo bestaat, zoekt het eerst naar foo.ctm. Als dat bestand bestaat, past CTM de wijzigigen daarop toe in plaats van op foo.

Dit gedrag biedt een eenvoudige mogelijkheid om lokale wijzigingen bij te houden. Dat kan dus door bestanden die gewijzigd gaan worden te kopiëren naar een bestand met dezelfde naam met de toevoeging .ctm. Dan kan er vrijelijk gespeeld worden met de code, terwijl CTM het bestand .ctm bijwerkt.

A.6.6. Andere interessante mogelijkheden van CTM

A.6.6.1. Uitvinden wat precies wordt veranderd met bijwerken

Het is mogelijk een lijst met wijzigingen te maken die CTM zou maken op het broncodedepot met de optie -l.

Dit is nuttig als het gewenst is om een logboek bij te houden van de wijzigingen, de te wijzigen bestanden voor- of na te bewerken op welke manier dan ook, of als de gebruiker gewoon een beetje paranoïde is.

A.6.6.2. Back-ups maken vóór bijwerken

Soms kan het wenselijk zijn om een back-up te maken van alle bestanden die gewijzigd gaan worden door een CTM update.

Met -B back-upbestand back-upt CTM alle bestanden die gewijzigd gaan worden door een CTM delta naar back–upbestand.

A.6.6.3. Te wijzigen bestanden door bijwerken beperken

Soms is het wenselijk de reikwijdte voor een CTM update te beperken of kan het wenselijk zijn om maar een paar bestanden bij te werken uit een aantal delta's.

Een lijst met bestanden die CTM mag bewerken kan aangegeven worden met de opties -e en -x en het opgeven van regular expressions.

Om bijvoorbeeld een bijgewerkte kopie van lib/libc/Makefile te maken uit de verzameling met opgeslagen CTM delta's, kan het volgende commando uitgevoerd worden:

# cd /where/ever/you/want/to/extract/it/
# ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.*

Voor ieder te wijzigen bestand in een CTM delta worden de opties -e en -x toegepast in de volgorde waarin ze op de commandoregel staan. Het bestand wordt alleen door CTM verwerkt als het passend is bevonden na het toepassen van alle parameters in -e en -x.

A.6.7. Toekomstige plannen voor CTM

Die zijn er:

A.6.8. Nog meer

Er zijn ook delta's voor de portscollectie, maar daar is nog niet zo veel belangstelling voor.

A.6.9. CTM mirrors

CTM/FreeBSD is op de volgende mirrorsites via anonieme FTP beschikbaar. Als voor CTM anonieme FTP wordt gebruikt, heeft het de voorkeur een site die in geografische zin dichtbij is te gebruiken.

Bij problemen kan contact gezocht worden met de ctm-users mailinglijst.

Als er geen mirror dichtbij is of als die incompleet is, kan een zoekmachine als alltheweb gebruikt worden.