domenica 27 marzo 2011

Archlinux: condividere i pacchetti di pacman nella lan con webfs

Ecco un sistema veramente semplice quanto efficace e funzionale per condividere i pacchetti scaricati e disponibili su un pc Archlinux ( che funzionerà da server ) con le altre macchine presenti nella vostra lan.

Lato server:
Installiamo webfs, un semplice  demone http che utilizzeremo per creare il nostro piccolo mirror locale:   

# pacman -S webfs

editiamo il file di configurazione "/etc/conf.d/webfsd", andando a sostituire questa riga:

WEBFSD_ARGS="-p 8080 -u nobody -R /var/www/htdocs -f index.html"

con quest'altra:

WEBFSD_ARGS="-p 8080 -u nobody -R /var/cache/pacman/pkg"

in questo modo webfs utilizzerà come "document root" la directory predefinita dove pacman salva i pacchetti tar.xz.
Avviamo webfs:

# /etc/rc.d/webfsd start

ed andiamo ad aggiungere "webfsd"  alla lista "DAEMONS" in /etc/rc.conf per fare in modo che il servizio venga avviato automaticamente al boot.
Controlliamo che tutto funzioni a dovere digitando nel nostro browser preferito "http://localhost:8080". In caso positivo verrà visualizzato l'elenco completo dei pacchetti presenti nella cache di pacman. Non ci resta che configurare i client.

Lato client:
La configurazione sui pc client sta tutta nell'aggiungere questa riga in /etc/pacman.d/mirrorlist:

Server = http://[ip-del-server]:8080

E' fondamentale che questa riga preceda ogni altra definizione di "Server" all'interno del file!
Così facendo ogni qualvolta utilizzerete pacman per aggiornare o installare dei nuovi pacchetti, questi verranno prelevati (ovviamente se presenti ) dal vostro server locale.
Dal momento che il nostro server condivide solo i pacchetti ma non il database dei pacchetti stessi, verranno generati degli errori di questo tipo, utilizzando pacman con l'opzione "-Sy": 

errore: impossibile scaricare il pacchetto 'core.db' da linuxbox : Not Found

Questi errori possono essere tranquillamente ignorati e al tempo stesso non c'è nessun modo per evitare che si presentino, con questa configurazione :-)
Accertatevi solo di aver dei server esterni funzionanti nel vostro mirrorlist e godetevi i benefici in termini di velocità e di risparmio di banda!!


Aggiornamento del 28/08/12

Ad oggi purtroppo webfs non è ancora compatibile con systemd: se cercate un servizio alternativo funzionante con il nuovo init di Lennart Poettering, potete puntare su thttp; installiamolo (da AUR) con:

$ yaourt -S thttpd

editiamo il file di configurazione  /etc/thttpd.conf in questo modo:

dir=/var/cache/pacman/pkg
chroot
user=http
port=8080
charset=utf-8


per avviare immediatamente il servizio:

# systemctl start thttpd.service

per abilitare l'avvio automatico al boot:

# systemctl enable thttpd.service

La configurazione lato client resta invariata, cioè esattamente identica a quella illustrata relativamente a webfs