A.6. Usare Portsnap
Indietro | Appendice A. Ottenere FreeBSD | Avanti

## A.6. Usare Portsnap

### A.6.1. Introduzione

Portsnap è un sistema per distribuire in modo sicuro l'albero dei port di FreeBSD. Circa ogni ora, viene generata una «snapshot» dell'albero dei port, che viene impacchettata e firmata criptograficamente. I file risultanti sono quindi distribuiti via HTTP.

Come CVSup, Portsnap usa un modello di aggiornamento a rchiesta: gli alberi dei port impacchettati e firmati sono messi sul server web che attende in modo passivo le richieste dei client. Gli utenti devono eseguire portsnap(8) manualmente o schedulare il job con cron(8) per scaricare periodicamente gli aggiornamenti in modo automatico.

Per ragioni tecniche, Portsnap non aggiorna direttamente il «reale» albero dei port in `/usr/ports/`; invece, lavora con una copia compressa dell'albero dei port memorizzata di default in `/var/db/portsnap/`. Questa copia compressa viene quindi usata per aggiornare l'albero dei port effettivo.

### Nota:

Se Portsnap è installato dalla collezione dei port di FreeBSD, la locazione di default per la sua snapshot compressa è `/usr/local/portsnap/` invece di `/var/db/portsnap/`.

### A.6.2. Instalazione

Su FreeBSD 6.0 e versioni più recenti, Portsnap è contenuto nel sistema base. Su versioni di FreeBSD più datate, può essere installato usando il port sysutils/portsnap.

### A.6.3. Configurazione di Portsnap

Il funzionamento di Portsnap è controllato dal file di configurazione `/etc/portsnap.conf`. Per la maggior parte degli utenti, la configurazione di default sarà sufficiente; per maggiori dettagli, consultare la pagina man portsnap.conf(5).

### Nota:

Se Portsnap è installato dalla collezione dei port di FreeBSD, userà il file di configurazione posto in `/usr/local/etc/portsnap.conf` invece di `/etc/portsnap.conf`. Questo file di configurazione non viene creato quando viene installato il port, ma viene dato un file di configurazione di base; per copiarlo nella giusta posizione, esegui il comando seguente:

    # cd /usr/local/etc && cp portsnap.conf.sample portsnap.conf

### A.6.4. Eseguire Portsnap per la Prima Volta

La prima volta che portsnap(8) viene eseguito, ha bisogno di scaricare una snapshot compressa dell'intero albero dei port in `/var/db/portsnap/` (o `/usr/local/portsnap/` se Portsnap è stato installato dalla collezione dei port). Dall'inizio del 2006 la sua dimensione è di circa 41 MB.

    # portsnap fetch

Una volta che la snapshot compressa è stata scaricata, una copia dell'albero dei port può estratta in `/usr/ports/`. Questo è necessario perfino se l'albero dei port è già stato creato in quella directory (es., usando CVSup), poichè stabilisce un punto di inizio dal qualche `portsnap` può determinare quale parte dell'albero dei port necessita di essere aggiornata.

    # portsnap extract

### Nota:

Nell'installazione di default la directory `/usr/ports` non viene creata. Se usi FreeBSD 6.0-RELEASE, la directory dovrebbe essere creata prima di usare `portsnap`. Su versioni di FreeBSD e Portsnap più recenti questa operazione viene fatta in automatico al primo utilizzo del comando `portsnap`.

### A.6.5. Aggiornare l'Albero dei Port

Dopo che una prima snapshot compressa dell'albero dei port è stata scaricata ed estratta in `/usr/ports/`, l'aggiornamento dell'albero dei port consiste in due passi: scaricando gli aggiornamenti della snapshot compressa, e usare questi per aggiornare l'albero dei port effettivo. Questi due passi possono essere specificati a `portsnap` con un comando singolo.

    # portsnap fetch update

### Nota:

Alcune versioni vecchie di `portsnap` non supportano questa sintassi; se fallisce, prova in questo modo:

    # portsnap fetch
    # portsnap update

### A.6.6. Avviare Portsnap tramite cron

Al fine di evitare problemi di «affollamenti istantanei» accedendo ai server di Portsnap, `portsnap fetch` non funziona da un job cron(8). Esiste invece un comando apposito `portsnap cron`, che attende una durata random fino a 3600 secondi prima di scaricare gli aggiornamenti.

Inoltre, è fortemente racomandato che `portsnap update` non sia eseguito da un job `cron`, poichè è soggetto a causare problemi se viene avviato allo stesso tempo di compilazione o installazione di un port. Ad ogni modo, è possibile aggiornare i file `INDEX` dei port, e può essere fatto passando il flag `-I` a `portsnap`. (Ovviamente, se `portsnap -I update` viene eseguito da `cron`, sarà necessario eseguire successivamnte `portsnap update` senza la flag `-I` al fine di aggiornare il resto dell'albero.)

Aggiungendo la riga seguente in `/etc/crontab`, `portsnap` aggiornerà la snapshot compressa e i file `INDEX` in `/usr/ports/`, e manderà una email se qualche port installato non è aggiornato:

    0 3 * * * root portsnap -I cron update && pkg_version -vIL=

### Nota:

Se l'ora di sistema non è settata all'ora locale, sostituisci `3` con un valore random tra 0 e 23, al fine di disporre il carico sui server Portsnap in modo uniforme.

### Nota:

Alcune versioni datate di `portsnap` non supportano l'elenco di comandi multipli (es., `cron update`) nella stessa invocazione di `portsnap`. Se la riga di comando precedente fallisce, prova a sostituire `portsnap -I cron update` con `portsnap cron && portsnap -I update`.

Indietro | Risali | Avanti
A.5. Uso di CVSup | Partenza | A.7. Tag CVS

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