|
|
Riga 1: |
Riga 1: |
| ==Introduzione== | | ==Introduzione== |
| In questo tutorial analizzeremo apt-proxy.
| | |
| Apt-proxy � un comodo strumento per mantenere una cache dei pacchetti Debian gi�
| | Molto spesso ci si trova nella necessità di avere un mirror completo di una distribuzione Debian per uno o più computer che non sono connessi ad internet (o lo sono tramite una connessione troppo lenta). |
| scaricati, riuscendo cos� a velocizzare il download da parte di altri client
| | Debmirror ci viene in aiuto, dando la possibilità di creare un mirror locale. |
| connessi alla stessa Lan ed a risparmiare un po' di banda, soprattutto nei casi
| | |
| in cui questa � a pagamento =)
| |
|
| |
|
| ==Installazione== | | ==Installazione== |
| Per installarlo � sufficiente dare il seguente comando: | | |
| | Per installare debmirror è sufficiente un |
| <pre> | | <pre> |
| # apt-get install apt-proxy | | # apt-get install debmirror |
| </pre> | | </pre> |
| | | Un consiglio, nel caso in cui venga creato un mirror per effettuare una installazione od un aggiornamento per un computer non connesso in rete: usate un disco fisso esterno (nel caso in cui il mirror debba essere trasportato su un altro computer) o di un DVD-RW (nel caso in cui il mirror sia parziale). |
| {{Box|NOTA|In questo periodo sta avvenendo la transizione tra la versione 1 e la versione 2. In questo howto verranno analizzate entrambe le versioni, e verr� illustrato anche il passaggio dalla v1 alla v2.}}
| |
|
| |
|
|
| |
|
| ==Configurazione== | | ==Configurazione== |
|
| |
|
| ===Versione 1===
| | Il programma non richiede configurazione, in quanto tutti gli eventuali parametri devono essere passati tramite riga di comando. |
|
| |
|
| La configurazione molto semplice; tutti i parametri sono contenuti in un file:
| |
| /etc/apt-proxy/apt-proxy.conf
| |
|
| |
|
| Ne riporto una versione semplificata, in cui le varie variabili di
| | ==Opzione e Parametri== |
| configurazione sono commentate:
| |
|
| |
|
| | La 'sintassi' del comando è la seguente: |
| <pre> | | <pre> |
| -------------------------------------------------------
| | $ debmirror [OPZIONI] mirrordir |
| # imposta la directory in cui salvare al cache
| |
| APT_PROXY_CACHE=/var/cache/apt-proxy
| |
| | |
| # Esempio per il repository ufficiale Debian
| |
| # Debian main
| |
| #
| |
| # Qui di seguito sono riportate le righe da inserire in un ipotetico
| |
| sources.list
| |
| # ovviamente sostituendo APTPROXY con l'indirizzo del server che funge da proxy.
| |
| #deb http://APTPROXY:9999/debian stable main contrib non-free
| |
| #deb http://APTPROXY:9999/debian woody main contrib non-free
| |
| #deb http://APTPROXY:9999/debian sarge main contrib non-free
| |
| #deb http://APTPROXY:9999/debian sid main contrib non-free
| |
| #deb http://APTPROXY:9999/debian project/experimental/main/binary-$(ARCH)/
| |
| | |
| # Qui aggiungiamo un backend, indicando la directory in cui verr� creata la
| |
| cache
| |
| # La prima riga contiene la dichiarazione del backend, la seconda indica un
| |
| repository
| |
| # locale (quello della cache), dalla seconda alla penultima sono indicati i vari
| |
| mirror
| |
| # ufficiali, l'ultima indica un collegamento `alternativo` a http, cio� via
| |
| ftp...
| |
| # Da notare l'importanza delle backslash a fineriga (ultima riga esclusa)
| |
| add_backend /debian/
| |
| $APT_PROXY_CACHE/debian/
| |
| http://ftp2.it.debian.org/debian/
| |
| # http://ftp.de.debian.org/debian/
| |
| # http://ftp.uk.debian.org/debian/
| |
| # +ftp.us.debian.org::debian/
| |
| | |
| | |
| | |
| ############################## OTHER VARS ##################################
| |
| # Qui sono presenti le variabili di configurazione
| |
| #
| |
| # Dopo quanti giorni devono essere eliminati i pacchetti vecchi;
| |
| # Se impostata a 0, attiva l'eliminazione immediata dei vecchi pacchetti
| |
| (sconsigliata)
| |
| CLEANUP_DAYS=14
| |
| | |
| # Dopo quanti giorni verranno cancellati i pacchetti considerati vecchi,
| |
| raramente utilizzati
| |
| # Commentarla per disabilitare questa funzione.
| |
| CLEAN_SWEEP=60
| |
| | |
| # Il numero massimo di versioni di un pacchetto da conservare in memoria.
| |
| # Commentarla per disabilitare questa funzione.
| |
| MAX_VERSIONS=2
| |
| | |
| # Frequenza massima, in minuti, degli aggiornamenti dei pacchetti
| |
| # Impostare un valore abbastanza alto per avere delle buone performance.
| |
| BACKEND_FREQ=240
| |
| | |
| # Quanti secondi devono passare prima che RSYNC vada in TimeOut
| |
| RSYNC_TIMEOUT=30
| |
| | |
| # Quanti secondi devono passare prima che RSYNC vada in TimeOut
| |
| WGET_TIMEOUT=30
| |
| | |
| # Consente di impostare il path dell'eseguibile di wget e/o di appendere delle
| |
| opzioni all'eseguibile
| |
| #WGET=wget
| |
| | |
| # Consente di impostare il path dell'eseguibile di rsync e/o di appendere delle
| |
| opzioni all'eseguibile
| |
| #RSYNC=rsync
| |
| | |
| # Per appoggiarsi ad un proxy per il download dei pacchetti:
| |
| #export http_proxy=http://proxy:8080/
| |
| #export ftp_proxy=http://proxy:8080/
| |
| # in caso di necessit�, � possibile gestire l'autenticazione:
| |
| #export http_proxy=http://user:pass@proxy:8080/
| |
| #export ftp_proxy=http://user:pass@proxy:8080/
| |
| | |
| -------------------------------------------------------
| |
| </pre> | | </pre> |
| | con i seguenti parametri: |
|
| |
|
| | ; mirrordir : Questo parametro obbligatorio indica dove deve essere creato il mirror. Attenzione alla directory indicata in quanto, come opzione di default, vengono rimosse quelle directory e file che non appaiono nel repository di cui si effettua il mirroring |
|
| |
|
| ===Versione 2===
| | ; --debug : Abilita il Debug |
| | |
| In questo periodo � stata rilasciata la versione 2 di apt-proxy
| |
| (http://apt-proxy.sourceforge.net/).
| |
| Le migliorie sono tante, e invito a fare una visitina al sito ufficiale.
| |
| Prima di passare all'analisi del nuovo file di configurazione, vorrei
| |
| sottolineare che, ora, apt-proxy gira come servizio, con relativo script di
| |
| avvio/riavvio/stop: /etc/init.d/apt-proxy. Questo vuole dire che, ogni volta che viene modificato il file, conviene riavviare il server apt-proxy.
| |
|
| |
|
| Analizziamo il file di configurazione di questa nuova versione.
| | ; --progress -p : Visualizza una barra di avanzamento per monitorare lo stato del mirroring |
| Come per il file di configurazione precedente, riporto una copia del mio file
| |
| di configurazione, commentando i vari parametri.
| |
|
| |
|
| <pre>
| | ; --verbose -v : Visualizza una barra di avanzamento tra i download dei file |
| [DEFAULT]
| |
| ;; Tutti i valori usati per il tempo sono espressi in secondi, � possibile | |
| ;; per� indicarli anche in minuti(m), ore(h) o giorni(d), postponendo al numero
| |
| ;; la lettera distintiva dell'unit� di misura.
| |
|
| |
|
| ;; � possibile impostare l'ip al quale risponde il server | | ; --source : Include i pacchetti dei sorgenti nel mirror [Default] |
| ;; utile per limitare l'accesso (ad esempio non renderlo accessibile
| |
| ;; dall'esterno)
| |
| ;address = 192.168.0.254
| |
|
| |
|
| ;; Porta a cui il server presta ascolto | | ; --nosource: Non include i sorgenti dei programmi nel mirror |
| port = 9999
| |
|
| |
|
| ;; Intervallo di refresh per Packages/Sources/Contents | | ; --md5sums -m: Utilizza l'md5 per verificare quali file nel mirror locale sono corretti ed aggiornati, è disabilitato di default in quanto lento e 'paranoico' |
| ;;
| |
| ;; Intervallo minimo prima di aggiornare un file
| |
| min_refresh_delay = 240
| |
|
| |
|
| ;; Vita minima di un file prima che venga aggiornato (NOT YET IMPLEMENTED) | | ; --passive: Esegui il download in modalità 'passiva' |
| ;min_age = 23h
| |
|
| |
|
| ;; Rimuovi il commento da questa direttiva per fare in modo che | | ; --host=remotehost -h: Indica qualche host utilizzare, si invita a controllare il mirror più vicino a questo indirizzo: http://www.debian.org/mirror/list , consentendo così una migior ripartizione del traffico sui mirror presenti. (Default: ftp.debian.org) |
| ;; apt-proxy continui a scaricare anche se il client si disconnettr
| |
| ;; Utile per connessioni always-on (ADSL...)
| |
| ;; complete_clientless_downloads = 1
| |
|
| |
|
| ;; Debugging settings. | | ; --user=remoteusername -u : Sperifica l'utente remoto per accedere all'host remoto (normalmente va benissimo il valore di default) [Default: anonymous] |
| ;; for all debug information use this:
| |
| ;; debug = all:9
| |
| debug = all db:3
| |
|
| |
|
| ;; Debugging remote python console | | ;--method=ftp|hftp|http|rsync -e : Specifica quale metodo utilizzare per effettuare il download dei file. Sono supportati: ftp, http, hftp (ftp over http) rsync (per questo protocollo bisogna preporre ':' alla root directory dell'host remoto, ad esempio ":debian") |
| ;; Do not enable in an untrusted environment
| |
| ;telnet_port = 9998
| |
| ;telnet_user = apt-proxy
| |
| ;telnet_password = secret
| |
|
| |
|
| ;; Timeout mentre si ricevono dati da un server | | ; --proxy=http://user:pass@url:port/: |
| timeout = 30
| | Specifica i parametri per la connessione tramite proxy |
|
| |
|
| ;; Cache directory di apt-proxy | | ; --timeout=seconds -t: Specifica l'intervallo prima che il download di un file vada in timeout [Default: 300 secondi] |
| cache_dir = /var/cache/apt-proxy
| |
|
| |
|
| ;; Usa FTP passivo (default=on) | | ; --root=directory -r directory: Specifica la root directory dell'host remoto. Normalmente è "/debian". In questa directory è contenuta la directory "dists". [Default: /debian] |
| ;passive_ftp = on
| |
|
| |
|
| ;; Usa un proxy apt | | ; --dist=foo[,bar,..] -d foo: Specifica la distribuzione (woody, sarge, sid). Possono essere indicate tutte e tre (-dist=woody,sarge,sid oppure -d woody -d sarge -d sid); i link (stable, unstable, testing) potrebbero non funzionare, quindi si invita ad utilizzare il nome della release). [Default: sid] |
| ;http_proxy = host:port
| |
|
| |
|
| ;; Disable HTTP pipelining within apt-proxy (for test purposes) | | ; --section=foo[,bar,..] -s foo: Specifica la sezione (o le sezioni) di Debian di cui effettuare il mirroring. [Default: main,contrib,non-free,main/debian-installer] |
| ;disable_pipelining=1
| |
|
| |
|
| ;;--------------------------------------------------------------
| | ;--arch=foo[,bar,..] -a foo: Specifica la architettura (o le architetture) di cui effettuare il mirroring. (Default: i386) |
| ;; Cache housekeeping
| |
|
| |
|
| ;; Time to perform periodic housekeeping: | | ; --cleanup: Esegue una pulizia della directory in cui verrà creato il mirror. [Default: on] |
| ;; - delete files that have not been accessed in max_age
| |
| ;; - scan cache directories and update internal tables
| |
| cleanup_freq = 60d
| |
|
| |
|
| ;; Maximum age of files before deletion from the cache (seconds) | | ; --nocleanup: Non esegue la pulizia del mirror al termine della creazione dello stesso |
| max_age = 14d
| |
|
| |
|
| ;; Maximum number of versions of a .deb to keep per distribution | | ; --postcleanup: Esegue la pulizia del mirror locale solo quando il mirroring è terminato senza errori |
| max_versions = 2
| |
|
| |
|
| ;; Add HTTP backends dynamicaly if not already defined? (default=on) | | ; --ignore=regex: Non elimina i file che rispondono l'espressione regolare [regexp] (può essere usato più volte) |
| ;dynamic_backends = on
| |
|
| |
|
| ;;---------------------------------------------------------------
| | ; --exclude=regex: Non esegue il download dei file che soddisfano l'espressione regolare (può essere usato più volte) |
| ;;---------------------------------------------------------------
| |
| ;; Backend servers
| |
| ;;
| |
|
| |
|
| ;[debian] | | ;--exclude-deb-section=regex: Non esegue il download dei file contenuti nella sezione che soddisfa l'espressione regolare [regexp] (può essere usato più volte) |
| ;Questo backend � stato commentato, per prevenire problemi durante
| |
| ;l'importazione dei backend dalla versione 1onfiguration
| |
| ;
| |
| ;;; The main Debian archive
| |
| ;;; � possibile sovrascrivere la direttiva `timeout` di default:
| |
| ;;timeout = 30
| |
| ;
| |
| ;;; Rsync server (NOT YET IMPLEMENTED)
| |
| ;;;rsyncpackages = rsync://ftp.de.debian.org/debian
| |
| ;
| |
| ;;; Backend server, in ordine di preferenza
| |
| ;backends =
| |
| ; http://ftp.us.debian.org/debian
| |
| ; http://ftp.de.debian.org/debian
| |
| ; http://ftp2.de.debian.org/debian
| |
| ; ftp://ftp.uk.debian.org/debian
| |
| ;
| |
| ;
| |
| ;[non-US]
| |
| ;; Debian non-US archive
| |
| ;timeout non � stata sovrascritta, quindi verr� mantenuto il
| |
| ;valore di default
| |
| ;backends =
| |
| ; http://ftp.uk.debian.org/debian-non-US
| |
| ; http://ftp.de.debian.org/debian-non-US
| |
| ; ftp://ftp.uk.debian.org/debian
| |
|
| |
|
| ;[security] | | ; --limit-priority=regex: Limita il download ai file che soddisfano l'espressione regolare per quanto riguarda la priorità del pacchetto (reguired, extra, optional, ...); (può essere usato più volte) |
| ;Questo backend � stato commentato, per prevenire problemi durante
| |
| ;l'importazione dei backend dalla versione 1onfiguration
| |
| ;
| |
| ;;; Debian security archive
| |
| ;backends =
| |
| ; http://security.debian.org/debian-security
| |
| ; http://ftp2.de.debian.org/debian-security
| |
| ;
| |
| ;[openoffice]
| |
| ;; OpenOffice.org packages
| |
| ;backends =
| |
| ; http://ftp.freenet.de/pub/debian-openoffice
| |
| ; http://ftp.sh.cvut.cz/MIRRORS/OpenOffice.deb
| |
| ; http://borft.student.utwente.nl/debian | |
|
| |
|
| ;[apt-proxy] | | ; --include=regex: Vengono inclusi i file che soddisfano l'espressione regolare [regexp] (può essere usato più volte) |
| ;; Apt-proxy new versions
| |
| ;backends = http://apt-proxy.sourceforge.net/apt-proxy
| |
|
| |
|
| ;[backports.org] | | ; --skippackages: Non scarica i file Packages e Sources (utile se questi file sono già aggiornati) |
| ;; backports.org
| |
| ;backends = http://backports.org/debian
| |
|
| |
|
| ;[blackdown] | | ; --getcontents: Scarica il file Contents.arch.gz |
| ;;; Blackdown Java
| |
| ;;backends = http://ftp.gwdg.de/pub/languages/java/linux/debian
| |
| ;
| |
| ;
| |
| ;[debian-people]
| |
| ;; people.debian.org
| |
| ;backends = http://people.debian.org
| |
|
| |
|
| ;[emdebian] | | ;--ignore-missing-release: Non lancia un errore se il file Release non è presente nel mirror |
| ;; The Emdebian project
| |
| ;backends = http://emdebian.sourceforge.net/emdebian
| |
|
| |
|
| ;[rsync] | | ;--ignore-release-gpg: Non lancia un errore se non è presente il file Release.gpg (consigliato) |
| ;; Un esempio di utilizzo con un server rsync. Non � raccomandato
| |
| ;; il suo utilizzo, a meno che non sia l'unico servizio disponibile:
| |
| ;; rsync � molto efficiente solo nel trasferimento di dati non compressi
| |
| ;; e carica molto il server.
| |
| ;backends = rsync://ftp.uk.debian.org/debian
| |
|
| |
|
| [debian]
| | ;--dry-run: Esegue una simulazione, senza scaricare i file e pulire il mirror. |
| backends =
| |
| http://ftp.it.debian.org/debian
| |
|
| |
|
| [non-US]
| | ;--rsync-options=options: Specifica le opzioni da passare a rsync. [Default: -aIL --partial] |
| backends =
| | Utile è anche l'opzione "--bwlimit=x" che consente di impostare la larghezza di banda massima da usare per il download |
| http://debian.fastweb.it/debian-non-US
| |
| http://ftp.debian.org/debian-non-US
| |
| http://ftp.it.debian.org/debian-non-US
| |
| http://ftp2.it.debian.org/debian-non-US
| |
|
| |
|
| [security]
| | ;--ignore-small-errors: Ignora degli errori 'piccoli' o 'poco sognificanti' come il non aver trovato un file al 'primo colpo' e il dover procedere ad un altro tentativo... Consigliato |
| backends =
| |
| http://security.debian.org
| |
|
| |
|
| [blackdown]
| | ;--help: Visualizza un help. |
| backends =
| |
| http://ftp.gwdg.de/pub/languages/java/linux/debian
| |
|
| |
|
| [marillat]
| |
| backends =
| |
| ftp://ftp.nerim.net/debian-marillat
| |
|
| |
|
| [jedit]
| | ==Utilizzo== |
| backends =
| |
| http://dl.sourceforge.net/sourceforge/jedit
| |
|
| |
|
| [mythtv]
| | L'utilizzo è semplice: basta indicare solo quello necessario e lui provvederà a scaricare tutti i file necessari. |
| backends =
| | Verrà creata una struttura uguale a quella di un mirror Debian ed eventualmente (se già presente) verranno controllati ed aggiornati i pacchetti vecchi. |
| http://dijkstra.csh.rit.edu:8088/~mdz/debian/
| |
| </pre>
| |
|
| |
|
| Ok, ora abbiamo visto il file di configurazione...che dire: semplicissimo!
| | Ecco alcuni esempi di utilizzo: |
| Prima di concludere la parte relativa alla configurazione del server, vorrei
| | * Mirror completo di sarge: |
| mostrare alcuni comandi importanti, utili per la configurazione e l'utilizzo
| |
| di apt-proxy: | |
|
| |
|
| <pre> | | <pre> |
| # apt-proxy-import
| | $ debmirror -p -d sarge --ignore-small-errors --ignore-release-gpg /path/to/dir |
| </pre> | | </pre> |
|
| |
|
| Comando utilissimo durante la prima installazione: consente di importare dei
| |
| pacchetti Debian gi scaricati nella cache di apt-proxy.
| |
| Utilizzo:
| |
|
| |
| <pre>
| |
| # apt-proxy-import --import-dir=/dir/contentente/i/pacchetti
| |
| # apt-proxy-v1tov2
| |
| </pre>
| |
|
| |
|
| Comodissima utility che converte il file di configurazione della versione 1 in
| | ('''--ignore-small-errors --ignore-release-gpg''' le includo sempre, in quanto potrebbero dare dei problemi; eventualmente si può provare a lanciare il processo senza gli 'ignore' per controllare eventuali errori nel caso il processo non vada a buon fine. |
| uno compatibile con la versione 2.
| |
| Utilizzo:
| |
|
| |
|
| | * Mirror dei file che non appartengono alla sezione 'games', escludendo anche i sorgenti sorgenti: |
| <pre> | | <pre> |
| # apt-proxy-v1tov2 [v1_conf [v2_sample_conf]] > v2_conf
| | $ debmirror -p -d sarge --ignore-small-errors --ignore-release-gpg --exclude="games" --nosources /path/to/dir |
| </pre> | | </pre> |
|
| |
|
| Di default utilizza /etc/apt-proxy/apt-proxy.conf per v1_conf e
| | * Mirror di tutta Sarge (Sorgenti esclusi): |
| /etc/apt-proxy/apt-proxy-v2.conf per v2_sample_conf.
| |
| | |
| <pre> | | <pre> |
| # /etc/init.d/apt-proxy
| | $ debmirror -p -d sarge --ignore-small-errors --ignore-release-gpg --nosources /path/to/dir |
| [start|stop|restart|force-reload]
| |
| </pre> | | </pre> |
|
| |
|
| Script di gestione di apt-proxy:
| | Come potete vedere da questi 3 esempi, l'utilizzo è molto semplice ed immediato. |
| start: avvia il server;
| |
| stop: lo arresta;
| |
| restart: lo raivvia;
| |
| force-reload: Forza la rilettura del file di configurazione.
| |
|
| |
|
| ==Utilizzo== | | ==Debmirror e Cron== |
| | |
| Niente di pi� semplice: basta modificare il proprio
| |
| /etc/apt/sources.list
| |
| mettendo come server indirizzo_server:9999
| |
| | |
| | |
| ===Esempio===
| |
| Se prima, nel nostro sources.list avevamo una riga del tipo:
| |
|
| |
|
| | Può essere utile, per manterene aggiornato il mirror, lanciare debmirror ad intervalli regolari (magari ogni giorno)... |
| | Così, aggiungengo una semplice riga a /etc/crontab è possibile programmare l'esecuzione di debmirror. |
| | Ecco un esempio, che programma l'esecuzione del mirroring alle 00.00 di ogni giorno: |
| <pre> | | <pre> |
| deb http://ftp2.it.debian.org/debian/ testing main
| | 0 0 * * * maxer /usr/bin/debmirror -d sarge --ignore-small-errors --ignore-release-gpg --arch=none --nosource /store3/deb/ |
| non-free contrib
| |
| </pre> | | </pre> |
| | così il mirror verrà aggiornato di notte, evitando eventuali problemi di banda o di carico eccessivo del sistema! |
|
| |
|
| non ci baster che seguire questi passi, per configurare il server e i client:
| |
|
| |
|
| 1) inseriamo il backend nel server, se non � gi� presente:
| | ==COonsiderazioni sull'Utilizzo== |
| <pre>[debian]
| |
| backends =
| |
| http://ftp2.it.debian.org/debian/
| |
| </pre>
| |
|
| |
|
| 2) modifichiamo il soruces.list dei client:
| | Prima di utilizzare questo strumento per installare o aggiornare Debian su un computer sprovvisto di connessione ad internet e/o con una connessione lenta, vorrei porre in luce alcune questioni: |
| <pre>
| | * L'utilizzo smodato di questo strumento genera un aumento di banda utilizzata (da parte dei mirror) considerevole (nell'ordine di Gbyte), uno spreco per un solo computer. |
| deb http://indirizzoserver:9999/debian/ testing main non-free contrib
| | * Spesso si scaricano più programmi di quelli necessari (anzi, spesso quelli non utilizzati sono più del doppio di quelli utilizzati); consiglio quindi il download della prima e della seconda ISO di Sarge, o il primo DVD, in quanto su questi è presente il 90% dei pacchetti più utilizzati in ambito 'domestico'. |
| </pre>
| | * [http://guide.debianizzati.org/index.php/Apt-zip:_aggiornamenti_senza_una_connessione_veloce Apt-zip] è spesso molto più comodo da utilizzare, ed anche più veloce... |
| | | Non dimentichiamoci che le risorse dei mirror sono 'donate' al progetto Debian, ed un aumento esponenziale o troppo sostenuto delle risorse richieste potrebbe compromettere la disponibilità dell'hoster... |
| 3) aggiorniamo apt-proxy
| |
| <pre>
| |
| # /etc/init.d/apt-proxy force-reload
| |
| </pre>
| |
| | |
| 4) aggiorniamo con
| |
| <pre>
| |
| # apt-get update
| |
| </pre>
| |
|
| |
|
| | Inoltre debmirror non è designato propriamente per generare 'mirror di installazione', ma per creare mirror locali in LAN di medie dimensioni (anche se oramai può venir tranquillamente sostituito da apt-cache o simili). |
|
| |
|
| Fine!
| | Dopo queste piccole considerazioni, happy Debian! |
|
| |
|
| | Lettura Consigliata: [[Apt-Proxy: un proxy per i pacchetti Debian]] |
|
| |
|
| ---- [[User:MaXeR|MaXeR]] | | ---- [[User:MaXeR|MaXeR]] |