PDA

View Full Version : Apt-cacher


bbelze
13-07-2008, 16:35
Salve a tutti, sono nuovo del forum ma linux sono ormai alcuni anni che lo uso come sistema desktop.
In casa possiedo tre macchine x86 con debian sid (sidux) configurate in modo che una delle tre macchine funga da server di apt-cacher. Tutto funziona a meraviglia.
Ho creato uno script che ho posizionato in /usr/sbin in esecuzione ogni giorno alle 24, che contiene quanto seguente[siate buoni con i commenti, è io mio primo script bash!]:
#!/bin/bash
apt-get update && apt-get dist-upgrade -d -y --force-yes
rsync -r -h -v -u --ignore-existing --progress /var/cache/apt/archives/*.deb /var/cache/apt-cacher/import && /usr/share/apt-cacher/apt-cacher-import.pl
Volevo chiedervi:

Avete qualche consiglio per fare in modo che rsync non debba sovrascrivere tutte le volte ogni singolo pacchetto già presente nella cartella di destinazione? [questo per me è importantissimo!]
Esiste la possibilità di eliminare i deb con versione più vecchia mano a mano che vengono scaricate versioni più aggiornate, per risparmiare spazio su disco?

Ovviamente se volete propormi di cambiare parti dello script sono tutt'orecchi! Il mio obiettivo è far funzionare al meglio il server visto che in un futuro non troppo lontano ho intenzione di usare una vecchia macchina come server per apt-cacher, samba, cups, ecc...e meno cicli di cpu si sprecano e meglio è :D
Grazie mille, davide.

Gimli[2BV!2B]
13-07-2008, 18:52
Avete qualche consiglio per fare in modo che rsync non debba sovrascrivere tutte le volte ogni singolo pacchetto già presente nella cartella di destinazione? [questo per me è importantissimo!]L'unica altra opzione che mi balza all'occhio oltre a quelle che hai usato è --size-only, che stando alla logica è un sottoinsieme di --ignore-existing ma serve a specificare di ignorare tempi di creazione diversi, ed è quindi un insieme più grande dell'opzione sui tempi che hai usato -u che specifica di controllare solo i file che sul ricevente sono più vecchi.

Esiste la possibilità di eliminare i deb con versione più vecchia mano a mano che vengono scaricate versioni più aggiornate, per risparmiare spazio su disco?Se il problema riguarda sempre l'importazione e non la cache di apt-cacher, dovrebbe bastare un apt-get autoclean.
Se invece è apt-cacher ad accumulare versioni ridondanti credo che manchi l'opzione clean_cache (equivalente ad autoclean) nel file di configurazione del cacher (/etc/apt-cacher/apt-cacher.conf).

Ecco quindi la mia proposta:#!/bin/bash
apt-get update && apt-get dist-upgrade -d -y --force-yes && apt-get autoclean
rsync -rhv --size-only --ignore-existing --progress /var/cache/apt/archives/*.deb /var/cache/apt-cacher/import && /usr/share/apt-cacher/apt-cacher-import.pl

Per finire un appunto stilistico/bashistico: potresti usare lo shabang (http://it.wikipedia.org/wiki/Shabang) -e o set -e e rendere più leggibile il file e più sicura l'esecuzione solo in assenza di errori (http://www.federico.fenara.it/?p=8) (anche se in questo caso non possono succedere delle gran catastrofi...).
#!/bin/bash -e

apt-get update
apt-get dist-upgrade -d -y --force-yes
apt-get autoclean

rsync -rhv --size-only --ignore-existing --progress /var/cache/apt/archives/*.deb /var/cache/apt-cacher/import
/usr/share/apt-cacher/apt-cacher-import.pl

bbelze
14-07-2008, 00:14
Perfetto, ho provato con i tuoi suggerimenti e sembra funzionare esattamente come ci si aspettava. Ho letto i link che hai segnalato e sono davvero interessanti...soprattutto per quanto riguarda il blog.
Per lo spazio su disco mi riferivo proprio ad autoclean, non ad apt-cacher per il quale il parametro è settato a modo. Potevo svegliarmi prima e leggere per bene il man di apt-get...quindi grazie davvero per il grandissimo favore che mi hai fatto:)

Gimli[2BV!2B]
14-07-2008, 00:53
Anch'io ho da qualche tempo una mezza idea di fare qualcosa di questo tipo, ma nella mia rete i pc Debian sono solo 2 su 3, ed i pacchetti in comune tra i due sono molto pochi, soprattutto in dimensione... vedrò se provare...

Prego e alla prox!