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.
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>.