|
|
Riga 1: |
Riga 1: |
| ==INTRODUZIONE==
| | Spesso abbiamo la necessit� di installare la nuova versione di un pacchetto di cui proprio non possiamo fare a meno, che per� non � disponibile per il rilascio di Debian che abbiamo installato. |
| In questo tutorial analizzeremo apt-proxy.
| |
| Apt-proxy è un comodo strumento per mantenere una cache dei pacchetti Debian già
| |
| scaricati, riuscendo così a velocizzare il download da parte di altri client
| |
| connessi alla stessa Lan ed a risparmiare un po' di banda, soprattutto nei casi
| |
| in cui questa è a pagamento =)
| |
|
| |
|
| ==INSTALLAZIONE==
| | Il caso pi� frequente � probabilmente quello di un' installazione di Sarge con la necessit� di installare anche pacchetti presenti solo in Unstable o in Experimental, oppure di voler usare un repository con pacchetti particolari, ma compilati per una release di Debian diversa dalla nostra. |
| Per installarlo è sufficiente dare il seguente comando:
| |
|
| |
|
| <pre>
| | APT � nostro fido alleato anche in questi frangenti, permettendoci di utilizzare fonti per pacchetti di releases diverse (e soddisfarne le dipendenze) senza costringerci ad un upgrade dell' intera distribuzione e senza dover impazzire per risolvere conflitti e incosistenze. |
| # apt-get install apt-proxy
| |
| </pre>
| |
| | |
| | |
| ; 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==
| |
| | |
| ===Versione 1===
| |
|
| |
|
| La configurazione è molto semplice; tutti i parametri sono contenuti in un file:
| | In questo how-to mostrer� come utilizzare pacchetti Debian provenienti da Sarge, Unstable, Experimental, Marillat (multimedia/video) e Rarewares.org (multimedia/audio), ma le istruzioni sono facilmente riportabili anche ad altre situazioni (unstable + experimental, woody + sarge, woody + unstable, woody + sarge + sid, ecc...). |
| /etc/apt-proxy/apt-proxy.conf | |
|
| |
|
| Ne riporto una versione semplificata, in cui le varie variabili di
| | Assicuriamoci di essere l' utente root e procediamo. |
| configurazione sono commentate:
| |
|
| |
|
| | Per prima cosa editiamo il file '''/etc/apt/sources.list''' ed inseriamo gli archivi dei pacchetti Debian che utilizzeremo: |
| <pre> | | <pre> |
| ------------------------------------------------------- | | ### Debian Ufficiale -- Sarge |
| # imposta la directory in cui salvare al cache
| | deb http://ftp2.it.debian.org/debian/ testing main non-free contrib |
| APT_PROXY_CACHE=/var/cache/apt-proxy
| |
|
| |
|
| # Esempio per il repository ufficiale Debian | | ### Debian Ufficiale -- Sarge Sicurezza |
| # Debian main | | deb http://security.debian.org/ testing/updates main contrib non-free |
| #
| |
| # 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 | | ### Debian Ufficiale -- Sid |
| cache
| | deb http://ftp2.it.debian.org/debian/ unstable main non-free contrib |
| # 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/
| |
|
| |
|
| | ### Debian Ufficiale -- Experimental |
| | deb http://ftp.debian.org/debian/ ../project/experimental main |
|
| |
|
| | ### Multimedia -- Audio -- Rarewares |
| | deb http://www.rarewares.org/debian/packages/unstable ./ |
|
| |
|
| ############################## OTHER VARS ################################## | | ### Multimedia -- Video -- Marillat |
| # Qui sono presenti le variabili di configurazione
| | deb ftp://ftp.nerim.net/debian-marillat/ testing main |
| #
| | deb ftp://ftp.nerim.net/debian-marillat/ unstable main |
| # Dopo quanti giorni devono essere eliminati i pacchetti vecchi;
| | </pre> |
| # Se impostata a 0, attiva l'eliminazione immediata dei vecchi pacchetti
| |
| (sconsigliata)
| |
| CLEANUP_DAYS=14
| |
|
| |
|
| # Dopo quanti giorni verranno cancellati i pacchetti considerati vecchi,
| | A questo punto dobbiamo preparare due files normalmente non presenti sulla nostra debianbox: si tratta dei file '''preferences''' e '''apt.conf'''. |
| raramente utilizzati
| | Questi due file istruiranno APT su come gestire le dipendenze dei pacchetti, informandolo su come comportarsi in caso di conflitti e altri problemi. |
| # Commentarla per disabilitare questa funzione.
| |
| CLEAN_SWEEP=60
| |
|
| |
|
| # Il numero massimo di versioni di un pacchetto da conservare in memoria. | | Creiamo il file preferences: |
| # Commentarla per disabilitare questa funzione.
| | <pre> |
| MAX_VERSIONS=2
| | # touch /etc/apt/preferences |
| | </pre> |
| | editiamolo col nostro editor di fiducia e inseriamo queste direttive: |
| | <pre> |
| | Package: * |
| | Pin: release o=xmixahlx |
| | Pin-Priority: 950 |
|
| |
|
| # Frequenza massima, in minuti, degli aggiornamenti dei pacchetti
| | Package: * |
| # Impostare un valore abbastanza alto per avere delle buone performance.
| | Pin: release o=Unofficial Multimedia Packages |
| BACKEND_FREQ=240
| | Pin-Priority: 900 |
|
| |
|
| # Quanti secondi devono passare prima che RSYNC vada in TimeOut
| | Package: * |
| RSYNC_TIMEOUT=30
| | Pin: release a=testing |
| | Pin-Priority: 850 |
|
| |
|
| # Quanti secondi devono passare prima che RSYNC vada in TimeOut
| | Package: * |
| WGET_TIMEOUT=30
| | Pin: release a=unstable |
| | Pin-Priority: 800 |
|
| |
|
| # Consente di impostare il path dell'eseguibile di wget e/o di appendere delle
| | Package: * |
| opzioni all'eseguibile
| | Pin: release a=experimental |
| #WGET=wget
| | Pin-Priority: 750 |
| | |
| # 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> |
|
| |
|
| | Il pinning pu essere orientato ad un archivio, un'origine, la versione di un pacchetto, un componente, ecc... |
|
| |
|
| ===Versione 2=== | | Con '''"o="''' si specifica l' origine (la distribuzione) del pacchetto, con '''"a="''' l'archivio (sarge,sid, stable, ecc...). |
|
| |
|
| In questo periodo è stata rilasciata la versione 2 di apt-proxy
| | Questo dato � reperibile in modo inequivocabile attraverso APT, andando a sbirciare all'interno del file "Release" che � contenuto in tutti i repository ufficiali. Per archivi personali e/o non ufficiali, invece, non � sempre e necessariamente presente (purtroppo). |
| (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.
| | Vediamo alcuni esempi: |
| Come per il file di configurazione precedente, riporto una copia del mio file
| |
| di configurazione, commentando i vari parametri.
| |
|
| |
|
| <pre> | | <pre> |
| [DEFAULT]
| | # cd /var/lib/apt/lists |
| ;; Tutti i valori usati per il tempo sono espressi in secondi, è possibile
| | # cat www.rarewares.org_debian_packages_unstable_._Release |
| ;; però indicarli anche in minuti(m), ore(h) o giorni(d), postponendo al numero
| | Archive: unstable |
| ;; la lettera distintiva dell'unità di misura.
| | Origin: xmixahlx |
| | | Label: xmixahlx_rarewares-unstable |
| ;; È possibile impostare l'ip al quale risponde il server
| | Architecture: i386 |
| ;; utile per limitare l'accesso (ad esempio non renderlo accessibile
| |
| ;; dall'esterno)
| |
| ;address = 192.168.0.254
| |
| | |
| ;; Porta a cui il server presta ascolto
| |
| port = 9999
| |
| | |
| ;; Intervallo di refresh per Packages/Sources/Contents
| |
| ;;
| |
| ;; Intervallo minimo prima di aggiornare un file
| |
| min_refresh_delay = 240
| |
| | |
| ;; Vita minima di un file prima che venga aggiornato (NOT YET IMPLEMENTED)
| |
| ;min_age = 23h
| |
| | |
| ;; Rimuovi il commento da questa direttiva per fare in modo che
| |
| ;; apt-proxy continui a scaricare anche se il client si disconnettr
| |
| ;; Utile per connessioni always-on (ADSL...)
| |
| ;; complete_clientless_downloads = 1
| |
| | |
| ;; Debugging settings.
| |
| ;; for all debug information use this:
| |
| ;; debug = all:9
| |
| debug = all db:3
| |
| | |
| ;; Debugging remote python console
| |
| ;; 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
| |
| timeout = 30
| |
| | |
| ;; Cache directory di apt-proxy
| |
| cache_dir = /var/cache/apt-proxy
| |
| | |
| ;; Usa FTP passivo (default=on)
| |
| ;passive_ftp = on
| |
| | |
| ;; Usa un proxy apt
| |
| ;http_proxy = host:port
| |
| | |
| ;; Disable HTTP pipelining within apt-proxy (for test purposes)
| |
| ;disable_pipelining=1
| |
| | |
| ;;--------------------------------------------------------------
| |
| ;; Cache housekeeping
| |
| | |
| ;; Time to perform periodic housekeeping:
| |
| ;; - 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)
| |
| max_age = 14d
| |
| | |
| ;; Maximum number of versions of a .deb to keep per distribution
| |
| max_versions = 2
| |
| | |
| ;; Add HTTP backends dynamicaly if not already defined? (default=on)
| |
| ;dynamic_backends = on
| |
| | |
| ;;---------------------------------------------------------------
| |
| ;;---------------------------------------------------------------
| |
| ;; Backend servers
| |
| ;;
| |
| | |
| ;[debian]
| |
| ;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]
| |
| ;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]
| |
| ;; Apt-proxy new versions
| |
| ;backends = http://apt-proxy.sourceforge.net/apt-proxy
| |
| | |
| ;[backports.org]
| |
| ;; backports.org
| |
| ;backends = http://backports.org/debian
| |
| | |
| ;[blackdown]
| |
| ;;; Blackdown Java
| |
| ;;backends = http://ftp.gwdg.de/pub/languages/java/linux/debian
| |
| ;
| |
| ;
| |
| ;[debian-people]
| |
| ;; people.debian.org
| |
| ;backends = http://people.debian.org
| |
| | |
| ;[emdebian]
| |
| ;; The Emdebian project
| |
| ;backends = http://emdebian.sourceforge.net/emdebian
| |
| | |
| ;[rsync]
| |
| ;; 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]
| |
| backends =
| |
| http://ftp.it.debian.org/debian
| |
| | |
| [non-US]
| |
| backends =
| |
| 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]
| |
| backends =
| |
| http://security.debian.org
| |
| | |
| [blackdown]
| |
| backends =
| |
| http://ftp.gwdg.de/pub/languages/java/linux/debian
| |
| | |
| [marillat]
| |
| backends =
| |
| ftp://ftp.nerim.net/debian-marillat
| |
| | |
| [jedit]
| |
| backends =
| |
| http://dl.sourceforge.net/sourceforge/jedit
| |
| | |
| [mythtv]
| |
| backends =
| |
| http://dijkstra.csh.rit.edu:8088/~mdz/debian/
| |
| </pre>
| |
| | |
| Ok, ora abbiamo visto il file di configurazione...che dire: semplicissimo!
| |
| Prima di concludere la parte relativa alla configurazione del server, vorrei
| |
| mostrare alcuni comandi importanti, utili per la configurazione e l'utilizzo
| |
| di apt-proxy:
| |
|
| |
|
| <pre>
| | # cat ftp.nerim.net_debian-marillat_dists_testing_main_binary-i386_Release |
| # apt-proxy-import | | Archive: testing |
| | Component: main |
| | Origin: Unofficial Multimedia Packages |
| | Label: Unofficial Multimedia Packages |
| | Architecture: i386 |
| </pre> | | </pre> |
|
| |
|
| Comando utilissimo durante la prima installazione: consente di importare dei
| | Dove: |
| pacchetti Debian già scaricati nella cache di apt-proxy. | | * '''Archive''' = � l' archivio Debian a cui i pacchetti appartengono (ad es.: stable, testing. ecc...); |
| Utilizzo:
| | * '''Component''' = indica il tipo di componente (ad es.: main, contrib, non-free); |
| | * '''Origin''' = specifica il proprietario del repository; |
| | * '''Label''' = identifica il repository: potete inserire descrizioni, ecc...; |
| | * '''Architecture''' = l'architettura dei pacchetti contenuti nel repository (ad es.: i386, sparc, source, ecc...). |
|
| |
|
| <pre>
| | Possiamo vedere che nel file Release � contenuto proprio il dato che stavamo cercando: Origin. |
| # 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
| | Ora creiamo il file apt-conf |
| uno compatibile con la versione 2.
| |
| Utilizzo:
| |
|
| |
|
| <pre> | | <pre> |
| # apt-proxy-v1tov2 [v1_conf [v2_sample_conf]] > v2_conf | | # touch /etc/apt/apt.conf |
| </pre> | | </pre> |
|
| |
|
| Di default utilizza /etc/apt-proxy/apt-proxy.conf per v1_conf e
| | editiamolo inserendo quanto segue: |
| /etc/apt-proxy/apt-proxy-v2.conf per v2_sample_conf.
| |
|
| |
|
| <pre> | | <pre> |
| # /etc/init.d/apt-proxy
| | APT::Default-Release "testing"; |
| [start|stop|restart|force-reload]
| | APT::Cache-Limit 10000000; |
| | Apt::Get::Purge; |
| | APT::Clean-Installed; |
| | APT::Get::Fix-Broken; |
| | APT::Get::Fix-Missing; |
| | APT::Get::Show-Upgraded "true"; |
| </pre> | | </pre> |
|
| |
|
| Script di gestione di apt-proxy:
| | Facciamo l' update del database dei pacchetti: |
| start: avvia il server;
| |
| stop: lo arresta;
| |
| restart: lo raivvia;
| |
| force-reload: Forza la rilettura del file di configurazione.
| |
| | |
| ==UTILIZZO==
| |
| | |
| 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:
| |
|
| |
|
| <pre> | | <pre> |
| deb http://ftp2.it.debian.org/debian/ testing main
| | # apt-get update |
| non-free contrib
| |
| </pre> | | </pre> |
|
| |
|
| non ci basterà che seguire questi passi, per configurare il server e i client:
| | D'ora in avanti avremo due possibilit� per installare un nuovo pacchetto: il metodo che usiamo di solito e cio�: |
| | |
| 1) inseriamo il backend nel server, se non è già presente:
| |
| <pre>[debian]
| |
| backends =
| |
| http://ftp2.it.debian.org/debian/
| |
| </pre>
| |
|
| |
|
| 2) modifichiamo il soruces.list dei client:
| |
| <pre> | | <pre> |
| deb http://indirizzoserver:9999/debian/ testing main non-free contrib
| | # apt-get install nome_pacchetto |
| </pre> | | </pre> |
|
| |
|
| 3) aggiorniamo apt-proxy
| | che utilizzer� pacchetti proveniente dalla versione impostata come '''Default-Release''' in '''apt.conf''', oppure il comando |
| <pre>
| |
| # /etc/init.d/apt-proxy force-reload
| |
| </pre>
| |
|
| |
|
| 4) aggiorniamo con
| |
| <pre> | | <pre> |
| # apt-get update | | # apt-get install -t versione_di_debian nome_pacchetto |
| </pre> | | </pre> |
|
| |
|
| | che provveder a installare il pacchetto da noi richiesto per la versione specificata (versione_debian), risolvendo automaticamente le dipendenze. |
|
| |
|
| Fine!
| | Happy debian! |
|
| |
|
| | ---- |
|
| |
|
| ---- [[User:MaXeR|MaXeR]]
| | Autore: [[User:Keltik|Keltik]]<br> |
| | Revisione: [[User:Nest|Nest]] |