Al fine di ottimizzare al massimo i tempi di installazione dei pacchetti scaricati tramite ports e minimizzare i trasferimenti da web, è possibile realizzare una struttura condivisa di gestione della directory distfiles dei ports di FreeBSD.
La directory, normalmente situata in /usr/ports/distfiles, contiene infatti tutti i pacchetti scaricati da internet per effettuare l’installazione dei ports.
La logica alla base dell’ottimizzazione è quella di creare una singola macchina repository che condivida a tutte le altre macchine la directory distfiles. La tecnologia “nativa” per la condivisione delle directory via rete sotto FreeBSD/Unix è l’NFS. La sua configurazione è piuttosto semplice, ed essendo parte del base-system, non richiede alcuna installazione di software aggiuntivo.
Condivisione lato Repository
Per condividere la cartella sulla macchina di Repository sarà sufficiente attivare il servizio nfsserver ed esportare la directory.
Il primo step da effettuare è quello di configurare il file export indicando quali directory si voglia esportare ed a quali server. Il file è situato in /etc/export e la sua sintassi è piuttosto basilare: ogni riga contiene il path da esportare e l’indirizzo IP (o gli indirizzi IP) che potranno accederci. Sarà possibile inoltre specificare alcuni parametri aggiuntivi quali -ro per indicare che l’export debba essere effettuato “read-only”. Nel nostro caso, però, non è così:
/usr/ports/distfiles 192.168.1.10 192.168.1.24 192.168.1.45
A questo punto per attivare il servizio nfsserver bisogna modificare il file /etc/rc.conf aggiungendo le seguenti righe:
rpcbind_enable="YES"
nfs_server_enable="YES"
mountd_flags="-r"
A questo punto per avviare manualmente il server (che comunque si avvierà al reboot della macchina) è sufficiente eseguire:
/etc/rc.d/rpcbind start
/etc/rc.d/nfsserver start
/etc/rc.d/nfsd start
Per verificare di aver effettuato tutto correttamente a questo punto si può eseguire il comando showmount -e che elencherà tutti i filesystem condivisi sull’attuale macchina (nonché chi possa accedere alle condivisioni).
Accesso al Repository
L’accesso al Repository lato client è ancora più semplice: sarà infatti sufficiente attivare il client NFS e provvedere al mount del volume remoto. Per attivare il client NFS bisogna modificare il file /etc/rc.conf aggiungendo le seguenti righe:
nfs_client_enable="YES"
A questo punto per avviare manualmente il client (che comunque si avvierà al reboot della macchina) è sufficiente eseguire:
/etc/rc.d/nfsclient start
Bene, a questo punto è possibile effettuare il mount del volume remoto. Per far ciò la cosa migliore è rinominare l’eventuale vecchia distfiles già presente sul client ed effettuare il mount.
mv /usr/ports/distfiles /usr/ports/distfiles.old
mount <server>:/usr/ports/distfiles /usr/ports/distfiles
Per essere sicuri che il volume remoto venga automaticamente rimontato al boot sarà sufficiente modificare il file /etc/fstab aggiungendo una riga relativa al mount remoto:
<server>:/usr/ports/distfiles /usr/ports/distfiles nfs rw 0 0