Capitolo 18. Ottenere i sorgenti con CVS

Sommario
18.1. Ottenere i sorgenti di sistema e di userland
18.2. Recupereare pkgsrc

L'autore di questo capitolo (Ottenere i sorgenti con CVS) è Reinoud Koornstra

Il CVS (Concurrent Versions System) è un sistema di controllo versione che può essere utilizzato per mantenere aggiornato l'albero dei sorgenti del sistema presente in locale con le modifiche apportate ai sorgenti "ufficiali" di NetBSD. Vi sono tre alberi (o, più precisamente, tre rami di uno stesso albero) che possono essere usati come riferimento per mantenere aggiornati i sorgenti locali: il ramo current, con il quale si può seguire la linea di sviluppo corrente (cioè quella più avanzata ma potenzialmente meno stabile), il ramo relativo alla release 1.5, al quale vengono applicate le correzioni relative alla release 1.5 per sistemare errori e problemi di sicurezza e il ramo della release 1.4, al quale vengono apportate le correzioni relative alla versione 1.4.

Nota: i tre rami appena descritti sono quelli esistenti al momento della scrittura di questo capitolo. In futuro i numeri di versione delle release cambieranno.

18.1. Ottenere i sorgenti di sistema e di userland

Il sistema di controllo versione CVS non è compreso nelle versioni 1.4.x e 1.5.x di NetBSD (ma lo sarà per quanto riguarda la 1.6) e pertanto, se non lo avete già fatto, è necessario installarlo:

% pkg_add ftp://ftp.netbsd.org/pub/NetBSD/packages/<OS Ver>/<arch>/All/cvs-1.11nb2.tgz    

I parametri <OS Ver>, e <arch> si ottengono con il seguente comando:

% sysctl kern.osrelease hw.machine_arch    

Per scaricare i sorgenti partendo da zero, cioè senza avere niente in /usr/src:

% setenv CVSROOT :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs login
password: anoncvs
% cvs checkout -rnetbsd-1-5 -PA src
    

È possibile anche utilizzare ssh, trasferendo i dati crittografati:

% setenv CVS_RSH ssh
% setenv CVSROOT anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs checkout -rnetbsd-1-5 -PA src
    

I precedenti comandi recuperano i sorgenti del ramo relativo alla release 1.5. Per scaricare i sorgenti correnti basta omettere il parametro "-rnetbsd-1-5" dall'ultimo comando. Per scaricare i sorgenti del ramo relativo alla release 1.4, utilizzare il parametro "-rnetbsd-1-4" nell'ultima riga.

Per aggiornare un albero di sorgenti già esistente, per esempio per la release 1.5, dare i seguenti comandi:

% setenv CVSROOT :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs login 
password: anoncvs
% cvs -d $CVSROOT update -rnetbsd-1-5 -PAd src
    

o, con ssh:

% setenv CVS_RSH ssh
% setenv CVSROOT anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs -d $CVSROOT update -rnetbsd-1-5 -PAd src
    

Per aggiornare un albero dei sorgenti con la versione corrente bisogna omettere il parametro "-rnetbsd-1-5" Per aggiornare un albero dei sorgenti con la release 1.4, utilizzare il seguente parametro: "-rnetbsd-1-4"

Per effettuare l'aggiornamento di un albero dei sorgenti non "pulito" (perché è stato fatto un "build" di una parte o di tutti i sorgenti oppure del kernel stesso) sul quale non è stato effettuato un make cleandir, è necessario effettuare un make obj in /usr/src:

% makedir /usr/obj
% make obj
    

Ora è possibile effettuare l'aggiornamento con "cvs update". Oppure si può dare un make cleandir in /usr/src prima di usare il CVS. Questo metodo è più semplice e più veloce rispetto al make delle objectdir quando si deve aggiornare un albero non pulito.

L'esecuzione è notevolmente più veloce rispetto a sup e gli aggiornamenti sono più frequenti.

Non è possibile definire con esattezza il tempo necessario per lo scaricamento di tutti i sorgenti. A titolo di esempio, su una linea T1 l'operazione richiede poco più di un'ora, a seconda della qualità della connessione. Per utilizzare un modem conviene sfruttare la compressione dei dati. Per esempio:

% cvs -z5 checkout ...    

oppure

% cvs -z5 -d $CVSROOT update ...    

Negli esempi precedenti, il numero 5 indica il livello di compressione desiderato; si può specificare un numero compreso tra 1 e 9, dove 1 rappresenta la compressione più veloce e 9 quella più efficace ma più lenta. Si tenga presente che la compressione aumenta il carico di lavoro del server.

18.2. Recupereare pkgsrc

Pkgsrc (i sorgenti del sistema dei package) comprendono un insieme di utility e di file di configurazione che consentono di compilare e di utilizzare con NetBSD un nutrito gruppo di applicazioni, rendendo semplice l'installazione e la disinstallazione di software sul sistema.

Per scaricare tutto pkgsrc partendo da zero:

% setenv CVSROOT :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs login 
(the password is: "anoncvs")
% cvs checkout -PA pkgsrc 
    

o, con ssh:

% setenv CVS_RSH ssh
% setenv CVSROOT anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs checkout -PA pkgsrc
    

I precedenti comandi creano la directory pkgsrc in /usr e memorizzano i sorgenti dell'intero sistema dei package in /usr/pkgsrc

Per aggiornare pkgsrc dare i seguenti comandi:

% setenv CVSROOT :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs login
(the password is: "anoncvs")
% cvs -d $CVSROOT update -PAd pkgsrc
    

o, con ssh:

% setenv CVS_RSH ssh
% setenv CVSROOT anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs -d $CVSROOT update -PAd pkgsrc
    

Prima di effettuare l'aggiornamento è bene assicurarsi che la directory pkgsrc sia "pulita". Se non si è sicuri, dare il comando make clean in /usr/pkgsrc.