CVSup è un pacchetto di software per distribuire ed aggiornare alberi di sorgenti da un deposito centrale CVS posto su un server remoto. I sorgenti di FreeBSD sono mantenuti in un deposito CVS su una macchina centrale di sviluppo situata in California. Con CVSup, gli utenti di FreeBSD possono facilmente mantenere aggiornati i loro alberi di sorgenti.
CVSup usa il cosiddetto modello ad
estrazione per aggiornare. In questo modello,
è compito del client chiedere al server gli aggiornamenti.
Il server attente passivamente le richieste di aggiornamento dai suoi
client. In questo modo tutti gli aggiornamenti sono incitati dal
client. Il server non invia mai degli aggiornamenti che non sono stati
richiesti. Gli utenti devono eseguire il client
CVSup manualmente per ottenere un
aggiornamento, oppure possono usare cron
per eseguire
automaticamente queste operazioni secondo stabilite regole.
Il termine CVSup, scritto in quel modo,
si riferisce all'intero pacchetto di software. I suoi componenti
principali sono il client cvsup
che viene eseguito
su ogni macchina degli utenti, e il server cvsupd
che
viene eseguito su ogni sito mirror di FreeBSD.
Leggendo la documentazione di FreeBSD e le mailling list, potresti
notare dei riferimenti a sup.
Sup è il predecessore di
CVSup, e serviva per un simile scopo.
CVSup sostanzialmente è usato allo
stesso modo di sup e, di fatto, i suoi file
di configurazione sono compatibili con sup
.
Sup non viene più utilizzato nel
progetto FreeBSD, poichè CVSup
è più veloce e più flessibile.
Il modo più semplice per installare CVSup è usare il package precompilato net/cvsup della collezione dei package di FreeBSD. Se preferisci costruire CVSup partendo dal sorgente, allora puoi usare il port net/cvsup. Ma sei avvisato: il port net/cvsup dipende dal sistema Modula-3, che richiede una consistente quantità di tempo e di spazio su disco per scaricarlo e costruirlo.
Se hai intenzione di usare CVSup su una macchina sulla quale non sarà installato XFree86™ o Xorg, come su un server, assicurati di usare il port che non include la GUI di CVSup, ossia net/cvsup-without-gui.
Il funzionamento di CVSup è
controllato da un file di configurazione chiamato
supfile
. Esistono alcuni esempi di
supfile
nella directory /usr/share/examples/cvsup/
.
Le informazioni contenute in un supfile
rispondono alle seguenti questioni relative a
CVSup:
Nelle seguenti sezioni, costruiremo un tipico
supfile
per rispondere a turno ad ognuna di queste
questioni. Incominciamo però col descrivere la struttura
globale di un supfile
.
Un supfile
è un file di testo. I
commenti iniziano con un #
e si estendono fino alle
fine della riga. Le righe bianche e le righe che contengono solo
commenti sono ignorate.
Ogni altra riga descrive un insieme di file che l'utente vuole
ricevere. Una riga inizia con il nome di una «collezione»,
un nome di un gruppo logico di file definiti dal server. Il nome della
collezione indica al server i file che vuoi ricevere. Dopo il nome
della collezione seguono zero o più campi, separati da spazi
bianchi. Questi campi rispondono alle questioni citate in precedenza.
Ci sono due tipi di campi: campo opzione e campo valore. Un campo
opzione consiste di una parola chiave a se stante, es.
delete
o compress
. Anche un campo
valore inizia con una parola chiave, ma questa è seguita dal
simbolo =
, senza spazi bianchi intermedi, e da un
seconda parola. Ad esempio, release=cvs
è un
campo valore.
Un supfile
tipicamente specifica più di
un'unica collezione da ricevere. Un modo di strutturare un
supfile
è specificare esplicitamente tutti i
campi rilevanti per ogni collezione. Tuttavia, ciò tende a
creare supfile
troppo lunghi, e ciò è
scomodo poichè in un supfile
la maggior
parte dei campi sono gli stessi per tutte le collezioni.
CVSup fornisce un meccanismo per aggirare
questi problemi. Le linee che iniziano con il nome speciale di
pseudo-collezione *default
possono essere usate per
inizializzare opzioni e valori che saranno utilizzati come default per
le successive collezioni definite nel supfile
.
Un valore di default può essere sovrascritto da una singola
collezione, specificando un valore diverso per la collezione stessa.
Inoltre i valori di default possono essere modificati in mezzo al
supfile tramite linee *default
aggiuntive.
Con queste conoscenze, possiamo ora procedere alla costruzione
di un supfile
per ricevere ed aggiornare l'albero
dei sorgenti della FreeBSD-CURRENT.
I file disponibili via CVSup sono
organizzati in gruppi chiamati «collezioni».
Le collezioni che sono disponibili sono descritte nella
prossima sezione. In questo
esempio, desideriamo ricevere per intero l'albero corrente dei
sorgenti del sistema FreeBSD. C'è un'unica e vasta
collezione src-all
che ci permette di ricevere
tutto ciò. Come prima fase nella costruzione del nostro
supfile
, dobbiamo semplicemente elencare le
collezioni, una per riga (in questo caso, c'è un'unica
riga):
src-all
Con CVSup, hai la possibilità
di ricevere qualsiasi versione dei sorgenti che sia mai esistita.
Questo è possibile poichè il server
cvsupd lavora direttamente sul deposito
CVS, che contiene tutte le versioni. Puoi specificare la versione
che vuoi usando i campi valori tag=
e
date=
.
Stai molto attento a specificare i campi
tag=
in modo corretto. Alcuni tag sono validi
solo per certe collezioni di file. Se specifichi un tag non
corretto, CVSup cancellerà file
che tu non vorresti eliminare. In particolare, usa
solamente tag=.
per le
collezioni ports-*
.
Il campo tag=
richiama un tag simbolico nel
deposito. Ci sono due tipi di tag, i tag di revisione e i tag di
ramo. Un tag di revisione fa riferimento ad una revisione
specifica. Il suo significato rimane lo stesso di giorno in giorno.
Un tag di ramo, d'altro canto, si riferisce sempre all'ultima
revisione relativa ad una specifica linea di sviluppo. Dato che un
tag di ramo non si riferisce ad una revisione specifica, esso
potrebbe avere un significato diverso da un giorno con
l'altro.
La Sezione A.7, «Tag CVS» contiene tag di ramo che potrebbero
interessare gli utenti. Quando si specifica un tag in un file di
configurazione di CVSup, esso dovrebbe
essere preceduto da tag=
(RELENG_4
diviene
tag=RELENG_4
). Tieni presente che per la
collezione dei port è rilevante solo
tag=.
.
Sii molto attento a digitare il nome del tag nel modo esatto. CVSup non è in grado di riconoscere tag errati. Se digiti in modo sbagliato un tag, CVSup si comporterà come se tu avessi specificato un tag valido che non riguarda nessun file. In questo caso i tuoi sorgenti saranno eliminati.
Quando specifichi un tag di ramo, normalmente ricevi le ultime
versioni dei file di quella linea di sviluppo. Se vuoi ricevere
versioni precedenti, puoi specificare una data con il campo valore
date=
. La pagina man di cvsup(1) spiega come
farlo.
Nel nostro esempio, desideriamo ricevere FreeBSD-CURRENT.
Aggiungiamo questa riga all'inizio del nostro
supfile
:
*default tag=.
C'è un importante caso speciale che entra in gioco se
non specifichi ne un campo tag=
ne un campo
date=
. In questo caso, ricevi i file RCS attuali
direttamente dal deposito CVS del server, invece di ricevere una
versione particolare. Gli sviluppatori in genere preferiscono
questa modalità di funzionamento. Mantenendo una copia del
deposito stesso sui loro sistemi, essi sono in grado di navigare
attraverso la storia delle revisioni e di esaminare le versioni
precedenti dei file. Comunque questo vantaggio è
realizzabile al costo di un ingente quantità di spazio su
disco.
Il campo host=
indica a
cvsup
da dove prelevare i suoi aggiornamenti.
Va bene uno qualunque dei siti mirror
di CVSup, anche se dovresti provare a selezionarne uno che
sia a te vicino nel ciberspazio. In questo esempio useremo un sito
di distribuzione di FreeBSD fittizio, cvsup99.FreeBSD.org
:
*default host=cvsup99.FreeBSD.org
Devi cambiare l'host in uno che esiste realmente prima di
eseguire CVSup. Il settaggio dell'host
può essere sovrascritto su riga di comando eseguendo
cvsup
con l'opzione -h
.hostname
Dove li vuoi mettere sulla tua macchina?
Il campo prefix=
indica a
cvsup
dove mettere i file che riceve. In questo
esempio, metteremo i file sorgenti direttamente nel nostro albero
dei sorgenti, /usr/src
. La directory
src
è già implicita nelle
collezioni che vogliamo ricevere, quindi la corretta specifica
è questa:
*default prefix=/usr
Dove cvsup
dovrebbe mantenere i suoi file di stato?
Il client di CVSup mantiene certi
file di stato in ciò che è chiamata directory
«base». Questi file aiutano
CVSup a lavorare in modo più
efficace, mantenendo traccia di quali aggiornamenti sono stati
già ricevuti. Useremo la directory base standard,
/var/db
:
*default base=/var/db
Se la tua directory base non esiste, potrebbe essere una buona
idea crearla subito. Il client cvsup
interrompe
l'esecuzione se la tua directory base non esiste.
Settaggi vari di supfile
:
C'è un altro settaggio che normalmente deve essere
presente in un supfile
:
*default release=cvs delete use-rel-suffix compress
release=cvs
indica che il server dovrebbe
prendere le sue informazioni dal deposito CVS principale di FreeBSD.
In genere questa è la normalità, ma esistono altre
possibilità che vanno oltre lo scopo di questa
sezione.
delete
dà a
CVSup il permesso di cancellare file.
Dovresti sempre specificare questa opzione, in modo che
CVSup possa mantenere il tuo albero dei
sorgenti del tutto aggiornato. CVSup
è attento nel cancellare solamente quei file dei quali
è responsabile. Altri file extra verranno lasciati
intatti.
use-rel-suffix
è ... arcano. Se vuoi
realmente saperne di più, guarda la pagina man di
cvsup(1). Altrimenti, specificala senza preoccupartene
troppo.
compress
abilita l'uso di una compressione
stile gzip sul canale di comunicazione. Se hai una connessione T1 o
più veloce, non dovresti usare la compressione.
Diversamente, può essere veramente d'aiuto.
Ricapitolazione di tutti settaggi:
Il supfile
completo per il nostro esempio
è il seguente:
*default tag=. *default host=cvsup99.FreeBSD.org *default prefix=/usr *default base=/var/db *default release=cvs delete use-rel-suffix compress src-all
Come menzionato in precedenza, CVSup
usa un modello ad estrazione. Sostanzialmente,
questo significa che ti connetti al server
CVSup, lui dice, «Ecco ciò che
puoi scaricare ...», ed il tuo client risponde «OK,
prenderò questo, questo, questo e questo.» Nella
configurazione di default, il client CVSup
prenderà ogni file associato alla collezione e al tag che
hai specificato nel file di configurazione. Tuttavia, questo non
è sempre ciò che vuoi, specialmente se stai
sincronizzando gli alberi doc
,
ports
, o www
- molte
persone non sono in grado di leggere quattro o cinque lingue, e quindi
esse non hanno bisogno di scaricare i file di certe lingue. Se
stai sincronizzando con CVSup la collezione
dei port, puoi specificare collezioni individuali (es.,
ports-astrology,
ports-biology, ecc. invece di specificare
semplicemente ports-all). Tuttavia,
poichè gli alberi doc
e
www
non hanno collezioni per specifiche lingue,
devi usare una delle molte abili caratteristiche di
CVSup: il file
refuse
.
Il file refuse
sostanzialmente indica a
CVSup che non dovrebbe prendere ogni
singolo file da una collezione; in altre parole, esso dice al client
di rifiutare certi file dal server. Il file
refuse
può essere trovato (o, se non ne
hai ancora uno, dovrebbe essere messo) in
base/sup/
.
base
è definita nel tuo
supfile
; la nostra
base
è
/var/db
, e quindi di default il file
refuse
è
/var/db/sup/refuse
.
Il file refuse
ha veramente un formato molto
semplice; esso contiene semplicemente i nomi dei file o delle
directory che non desideri scaricare. Per esempio, se non parli altre
lingue oltre all'inglese e al tedesco, e non hai la necessità
di leggere la traduzione in tedesco della documentazione, puoi mettere
le seguenti righe nel tuo file refuse
:
doc/bn_* doc/da_* doc/de_* doc/el_* doc/es_* doc/fr_* doc/it_* doc/ja_* doc/nl_* doc/no_* doc/pl_* doc/pt_* doc/ru_* doc/sr_* doc/tr_* doc/zh_*
e così via per altre lingue (puoi ottenere la lista completa esplorando il deposito CVS di FreeBSD).
Con questa utile funzionalità, quegli utenti che hanno
una connessione lenta o pagano ogni minuto di connessione Internet
potranno risparmiare tempo prezioso poichè non dovranno
più scaricare file che non usano mai. Per maggiori dettagli
sul file refuse
e su altre utili caratteristiche
di CVSup, guarda la sua pagina man.
Sei ora pronto per provare un aggiornamento. La riga di comando per farlo è molto semplice:
#
cvsup supfile
dove supfile
è naturalmente il nome del supfile
che hai
creato. Assumendo che stai lavorando sotto X11,
cvsup
visualizzarà una GUI con alcuni bottoni
adibiti ad operazioni usuali. Premi il bottone
, e stai a guardare l'esecuzione.
Poichè in questo esempio stai aggiornando il tuo albero dei
sorgenti /usr/src
, avrai bisogno di eseguire il
programma come root
affinchè
cvsup
abbia i permessi necessari per aggiornare i
tuoi file. Avendo appena creato il tuo file di configurazione, e non
avendo mai usato questo programma prima ad ora, tutto ciò
potrebbe renderti un pò nervoso. Esiste un semplice modo per
provare la sincronizzazione senza toccare i tuoi preziosi file. Crea
una directory vuota in qualche posto, e richiamala come argomento sulla
riga di comando:
#
mkdir /var/tmp/dest
#
cvsup supfile /var/tmp/dest
La directory che hai specificato sarà usata come directory
di destinazione per tutti gli aggiornamenti dei file.
CVSup esaminerà i tuoi file usuali in
/usr/src
, ma non modificherà o
cencellerà alcuno di essi. Gli aggiornamenti dei file finiranno
invece in /var/tmp/dest/usr/src
.
Inoltre CVSup lascerà intatta la sua
directory base contenente gli stati dei file quando viene eseguito in
questo modo. Le nuove versioni di questi file saranno scritte nella
directory specificata. A condizione che tu abbia l'accesso di lettura
in /usr/src
, non hai bisogno di essere
root
per realizzare questo tipo di giro di
prova.
Se non stai utilizzando X11 o se non ti piacciono le GUI,
dovresti aggiungere un paio di opzioni alla riga di comando quando
esegui cvsup
:
#
cvsup -g -L 2 supfile
L'opzione -g
indica a
CVSup di non usare la sua GUI. Ciò
è automatico se non stai utilizzando X11, ma se lo stai facendo
allora la devi specificare.
L'opzione -L 2
indica a
CVSup di visualizzare i dettagli di tutti
gli aggiornamenti dei file che avvengono. Esistono tre livelli
di verbosità, da -L 0
a -L 2
.
Il default è 0, che significa silenzio totale eccetto per
i messaggi di errore.
Ci sono molte altre opzione disponibili. Per una breve lista di
esse, digita cvsup -H
. Per una descrizione
più dettagliata, guarda la relativa pagina man.
Una volta che sei soddisfatto di come avvengono gli aggiornamenti, puoi organizzare esecuzioni regolari di CVSup usando cron(8). Ovviamente, non dovresti lasciare che CVSup usi la sua GUI quando lo esegui tramite cron(8).
Le collezioni di file disponibili via CVSup sono organizzate gerarchicamente. Ci sono poche collezioni grandi, le quali sono divise in piccole sotto-collezioni. Ricevere una grande collezione è equivalente a ricevere ogni sua sotto-collezione. Le relazioni gerarchiche tra le collezioni riflettono l'uso dell'identazione nella lista qui sotto.
Le collezioni maggiormente usate sono src-all
, e
ports-all
. Le altre collezioni sono usate solo
da piccoli gruppi di persone per scopi speciali, e alcuni siti mirror
potrebbero non contenerle tutte.
cvs-all release=cvs
Il deposito CVS maestro di FreeBSD, incluso il codice di crittografia.
distrib release=cvs
File relativi alla distribuzione e al mirroring di FreeBSD.
doc-all release=cvs
Sorgenti del Manuale di FreeBSD e altra documentazione. Questa collezione non include i file per il sito web di FreeBSD.
ports-all release=cvs
La FreeBSD Ports Collection.
Se non vuoi aggiornare per intero
ports-all
(l'interno albero dei port),
ma usare una delle sotto-collezioni listate qui sotto,
assicurati di aggiornare sempre la
sotto-collezione ports-base
!
Ogni volta che qualcosa cambia nell'infrastruttura della
costruzione dei port rappresentata da
ports-base
, è praticamente certo
che quei cambiamenti saranno usati dai port
«reali» in un brevissimo arco di tempo.
Quindi, se aggiorni solo i port «reali» e
questi usano alcune delle nuove caratteristiche,
c'è un'alta probabilità che la loro
costruzione fallirà con alcuni misteriosi messaggi
di errore. La primissima cosa da
fare in questi casi è assicurarsi che la propria
sotto-collezione ports-base
sia
aggiornata.
Se hai intenzione di creare localmente una copia di
ports/INDEX
, devi
includere ports-all
(l'intero albero dei
port). Costruire ports/INDEX
con un
albero non completo non è supportato. Consulta la
FAQ.
ports-accessibility
release=cvs
Software per aiutare gli utenti disabili.
ports-arabic
release=cvs
Supporto per la lingua araba.
ports-archivers
release=cvs
Applicazioni per l'archiviazione.
ports-astro release=cvs
Applicazioni riguardanti l'astronomia.
ports-audio release=cvs
Applicazioni di supporto all'audio.
ports-base release=cvs
L'infrastruttura della costruzione della
collezione dei port - vari file posti nelle
sottodirectory Mk/
e
Tools/
della directory
/usr/ports
.
Per favore vedi l'importante avvertimento qui sopra: dovresti sempre aggiornare questa sotto-collezione ogni volta che aggiorni qualche pezzo della FreeBSD Ports Collection!
ports-benchmarks
release=cvs
Benchmark (applicazioni per valutare le prestazioni del computer).
ports-biology release=cvs
Biologia.
ports-cad release=cvs
Applicazioni per la grafica computerizzata.
ports-chinese release=cvs
Supporto alla lingua cinese.
ports-comms release=cvs
Software per la comunicazione.
ports-converters
release=cvs
Convertitori di codici di caratteri.
ports-databases
release=cvs
Database.
ports-deskutils
release=cvs
Cose che erano utilizzate sulla scrivania prima che i computer furono inventati.
ports-devel release=cvs
Utility per il development.
ports-dns release=cvs
Software relativo al DNS.
ports-editors release=cvs
Editor.
ports-emulators
release=cvs
Emulatori per altri sistemi operativi.
ports-finance release=cvs
Applicazioni finanziarie, di gestione delle spese e simili.
ports-ftp release=cvs
Server e client FTP.
ports-games release=cvs
Giochi.
ports-german release=cvs
Supporto alla lingua tedesca.
ports-graphics release=cvs
Utilità per la grafica.
ports-hebrew
release=cvs
Supporto per la lingua ebraica.
ports-hungarian
release=cvs
Supporto alla lingua ungherese.
ports-irc release=cvs
Utilità IRC (Internet Relay Chat).
ports-japanese release=cvs
Supporto alla lingua giapponese.
ports-java release=cvs
Utility Java™.
ports-korean release=cvs
Supporto alla lingua coreana.
ports-lang release=cvs
Linguaggi di programmazione.
ports-mail release=cvs
Software di posta.
ports-math release=cvs
Software per la computazione numerica.
ports-mbone release=cvs
Applicazioni MBone.
ports-misc release=cvs
Utility varie.
ports-multimedia
release=cvs
Software multimediale.
ports-net release=cvs
Software di rete.
ports-net-im
release=cvs
Software per messaggeria istantanea.
ports-net-mgmt
release=cvs
Software di gestione del network.
ports-net-p2p
release=cvs
Rete peer to peer.
ports-news release=cvs
Software per USENET.
ports-palm release=cvs
Software di supporto per i vari Palm™.
ports-polish release=cvs
Supporto alla lingua polacca.
ports-portuguese
release=cvs
Supporto alla lingua portoghese.
ports-print release=cvs
Software per la stampa.
ports-russian release=cvs
Supporto alla lingua russa.
ports-science
release=cvs
Scienzia.
ports-security release=cvs
Utility per la sicurezza.
ports-shells release=cvs
Shell a riga di comando.
ports-sysutils release=cvs
Utility di sistema.
ports-textproc release=cvs
Utility per la manipolazione del testo (non include utility per la pubblicazione computerizzata).
ports-ukrainian
release=cvs
Supporto per la lingua ucraina.
ports-vietnamese
release=cvs
Supporto alla lingua vietnamite.
ports-www release=cvs
Software relativo al World Wide Web.
ports-x11 release=cvs
Port per il supporto al sistema a finestre X.
ports-x11-clocks
release=cvs
Orologi per X11.
ports-x11-fm release=cvs
Gestori di file per X11.
ports-x11-fonts
release=cvs
Font per X11 e relative utility.
ports-x11-toolkits
release=cvs
Cassette degli attrezzi per X11.
ports-x11-servers
release=cvs
Server X11.
ports-x11-themes
release=cvs
Temi per X11.
ports-x11-wm
release=cvs
Gestori di finestre per X11.
projects-all release=cvs
Sorgenti per i progetti di FreeBSD.
src-all release=cvs
I sorgenti correnti di FreeBSD, incluso il codice di crittografia.
src-base release=cvs
Vari file posti in
/usr/src
.
src-bin release=cvs
Utility per l'utente in ambiente mono-utente
(/usr/src/bin
).
src-contrib release=cvs
Utility e librerie al di fuori del progetto
FreeBSD, sostanzialmente utilizzati senza modifiche
(/usr/src/contrib
).
src-crypto release=cvs
Utility e librerie per la crittografia al di fuori
del progetto FreeBSD, sostanzialmente utilizzati senza
modifiche
(/usr/src/crypto
).
src-eBones release=cvs
Kerberos e DES
(/usr/src/eBones
).
Non usati nell'attuale release di FreeBSD.
src-etc release=cvs
File di configurazione del sistema
(/usr/src/etc
).
src-games release=cvs
Giochi
(/usr/src/games
).
src-gnu release=cvs
Utility protette dalla licenza pubblica di GNU
(/usr/src/gnu
).
src-include release=cvs
File header
(/usr/src/include
).
src-kerberos5 release=cvs
Pacchetto di sicurezza Kerberos5
(/usr/src/kerberos5
).
src-kerberosIV release=cvs
Pacchetto di sicurezza KerberosIV
(/usr/src/kerberosIV
).
src-lib release=cvs
Librerie
(/usr/src/lib
).
src-libexec release=cvs
Programmi di sistema normalmente eseguiti da altri
programmi
(/usr/src/libexec
).
src-release release=cvs
File richiesti per produrre una release di FreeBSD
(/usr/src/release
).
src-sbin release=cvs
Utility di sistema per la modalità
mono-utente
(/usr/src/sbin
).
src-secure release=cvs
Librerie e comandi per la crittografia
(/usr/src/secure
).
src-share release=cvs
File che possono essere condivisi tra sistemi
multipli (/usr/src/share
).
src-sys release=cvs
Il kernel
(/usr/src/sys
).
src-sys-crypto release=cvs
Codice di crittografia del kernel
(/usr/src/sys/crypto
).
src-tools release=cvs
Vari strumenti per il mantenimento di FreeBSD
(/usr/src/tools
).
src-usrbin release=cvs
Utility per l'utente
(/usr/src/usr.bin
).
src-usrsbin release=cvs
Utility di sistema
(/usr/src/usr.sbin
).
www release=cvs
I sorgenti per il sito web di FreeBSD.
distrib release=self
I file di configurazione del server CVSup. Usati dai siti mirror CVSup.
gnats release=current
Il database GNATS per tener traccia dei bug.
mail-archive release=current
Archivio delle mailing list di FreeBSD.
www release=current
I file pre-processati del sito web di FreeBSD (non i file sorgenti). Usati dai siti mirror WWW.
Per le FAQ ed altre informazioni di CVSup vedere la pagina home di CVSup.
La maggior parte delle discussioni su CVSup inerenti a FreeBSD si svolgono sulla mailing list di discussioni tecniche su FreeBSD. In questa mailling list inoltre sono anche annunciate nuove versioni del software, come pure sulla mailing list di annunci su FreeBSD.
Questioni e resoconti di bug dovrebbero essere indirizzati
all'autore del programma <cvsup-bugs@polstra.com>
.
I server CVSup per FreeBSD si trovano ai seguenti siti:
(aggiornato al UTC)
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>.