3.6. Come posso aggiornare il sistema?

FreeBSD permette di scaricare i sorgenti aggiornati e di ricompilare tutto il sistema base e il kernel in modo da avere un sistema perfettamente aggiornato. L'utility fondamentale per compiere quest'operazione si chiama cvsup(1) ed è compreso nell'albero dei ports sotto net/cvsup-without-gui. Abbiamo la possibilità di installarlo sia con i ports sia con i packages, opzione sicuramente più veloce, dal momento che cvsup-without-gui dipende da pacchetti che impiegano abbastanza tempo a compilarsi. Mentre viene effettuata l'installazione, cominciamo a editare i file di configurazione per essere subito operativi. Creiamo la directory /usr/local/etc/cvsup e, aperto il nostro editor preferito, cominciamo a scrivere il file cvsup.stable:

*default host=cvsup.it.freebsd.org
*default prefix=/usr
*default release=cvs tag=RELENG_5
*default delete use-rel-suffix
*default umask=0022
*default compress
src-all
     
Questo file serve per aggiornare i sorgenti del sistema base, occupiamoci ora di quello per aggiornare i ports, cvsup.ports:
*default host=cvsup.it.freebsd.org
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
*default umask=0022
*default compress
ports-all
     
Si nota subito che è quasi identico al precedente, salvo per l'ultima riga che è quella che identifica quale "collezione" di fil3 vogliamo scaricare, e per il valore di tag=, la cui funzione spiegheremo più oltre.

Per aggiornare anche la documentazione creiamo un file cvsup.docs uguale ai precedenti eliminando solo la riga *default umask=0022 e sostituendo l' ultima riga con doc-all.

Le uniche altre righe importanti da tenere in considerazione sono: *default host=cvsup.it.freebsd.org che identifica l'host da cui vogliamo scaricare i sorgenti (l'elenco completo dei mirror è disponibile all'indirizzo http://www.freebsd.org/doc/handbook/cvsup.html#CVSUP-MIRRORS ), e *default release=cvs tag=, dove viene indicato che ramo di sviluppo vogliamo seguire nell'aggiornamento del sistema. Come spiegato alla domanda "Qual è l'ultima versione di FreeBSD?" (Sezione 1.6), FreeBSD viene sviluppata in settori diversi e ognuno può scegliere quale ramo seguire a seconda delle preferenze personali e dell'ambiente di utilizzo della macchina. Nel nostro esempio abbiamo scelto di seguire il ramo di sviluppo -STABLE, specificando quindi RELENG_5 per quanto riguarda i sorgenti, mentre per i ports e i documenti abbiamo messo . (punto), che identifica l'ultima versione possibile per quanto riguarda questi due componenti; se avessimo specificato . (punto) anche per i sorgenti avremmo seguito il ramo di sviluppo -CURRENT, molto più instabile, che richiede maggiore esperienza e capacità di risolvere i problemi per contro proprio. La spiegazione dettagliata di ogni riga dei file di configurazione di CVSup si trova in una pagina dell'handbook di FreeBSD.

Se eseguissimo l'aggiornamento del sistema con solo questi file, otterremmo una grande quantità di materiale di cui non faremmo utilizzo, come ad esempio i ports localizzati in lingue asiatiche o differenti dall'italiano e inglese; per evitare questo, creiamo la directory /usr/local/etc/cvsup/sup e il file /usr/local/etc/cvsup/sup/refuse:

ports/arabic/*
ports/chinese/*
ports/french/*
ports/german/*
ports/hebrew/*
ports/hungarian/*
ports/japanese/*
ports/korean/*
ports/russian/*
ports/polish/*
ports/portuguese/*
ports/russian/*
ports/ukrainian/*
ports/vietnamese/*
doc/bn*
doc/da*
doc/de*
doc/el*
doc/es*
doc/fi*
doc/fr*
doc/ja*
doc/no*
doc/nl*
doc/pl*
doc/po*
doc/pt*
doc/ru*
doc/sr*
doc/tr*
doc/zh*
     
Un ultimo file è necessario per poter finalmente compiere l'aggiornamento del sistema: make.conf, da posizionare in /etc:
USA_RESIDENT=NO
SUP_UPDATE=yes
SUP=/usr/local/bin/cvsup
SUPFLAGS= -g -L 2
SUPFILE=/usr/local/etc/cvsup/cvsup.stable
PORTSSUPFILE=/usr/local/etc/cvsup/cvsup.ports
DOCSUPFILE=/usr/local/etc/cvsup/cvsup.docs
SUPHOST=cvsup.it.freebsd.org
XFREE86_VERSION=4
     
Cosa significa ogni riga di questo file? La prima rende noto al server che noi non siamo residenti negli Stati Uniti, cosicchè i sorgenti di quei programmi che per motivi legali non possono uscire dagli USA, non verranno scaricati sul nostro computer. SUP_UPDATE indica che vogliamo servirci del sistema CVSup per l'aggiornamento dei sorgenti. La riga seguente segnala il percorso completo dell'eseguibile cvsup. Dopo la specificazione delle flag da passare a cvsup, troviamo le locazioni dei file di configurazione, rispettivamente quello dei sorgenti, dei ports e della documentazione, infine la versione di XFree86 che vogliamo usare, tipicamente la 4.

Portiamoci ora in /usr/src ed eseguiamo

# make update
     
per aggiornare i sorgenti, i ports e la documentazione. Qualora volessimo aggiornare solo i ports, eseguiamo la stessa operazione da /usr/ports.

Ora i nostri sorgenti sono equivalenti a quelli sul CVS di FreeBSD ma per avere il sistema "up to date" dobbiamo ricompilare world (ovvero il sistema base) e kernel (il nocciolo del sistema operativo) come spiegato alla domanda "Come ricompilo il sistema?" (Sezione 3.7)