Sui vecchi sistemi FreeBSD, Portsnap non è incluso automaticamente, ma può essere installato da sysutils/portsnap port usando il comando:
# pkg_add -r portsnap
Portsnap prima preleva e aggiorna comprime gli snapshot dell'albero dei port di FreeBSD archiviato in /var/db/portsnap/ (in /usr/local/portsnap/ se Portsnap è installato da FreeBSD Ports Collection) per impostazione predefinita, quindi estrae e aggiorna solo il file non compresso albero delle porte live in /usr/ports.
Il comportamento e il funzionamento di Portsnap sono controllati dal file di configurazione portsnap.conf che si trova in /etc (in /usr/local/etc/ se Portsnap è installato dalla FreeBSD Ports Collection e il file di configurazione non viene generato automaticamente quando è appena installato, invece troverai portsnap.conf.sample, basta copiarlo come portsnap.conf). In genere, il file di configurazione predefinito fa il suo lavoro.
A riga di comando, sono supportate le seguenti opzioni, anche se la maggior parte delle volte non è necessario utilizzarle, alcune possono essere configurate nel file di configurazione stesso:
-d workdir :archivia i file di lavoro (ad es. aggiornamenti scaricati) in workdir. (predefinito:/var/db/portsnap, o come indicato nel file di configurazione)
-f conffile :legge la configurazione da conffile. (predefinito:/etc/portsnap.conf)
-I :per il comando update, aggiorna i file INDEX, ma non il resto dell'albero delle porte.
-k KEY :aspettati una chiave pubblica con un hash SHA256 specificato. (predefinito:legge il valore dal file di configurazione)
-p portsdir :quando si estrae o si aggiorna uno snapshot non compresso, operare sulla directory portsdir. (predefinito:/usr/ports/, o come indicato nel file di configurazione.)
-s server :recupera i file dal server o dal pool di server specificato. (predefinito:portsnap.FreeBSD.org o come indicato nel file di configurazione.)
percorso:solo per il comando di estrazione, operare solo su parti dell'albero delle porte che iniziano con percorso. (ad es. portsnap sysutils/port estrae sysutils/portsman, sysutils/portsnap, sysutils/portupgrade, ecc.)
La sinossi della riga di comando di Portsnap è:
portsnap [-I] [-d workdir] [-f conffile] [-k KEY] [-p portsdir] [-s server] comando … [percorso]
Utilizzo di Portsnap
- Crea una directory vuota /usr/ports se non esiste.
# mkdir /usr/ports
- Recupera e scarica un'istantanea compressa della raccolta di porte in /var/db/portsnap (o in qualsiasi altra posizione specificata nel file di configurazione). Connessione Internet necessaria in questa fase) e aggiorna lo snapshot esistente.
# portsnap fetch
- Se stai eseguendo Portsnap per la prima volta (anche se è già stato creato o popolato un albero di porte, per consentire a Portsnap di stabilire una linea di base da cui portsnap può determinare quali parti dell'albero di porte devono essere aggiornate) o /usr /ports non è stato popolato, estrae lo snapshot e sostituisce i file e le directory esistenti e stabilisce l'albero delle porte mantenuto da Portsnap in /usr/ports:
# portsnap extract
Questo passaggio può essere saltato se stai solo aggiornando l'albero delle porte.
- Se hai già una /usr/ports popolata e stai solo aggiornando, esegui invece il seguente comando:
# portsnap update
Nota:per aggiornare FreeBSD Ports Tree, i passaggi 1 e 3 possono essere combinati in un unico comando:portsnap fetch update (non supportato nella versione precedente di Portsnap).
Eseguire Portsnap come Cron Job
portsnap fetch non sarà in grado di essere eseguito da un lavoro cron per evitare il carico di improvvisi picchi di download delle richieste sui server Portsnap. Invece, esiste uno speciale comando portsnap cron, che attende e dorme per una durata casuale fino a 3600 secondi prima di recuperare gli aggiornamenti, come se fosse specificato il comando fetch.
Per eseguire automaticamente portsnap con cron job, aggiungi semplicemente la linea in /etc/crontab (la linea imposta l'ora alle 3 del mattino ogni giorno, puoi scegliere la tua ora):
0 3 * * * root /usr/sbin/portsnap cron
Ciò assicurerà che lo snapshot di FreeBSD della raccolta dei port sia sempre aggiornato e possa essere estratto rapidamente in /usr/ports.
Nota:esecuzione di aggiornamento di portsnap from cron non è raccomandato in quanto potrebbe causare problemi se l'installazione o l'aggiornamento di una porta avviene nel momento in cui viene eseguito il lavoro cron. Portsnap aggiornerà o rimuoverà i file utilizzati dalla build del port. Tuttavia, eseguendo portsnap -I update per aggiornare i file di indice delle porte è possibile e può essere utilizzato insieme a portversion per identificare il software installato che non è aggiornato.
Per aggiornare lo snapshot compresso delle porte e i file INDEX in /usr/ports/ e inviare un'e-mail se alcune porte installate non sono aggiornate, utilizzare la riga seguente in /etc/crontab:
0 3 * * * root portsnap -I cron update && pkg_version -vIL=
Nota:la versione precedente di portsnap non supporta l'elenco di più comandi (ad es. cron update) nella stessa chiamata di portsnap. Se la riga precedente non riesce, prova a sostituire portsnap -I cron update con portsnap cron &&portsnap -I cron update .