CTM è un metodo per mantenere sincronizzati un albero di directory remoto e uno centralizzato. È stato sviluppato per l'albero dei sorgenti di FreeBSD, anche se con il passare del tempo, altre persone lo hanno trovano utile per altri scopi. A tutt'oggi esiste pochissima documentazione sul processo della creazione delle delta, quindi contattate la mailing list ctm-users per avere più informazioni e nel caso voleste usare CTM per altri scopi.
CTM fornisce una copia locale dell'albero dei sorgenti di FreeBSD. Ci sono molte “varietà” di alberi disponibili. Che tu voglia seguire l'intero albero CVS o solo uno dei rami, CTM può fornirti i dati che ti servono. Se sei uno sviluppatore attivo di FreeBSD, ma hai una connettività TCP/IP di bassa qualità o non esistente, o semplicemente desideri ricevere le modifiche in modo automatico, CTM fa al caso tuo. Riceverai fino a tre delta giornaliere per i rami più attivi. Tuttavia, puoi considerare che li puoi avere attraverso l'invio automatico di email. Le dimensioni degli aggiornamenti sono sempre più piccole possibile. Questi sono in genere meno di 5K, con occasionali (uno su dieci) aggiornamenti da 10-50K e qualcuno più grande (100K o più) di tanto in tanto.
Devi anche essere cosciente delle varie insidie relativi all'uso di sorgenti in via di sviluppo e non provenienti da release pronte. Questo è vero in particolare per i sorgenti “current” (correnti). È raccomandata la lettura di Restare in “current” con FreeBSD.
Ti servono due cose: il programma CTM, e le delta iniziali da dargli in pasto (per arrivare ai livelli della “current”).
Il programma CTM fa parte di FreeBSD fin dalla release della versione 2.0 e, se hai una copia dei sorgenti disponibile, risiede in /usr/src/usr.sbin/ctm.
Le “delta” da dare in pasto a CTM si possono avere in due modi: tramite FTP o email. Se puoi utilizzare FTP via Internet allora i seguenti siti supportano l'accesso a CTM:
ftp://ftp.FreeBSD.org/pub/FreeBSD/CTM/
vedi anche la sezione mirror.
Entra via FTP nella directory giusta e, da lì, inizia col trasferire il file README.
Se invece desideri ricevere le delta per email:
Iscriviti ad una delle liste di distribuzione di CTM. ctm-cvs-cur supporta l'interno albero CVS. ctm-src-cur supporta il ramo di sviluppo current. ctm-src-4 supporta il ramo della release 4.X, ecc. (Se non sai come iscriverti a una lista, clicca sul nome della lista o raggiungi la pagina http://lists.FreeBSD.org/mailman/listinfo e clicca sulla lista a cui ti vuoi iscrivere. La pagina della lista dovrebbe contenere tutte le informazioni necessarie per l'iscrizione.)
Quando inizierai a ricevere gli aggiornamenti CTM via email, puoi usare il programma ctm_rmail per scompattarli e per applicarli. In realtà, se vuoi avere un processo completamente automatizzato, puoi usare il programma ctm_rmail direttamente in un elemento di /etc/aliases. Esamina la pagina man di ctm_rmail per maggiori dettagli.
Nota: Indipendentemente dal metodo che utilizzi per ricevere le delta di CTM, dovresti iscriverti alla mailing list ctm-announce. In futuro, questo sarà l'unico posto dove saranno postati gli annunci riguardanti il funzionamento del sistema CTM. Clicca sul nome della lista e segui le istruzioni per iscriverti.
Prima che tu possa servirti delle delta di CTM, hai bisogno di un punto di partenza dal quale successivamente costruire le delta.
Innanzitutto dovresti determinare ciò che hai. Si può iniziare da un directory “vuota”. Devi usare una delta iniziale “Empty” per iniziare il tuo albero CTM. Qualche volta può succedere che una di queste delta “iniziali” sia distribuita su un CD per tua convenienza, ma comunque, questo generalmente non avviene.
Poichè gli alberi sono molte decine di megabyte, puoi iniziare da qualcosa che hai a portata di mano. Se hai un CD di una release, puoi copiare o estrarre i sorgenti da lì. Questo salverà un significativo trasferimento di dati.
Puoi riconoscere queste delta “iniziali” dalla lettera X preceduta da un numero (per esempio src-cur.3210XEmpty.gz). Il nome che segue la lettera X corrisponde all'origine del tuo “seme” iniziale. Empty è una directory vuota. Di solito una transizione base a partire da Empty è prodotta ogni 100 delta. Strada facendo, queste avranno grandi dimensioni! Le dimensioni comuni per le delta XEmpty vanno dai 70 a 80 Megabyte di dati compressi con gzip.
Una volta che ti sei procurato una delta base come punto di partenza, avrai bisogno anche di tutte le delta successive aventi un numero maggiore.
Per applicare le delta, fai come segue:
# cd /where/ever/you/want/the/stuff # ctm -v -v /where/you/store/your/deltas/src-xxx.*
CTM decifra le delta compresse tramite il comando gzip, quindi non hai bisogno di decomprimerle con gunzip, e ciò salva spazio su disco.
Tranne in alcune circostanze, CTM non toccherà il tuo
albero. Per verificare una delta puoi usare l'opzione -c
e di
fatto CTM non toccherà il tuo albero; verificherà soltanto
l'integrità della delta e se questa può essere applicata in modo pulito al tuo albero
attuale.
Ci sono altre opzioni di CTM, guarda la pagina man o ispeziona i sorgenti per maggiori dettagli.
Questo è davvero tutto ciò che devi sapere. Ogni volta che ottieni una delta, esegui CTM per aggiornare i tuoi sorgenti.
È meglio non rimuovere le delta che richiedono grandi tempi di scaricamento. Nel caso succeda qualche disgrazia non dovrai riscaricarle. Anche se hai solo dischetti floppy, considera l'uso di fdwrite per crearne una copia.
Allo stesso modo di uno sviluppatore potresti voler sperimentare delle modifiche nell'albero dei sorgenti. CTM supporta le modifiche locali in modo limitato: prima di verificare la presenza di un file foo, esso cerca foo.ctm. Se questo file esiste, CTM opererà su di esso piuttosto che su foo.
Questo comportamento offre un semplice modo per mantenere le modifiche locali: copia semplicemente il file che desideri modificare in un file con lo stesso nome e suffisso .ctm. Quindi puoi liberamente hackerare il codice, e CTM manterrà aggiornato il file .ctm.
Puoi determinare la lista delle modifiche che CTM apporterà
ai tuoi sorgenti usando l'opzione -l
di CTM.
Questo è utile se vuoi mantenere dei log delle modifiche, prima o dopo aver modificato in qualche modo i file, o solo perchè ti senti un pò paranoico.
Qualche volta potresti voler creare dei backup di tutti i file che saranno modificati da un aggiornamento di CTM.
Specificando l'opzione -B backup-file
, CTM effettuerà il backup di tutti i file che saranno modificati
da una certa delta CTM nel file backup-file.
Qualche volta potresti volere restringere la portata di un certo aggiornamento CTM, o potresti essere interessato ad estrarre solo pochi file da una serie di delta.
Puoi controllare la lista dei file sui quali CTM opererà
specificando un'espressione regolare usando le opzioni -e
e
-x
.
Per esempio, per estrarre una copia aggiornata del file lib/libc/Makefile dalla tua collezione di delta CTM, esegui i comandi seguenti:
# cd /dove/vuoi/estrarre/ # ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.*
Per ogni file specificato in una delta CTM, le opzioni
-e
e -x
sono applicate nello
stesso ordine in cui compaiono sulla riga di comando. Il file è processato da CTM solo se risulta idoneo a tutte le opzioni -e
e -x
ad esso applicate.
I più importanti:
Usare qualche tipo di autenticazione nel sistema CTM, in modo tale da permette l'identificazione di aggiornamenti CTM contraffatti.
Ripulire le opzioni di CTM, che confondono e sono tutt'altro che intuitive.
Esiste una serie di delta per la collezione dei ports, ma è ancora di poco interesse.
CTM/FreeBSD è disponibile via FTP anonimo dai siti mirror seguenti. Se decidi di procurarti CTM via FTP anonimo, per favore usa un sito a te vicino.
In caso di problemi, contatta la mailing list ctm-users.
Se non trovi un mirror a te vicino o se il mirror è incompleto, prova ad usare qualche motore di ricerca come alltheweb.
Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Per domande su FreeBSD, leggi la documentazione prima di contattare <questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a <doc@FreeBSD.org>.