Debmirror: creiamo un mirror Debian: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
Riga 1: Riga 1:
Per poter firmare i nostri package necessitiamo di sue strumenti per poter firmare i nostri package necessitiamo di due strumenti '''gpg''' e '''dpkg-sig'''.
== Introduzione ==
Molto spesso ci si trova nella necessità di avere un [[Creare un Repository Debian|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).
Debmirror ci viene in aiuto, dando la possibilità di creare un mirror locale.


Il primo dovrebbe essere gi� installato di default con la nostra debian, per il secondo:
==Installazione==


Per installare debmirror è sufficiente un
<pre>
<pre>
# apt-get install dpkg-sig
# 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).


fatto questo generiamo una nuova coppia di chiavi , da usare solo per firmare i packages


==Configurazione==
Il programma non richiede configurazione, in quanto tutti gli eventuali parametri devono essere passati tramite riga di comando.
==Opzione e Parametri==
La 'sintassi' del comando è la seguente:
<pre>
<pre>
$gpg --gen-key
$ debmirror [OPZIONI] mirrordir
</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
; --debug : Abilita il Debug
; --progress -p : Visualizza una barra di avanzamento per monitorare lo stato del mirroring
; --verbose -v : Visualizza una barra di avanzamento tra i download dei file
; --source : Include i pacchetti dei sorgenti nel mirror [Default]
; --nosource: Non include i sorgenti dei programmi nel mirror
; --md5sums -m: Utilizza l'md5 per verificare quali file nel mirror locale sono corretti ed aggiornati, è disabilitato di default in quanto lento e 'paranoico'
; --passive: Esegui il download in modalità 'passiva'
; --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)
; --user=remoteusername -u : Sperifica l'utente remoto per accedere all'host remoto (normalmente va benissimo il valore di default) [Default: anonymous]
;--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")
; --proxy=http://user:pass@url:port/:
Specifica i parametri per la connessione tramite proxy
; --timeout=seconds -t: Specifica l'intervallo prima che il download di un file vada in timeout [Default: 300 secondi]
; --root=directory -r directory: Specifica la root directory dell'host remoto. Normalmente è "/debian". In questa directory è contenuta la directory "dists". [Default: /debian]
; --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]


rispondiamo 1 alla prima domanda ovvero DSA e ElGamal
; --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]


diamo invio
;--arch=foo[,bar,..] -a foo: Specifica la architettura (o le architetture) di cui effettuare il mirroring. (Default: i386)


come dimensione lasciamo pure 1024
; --cleanup: Esegue una pulizia della directory in cui verrà creato il mirror. [Default: on]


diamo invio
; --nocleanup: Non esegue la pulizia del mirror al termine della creazione dello stesso


mettiamo 0 come scadenza
; --postcleanup: Esegue la pulizia del mirror locale solo quando il mirroring è terminato senza errori


diamo invio
; --ignore=regex: Non elimina i file che rispondono l'espressione regolare [regexp] (può essere usato più volte)


rispondiamo s
; --exclude=regex: Non esegue il download dei file che soddisfano l'espressione regolare (può essere usato più volte)


diamo invio
;--exclude-deb-section=regex: Non esegue il download dei file contenuti nella sezione che soddisfa l'espressione regolare [regexp] (può essere usato più volte)


ora ci verr� chiesto Nome e Cognome
; --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)


<pre>
; --include=regex: Vengono inclusi i file che soddisfano l'espressione regolare [regexp] (può essere usato più volte)
Nome e Cognome: denis pecci
</pre>


inseriamo i nostri dati e diamo invio
; --skippackages: Non scarica i file Packages e Sources (utile se questi file sono già aggiornati)


ora ci viene chiesto l'indirizzo email
; --getcontents: Scarica il file Contents.arch.gz


<pre>
;--ignore-missing-release: Non lancia un errore se il file Release non è presente nel mirror
Indirizzo di Email: debian@nextdeb.net
</pre>


inseriamolo e diamo invio
;--ignore-release-gpg: Non lancia un errore se non è presente il file Release.gpg (consigliato)


ed ora inseriamno il commento per la coppia di chiavi
;--dry-run: Esegue una simulazione, senza scaricare i file e pulire il mirror.


<pre>
;--rsync-options=options: Specifica le opzioni da passare a rsync. [Default: -aIL --partial]
Commento: NextDeb Team Packager
Utile è anche l'opzione "--bwlimit=x" che consente di impostare la larghezza di banda massima da usare per il download
</pre>


diamo invio
;--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


ed ora premiamo o e invio
;--help: Visualizza un help.


ora ci verr richiesta la password per le chiavi , inseriamola e invio


ecco fatto ora abbiamo la nostra coppia di chiavi per firmare i packages
==Utilizzo==


esportiamole sul nostro keyserver preferito.
L'utilizzo è semplice: basta indicare solo quello necessario e lui provvederà a scaricare tutti i file necessari.
Verrà creata una struttura uguale a quella di un mirror Debian ed eventualmente (se già presente) verranno controllati ed aggiornati i pacchetti vecchi.


per firmare i nostri packages procediamo in questo modo
Ecco alcuni esempi di utilizzo:
* Mirror completo di sarge:


<pre>
<pre>
# dpkg-sig --sign nostronick nomepackages.deb
$ debmirror -p -d sarge --ignore-small-errors --ignore-release-gpg /path/to/dir
</pre>
</pre>


{| border="1" cellpadding="5" cellspacing="0" align="center"
|+'''Esempio'''
|-
| style="background:#efefef;" |
<tt>
root@nextdeb:/home/nextdeb/uploaded/cwcdr# dpkg-sig --sign debian cwcdr_2.0.1-4_all.deb
Processing cwcdr_2.0.1-4_all.deb...


Ti serve una passphrase per sbloccare la chiave segreta
('''--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.
dell'utente: "denis pecci (NextDeb Team Packager) <debian@nextdeb.net>"
chiave DSA di 1024 bit, ID 73E02514, creata il 2004-11-26


Signed deb cwcdr_2.0.1-4_all.deb
* Mirror dei file che non appartengono alla sezione 'games', escludendo anche i sorgenti sorgenti:
</tt>
<pre>
|}
$ debmirror -p -d sarge --ignore-small-errors --ignore-release-gpg --exclude="games" --nosources /path/to/dir
 
</pre>
Ecco fatto ora abbiamo firmato in maniera inecquivocabile il nostro packages
per controllare la firma abbiamo due metodi o usando dpkg-sig oppure pgp
vediamoli entrambi


* Mirror di tutta Sarge (Sorgenti esclusi):
<pre>
<pre>
# gpg --verify nome package
$ debmirror -p -d sarge --ignore-small-errors --ignore-release-gpg --nosources /path/to/dir
</pre>
</pre>


{| border="1" cellpadding="5" cellspacing="0" align="center"
Come potete vedere da questi 3 esempi, l'utilizzo è molto semplice ed immediato.
|+'''Esempio'''
|-
| style="background:#efefef;" |
<tt>
root@nextdeb:/home/nextdeb/uploaded/cwcdr# gpg --verify cwcdr_2.0.1-4_all.deb gpg: Firma fatta ven 26 nov 2004 11:23:33 CET usando DSA con ID 73E02514
gpg: Firma valida da "denis pecci (NextDeb Team Packager) <debian@nextdeb.net>"
gpg: controllo il trustdb
gpg: controllo al livello 0 firmato=0 ot(-/q/n/m/f/u)=0/0/0/0/0/2
</tt>
|}


mentre con dpkg-sig
==Debmirror e Cron==


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>
# dpkg-sig -v -l nome package
0 0 * * * maxer /usr/bin/debmirror -d sarge --ignore-small-errors --ignore-release-gpg --arch=none --nosource /store3/deb/
</pre>
</pre>
così il mirror verrà aggiornato di notte, evitando eventuali problemi di banda o di carico eccessivo del sistema!
==Considerazioni sull'Utilizzo==


{| border="1" cellpadding="5" cellspacing="0" align="center"
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:
|+'''Esempio'''
* 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.
|-
* 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'.
| style="background:#efefef;" |
* [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...  
<tt>
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...
root@nextdeb:/home/nextdeb/uploaded/cwcdr# dpkg-sig -v -l cwcdr_2.0.1-4_all.deb Processing wcdr_2.0.1-4_all.deb...  
debian
</tt>
|}


come potete vedere quest'ultima maniera mostra solo il nick del firmante del package.
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).


per dubbi chiarimenti insulti ecc ecc sono qu�
Dopo queste piccole considerazioni, happy Debian!


ne il sottoscritto ne debianizzati.org si assumono responsabilit� sull uso che farete di questa guida
Lettura Consigliata: [[Apt-Proxy: un proxy per i pacchetti Debian]]


---- [[User:MaXeR|MaXeR]]


Autore: debian
[[Categoria:Repository]]

Versione delle 12:27, 25 feb 2009

Introduzione

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). Debmirror ci viene in aiuto, dando la possibilità di creare un mirror locale.

Installazione

Per installare debmirror è sufficiente un

# apt-get install debmirror

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).


Configurazione

Il programma non richiede configurazione, in quanto tutti gli eventuali parametri devono essere passati tramite riga di comando.


Opzione e Parametri

La 'sintassi' del comando è la seguente:

$ debmirror [OPZIONI] mirrordir

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
--debug
Abilita il Debug
--progress -p
Visualizza una barra di avanzamento per monitorare lo stato del mirroring
--verbose -v
Visualizza una barra di avanzamento tra i download dei file
--source
Include i pacchetti dei sorgenti nel mirror [Default]
--nosource
Non include i sorgenti dei programmi nel mirror
--md5sums -m
Utilizza l'md5 per verificare quali file nel mirror locale sono corretti ed aggiornati, è disabilitato di default in quanto lento e 'paranoico'
--passive
Esegui il download in modalità 'passiva'
--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)
--user=remoteusername -u
Sperifica l'utente remoto per accedere all'host remoto (normalmente va benissimo il valore di default) [Default: anonymous]
--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")
--proxy=http://user:pass@url:port/

Specifica i parametri per la connessione tramite proxy

--timeout=seconds -t
Specifica l'intervallo prima che il download di un file vada in timeout [Default: 300 secondi]
--root=directory -r directory
Specifica la root directory dell'host remoto. Normalmente è "/debian". In questa directory è contenuta la directory "dists". [Default: /debian]
--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]
--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]
--arch=foo[,bar,..] -a foo
Specifica la architettura (o le architetture) di cui effettuare il mirroring. (Default: i386)
--cleanup
Esegue una pulizia della directory in cui verrà creato il mirror. [Default: on]
--nocleanup
Non esegue la pulizia del mirror al termine della creazione dello stesso
--postcleanup
Esegue la pulizia del mirror locale solo quando il mirroring è terminato senza errori
--ignore=regex
Non elimina i file che rispondono l'espressione regolare [regexp] (può essere usato più volte)
--exclude=regex
Non esegue il download dei file che soddisfano l'espressione regolare (può essere usato più volte)
--exclude-deb-section=regex
Non esegue il download dei file contenuti nella sezione che soddisfa l'espressione regolare [regexp] (può essere usato più volte)
--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)
--include=regex
Vengono inclusi i file che soddisfano l'espressione regolare [regexp] (può essere usato più volte)
--skippackages
Non scarica i file Packages e Sources (utile se questi file sono già aggiornati)
--getcontents
Scarica il file Contents.arch.gz
--ignore-missing-release
Non lancia un errore se il file Release non è presente nel mirror
--ignore-release-gpg
Non lancia un errore se non è presente il file Release.gpg (consigliato)
--dry-run
Esegue una simulazione, senza scaricare i file e pulire il mirror.
--rsync-options=options
Specifica le opzioni da passare a rsync. [Default: -aIL --partial]

Utile è anche l'opzione "--bwlimit=x" che consente di impostare la larghezza di banda massima da usare per il download

--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
--help
Visualizza un help.


Utilizzo

L'utilizzo è semplice: basta indicare solo quello necessario e lui provvederà a scaricare tutti i file necessari. Verrà creata una struttura uguale a quella di un mirror Debian ed eventualmente (se già presente) verranno controllati ed aggiornati i pacchetti vecchi.

Ecco alcuni esempi di utilizzo:

  • Mirror completo di sarge:
$ debmirror -p -d sarge --ignore-small-errors --ignore-release-gpg /path/to/dir


(--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.

  • Mirror dei file che non appartengono alla sezione 'games', escludendo anche i sorgenti sorgenti:
$ debmirror -p -d sarge --ignore-small-errors --ignore-release-gpg --exclude="games" --nosources /path/to/dir
  • Mirror di tutta Sarge (Sorgenti esclusi):
$ debmirror -p -d sarge --ignore-small-errors --ignore-release-gpg  --nosources /path/to/dir

Come potete vedere da questi 3 esempi, l'utilizzo è molto semplice ed immediato.

Debmirror e Cron

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:

0 0 * * * maxer /usr/bin/debmirror -d sarge --ignore-small-errors --ignore-release-gpg --arch=none --nosource /store3/deb/

così il mirror verrà aggiornato di notte, evitando eventuali problemi di banda o di carico eccessivo del sistema!


Considerazioni sull'Utilizzo

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:

  • 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.
  • 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'.
  • 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...

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).

Dopo queste piccole considerazioni, happy Debian!

Lettura Consigliata: Apt-Proxy: un proxy per i pacchetti Debian


MaXeR