Debmirror: creiamo un mirror Debian: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
m (aggiunto link)
 
(15 versioni intermedie di 7 utenti non mostrate)
Riga 1: Riga 1:
==Introduzione==
{{Versioni compatibili|Jessie|Stretch|Buster}}
== 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 a Internet, o lo sono tramite una connessione troppo lenta.<br/>
'''Debmirror''' ci viene in aiuto, dando la possibilità di creare un [[mirror]] locale.


In questo howto vedremo come sia possibile applicare una patch ad un pacchetto
==Installazione==
ufficiale Debian.
Per installare <code>debmirror</code> con [[privilegi di amministrazione]] è sufficiente:
Prima di proseguire, per�, vedremo quando non � possibile farlo:
<pre>
* il pacchetto non � stato distribuito anche in forma di sorgenti (capita per
# apt install debmirror
qualche repository non ufficiale e per alcuni pecchetti uff. (una volta mi era
</pre>
successo...).
Un consiglio, nel caso in cui venga creato un mirror per effettuare una installazione o un aggiornamento per un computer non connesso in rete: usate un disco fisso esterno.
 
==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>
$ debmirror [OPZIONI] mirrordir
</pre>
con i seguenti parametri:
 
; <code>mirrordir</code>: 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;
 
; <code>--debug</code>: abilita il Debug;
 
; <code>--progress -p</code>: visualizza una barra di avanzamento per monitorare lo stato del mirroring;
 
; <code>--verbose -v</code>: visualizza una barra di avanzamento tra i download dei file;
 
; <code>--source</code>: include i pacchetti dei sorgenti nel mirror [Default];
 
; <code>--nosource</code>: non include i sorgenti dei programmi nel mirror;
 
; <code>--checksum</code>: utilizza i checksum per verificare che i file nel mirror locale sono corretti ed aggiornati; è disabilitato di default in quanto lento e 'paranoico';
 
; <code>--passive</code>: esegue il download in modalità 'passiva' quando usa il protocollo [[FTP]];
 
; <code>--host=remotehost -h</code>: indica quale host utilizzare, si invita a controllare il mirror più vicino a questo indirizzo: http://www.debian.org/mirror/list , consentendo così una miglior ripartizione del traffico sui mirror presenti (default: ftp.debian.org);
 
; <code>--user=remoteusername -u</code>: specifica l'utente remoto per accedere all'host remoto (normalmente va benissimo il valore di default) [Default: anonymous];
 
; <code>--method=ftp|http|https|rsync</code>: specifica quale metodo utilizzare per effettuare il download dei file. Il default è ancora ftp, ma ormai è disabilitato, quindi si consiglia di impostarne un altro;
 
; <code>--proxy=http://user:pass@url:port/</code>: specifica i parametri per la connessione tramite proxy;
 
; <code>--timeout=seconds -t</code>: Specifica l'intervallo prima che il download di un file vada in timeout [Default: 300 secondi];
 
; <code>--root=directory -r directory</code>: specifica la root directory dell'host remoto. Normalmente è "/debian". In questa directory è contenuta la sottodirectory "dists" [Default: /debian];
 
; <code>--dist=foo[,bar,..] -d foo</code>: specifica la distribuzione (Woody, Sarge, Sid). Possono essere indicate tutte e tre (-dist=woody,sarge,sid oppure -d woody -d sarge -d sid); le [[suite]] (''stable'', ''unstable'', ''testing'') potrebbero non funzionare, quindi si invita ad utilizzare il [[codename]] della release);
 
; <code>--section=foo[,bar,..] -s foo</code>: specifica la sezione (o le sezioni) di Debian di cui effettuare il mirroring [Default: main,contrib,non-free,main/debian-installer];
 
; <code>--arch=foo[,bar,..] -a foo</code>: specifica la architettura (o le architetture) di cui effettuare il mirroring [Default: i386];
 
; <code>--postcleanup</code>: esegue la pulizia del mirror locale solo quando il mirroring è terminato senza errori [Default];
 
; <code>--precleanup</code>: esegue una pulizia della directory in cui verrà creato il mirror, prima di cominciare l'operazione; Può essere utile se non si ha molto spazio libero, ma risulterà in uno stato inconsistente del mirror locale finché l'operazione non sarà completata;
 
; <code>--nocleanup</code>: non esegue la pulizia del mirror al termine della creazione dello stesso;


; <code>--ignore=regex</code>: non elimina i file che rispondono l'espressione regolare [regexp] (può essere usato più volte);


==Preparazione del sistema==
; <code>--exclude=regex</code>: non esegue il download dei file che soddisfano l'espressione regolare (può essere usato più volte);


Per prima cosa bisogna assicurarsi di avere, in '''/etc/apt/sources.list''',
; <code>--exclude-deb-section=regex</code>: non esegue il download dei file contenuti nella sezione che soddisfa l'espressione regolare [regexp] (può essere usato più volte);
le sorgenti per scaricare i pacchetti di tipo deb-src:
<pre>
#--CUT HERE--#
#per stable
deb-src http://ftp2.it.debian.org/debian/ stable main non-free contrib
deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib
non-free


#per testing
; <code>--limit-priority=regex</code>: 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);
deb-src http://ftp2.it.debian.org/debian/ testing main non-free contrib
deb-src http://non-us.debian.org/debian-non-US testing/non-US main contrib
non-free


#per unstable
; <code>--include-field=fieldname=regex</code>: non escludere i pacchetti il cui campo soddisfa l'espressione regolare [regexp] (può essere usato più volte);
deb-src http://ftp2.it.debian.org/debian/ sid main non-free contrib
deb-src http://non-us.debian.org/debian-non-US sid/non-US main contrib non-free
#--CUT HERE--#
</pre>
ora aggiorniamo il contenuto del database dei pacchetti:
<pre>
# apt-get update
</pre>


; <code>--skippackages</code>: non scarica i file <code>Packages</code> e <code>Sources</code> (utile se questi file sono già aggiornati);


==Procediamo==
; <code>--getcontents</code>: scarica il file <code>Contents.arch.gz</code>;


===Metodo 1: `apt-get source && dpkg-buildpackage`===
; <code>--ignore-missing-release</code>: non lancia un errore se il file Release non è presente nel mirror;


Per scaricare i sorgenti, seguiamo questa procedura:
; <code>--ignore-release-gpg</code>: non lancia un errore se non è presente il file <code>Release.gpg</code> (consigliato);
Per avere tutto in ordine, creiamo una cartella di lavoro
<pre>
$ mkdir nomepacchetto && cd nomepacchetto
</pre>


Ora possiamo scaricare i sorgenti:
; <code>--dry-run</code>: esegue una simulazione, senza scaricare i file e pulire il mirror;
<pre>
$ apt-get source nomepacchetto
</pre>


cos� facendo, scaricheremo 3 file, che verranno decompressi in una cartella
; <code>--rsync-options=options</code>: Specifica le opzioni da passare a rsync [Default: -aIL --partial]. Utile è anche l'opzione <code>--bwlimit=x</code> che consente di impostare la larghezza di banda massima da usare per il download;
(nomepacchetto-ver.sio.ne)


Ora possiamo entrare in questa cartella, scaricare la patch e applicarla:
; <code>--ignore-small-errors</code>: Ignora degli errori 'piccoli' o 'poco significativi' come il non aver trovato un file al 'primo colpo' e il dover procedere ad un altro tentativo.Consigliato;
<pre>
$ cd nomepacchetto-ver.sio.ne
$ wget http://indirizzo/per/la/patch.patch
</pre>


supponendo che la patch non sia compressa...
; <code>--help</code>: Visualizza un help.
<pre>
$ patch -p1 < patch.patch
</pre>


se � compressa:
==Utilizzo==
<pre>
L'utilizzo è semplice: basta indicare solo quello necessario e lui provvederà a scaricare tutti i file necessari.<br/>
$ zcat patch.patch | patch -p1
Verrà creata una struttura uguale a quella di un mirror Debian ed eventualmente (se già presente) verranno controllati ed aggiornati i pacchetti vecchi.
</pre>


Una volta applicata la patch, se non riceviamo errori, siamo pronti a
Ecco alcuni esempi di utilizzo:
compilare il pacchetto.
* Mirror completo di Debian 10 ([[Buster]]) dal redirector (http://deb.debian.org), che dovrebbe scegliere il [[mirror]] più veloce:
Per fare questo utilizzeremo un altro tool Debian: dpkg-buildpackage
<pre>
<pre>
# dpkg-buildpackage
$ debmirror -p --method=http -h deb.debian.org -d buster --ignore-small-errors --ignore-release-gpg /path/to/dir
</pre>
</pre>
(<code>'''--ignore-small-errors --ignore-release-gpg'''</code> 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.)


Il comando prover� a compilare il pacchetto, ed in caso di errori ci chieder�
* Mirror dei file che non appartengono alla sezione 'games', escludendo anche i sorgenti sorgenti:
di sistemare le dipendenze (se l'errore � dovuto alla mancanza di alcune
librerie) elencando tutti i pacchetti necessari, installabili con un normale
<pre>
<pre>
# apt-get buid-dep 'nomepacchetto_da_installare'
$ debmirror -p --method=http -h deb.debian.org -d buster --ignore-small-errors --ignore-release-gpg --exclude="games" --nosource /path/to/dir
</pre>
</pre>


una volta giunta a termine la compilazione, troveremo (nella cartella
* Mirror di tutta Buster (sorgenti esclusi):
nomepacchetto da noi creata) una serie di file .deb!
ora possiamo installarli:
<pre>
<pre>
# dpkg -i nomepacchetto_ver.sio.ne.deb
$ debmirror -p --method=http -h deb.debian.org -d buster --ignore-small-errors --ignore-release-gpg --nosource /path/to/dir
</pre>
</pre>


Bene, se non riceviamo errori...il pacchetto � installato.
Come potete vedere da questi 3 esempi, l'utilizzo è molto semplice ed immediato.


==Debmirror e Cron==
Può essere utile, per mantenere aggiornato il mirror, lanciare debmirror ad intervalli regolari (magari ogni giorno). Così, aggiungendo una semplice riga a <code>/etc/crontab</code> è possibile programmare l'esecuzione di debmirror.


===Metodo 2: `apt-build`===
Ecco un esempio, che programma l'esecuzione del mirroring alle 00.00 di ogni giorno:
 
Prima di iniziare, � d'obbligo una introduzione su apt-build.
Questo tool � abbastanza giovane, e consente di compilare i pacchetti Debian
ottimizzandoli per la propria macchina. Durante l'installazione vengono poste
delle domande (tipo di processore, livello di ottimizzazione), e rispondendo
nel modo opportuno, sar� possibile compilare i pacchetti ottimizzandoli per la
propria macchina, cosa che, nel METODO 1 non avviene.
 
Apt-build ci mette a disposizione una opzione, '''--patch''', che consente di applicare delle patch al pacchetto da installare.
Vediamo, ora, come fare.
Scarichiamo la patch:
<pre>
<pre>
$ wget http://indirizzo/per/la/patch.patch
0 0 * * * maxer /usr/bin/debmirror --method=http -h deb.debian.org -d buster --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!


ora diamo il semplice comando:
== Considerazioni sull'Utilizzo ==
<pre>
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:
# apt-build -p 0 --patch patch.patch install 'pacchetto'
*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.
</pre>
*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'.
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.


ora mettiamoci comodi, armati di tazzona di caff� (rigorosamente marchiata con un bel Tux) e controlliamo a video mentre:
Inoltre '''debmirror''' non è designato propriamente per generare 'mirror di installazione', ma per creare mirror locali in LAN di medie dimensioni.
* vengono scaricate i pacchetti *-dev per la compilazione;
* viene aggiornato l'elenco dei pacchetti dei vari repository (usare l'opzione '''--noupdate''' per evitarlo);
* vengono scaricati i sorgenti del pacchetto;
* viene applicata la patch;
* inizia la compilazione del pacchetto:
* viene/vengono installato/i il/i pacchetto/i generato/i.


Bene, ora il pacchetto � installato nel vostro sistema!
Dopo queste piccole considerazioni, happy Debian!


== Altre guide ==
* [[Creare immagini iso dei repository Debian]]


---- [[User:MaXeR|MaXeR]]
{{Autori
|Autore=[[User:MaXeR|MaXeR]]
|Verificata_da=
:[[Utente:HAL 9000|HAL 9000]] 16:25, 27 set 2019 (CEST)
|Numero_revisori=1
}}


[[Categoria:Apt-Dev]]
[[Categoria:Creare repository]]

Versione attuale delle 14:27, 27 set 2019

Debian-swirl.png Versioni Compatibili

Debian 8 "jessie"
Debian 9 "stretch"
Debian 10 "buster"

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 a 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 con privilegi di amministrazione è sufficiente:

# apt install debmirror

Un consiglio, nel caso in cui venga creato un mirror per effettuare una installazione o un aggiornamento per un computer non connesso in rete: usate un disco fisso esterno.

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;
--checksum
utilizza i checksum per verificare che i file nel mirror locale sono corretti ed aggiornati; è disabilitato di default in quanto lento e 'paranoico';
--passive
esegue il download in modalità 'passiva' quando usa il protocollo FTP;
--host=remotehost -h
indica quale host utilizzare, si invita a controllare il mirror più vicino a questo indirizzo: http://www.debian.org/mirror/list , consentendo così una miglior ripartizione del traffico sui mirror presenti (default: ftp.debian.org);
--user=remoteusername -u
specifica l'utente remoto per accedere all'host remoto (normalmente va benissimo il valore di default) [Default: anonymous];
--method=ftp|http|https|rsync
specifica quale metodo utilizzare per effettuare il download dei file. Il default è ancora ftp, ma ormai è disabilitato, quindi si consiglia di impostarne un altro;
--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 sottodirectory "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); le suite (stable, unstable, testing) potrebbero non funzionare, quindi si invita ad utilizzare il codename della release);
--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];
--postcleanup
esegue la pulizia del mirror locale solo quando il mirroring è terminato senza errori [Default];
--precleanup
esegue una pulizia della directory in cui verrà creato il mirror, prima di cominciare l'operazione; Può essere utile se non si ha molto spazio libero, ma risulterà in uno stato inconsistente del mirror locale finché l'operazione non sarà completata;
--nocleanup
non esegue la pulizia del mirror al termine della creazione dello stesso;
--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-field=fieldname=regex
non escludere i pacchetti il cui campo soddisfa 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 significativi' 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:

$ debmirror -p --method=http -h deb.debian.org -d buster --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 --method=http -h deb.debian.org -d buster --ignore-small-errors --ignore-release-gpg --exclude="games" --nosource /path/to/dir
  • Mirror di tutta Buster (sorgenti esclusi):
$ debmirror -p --method=http -h deb.debian.org -d buster --ignore-small-errors --ignore-release-gpg --nosource /path/to/dir

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

Debmirror e Cron

Può essere utile, per mantenere aggiornato il mirror, lanciare debmirror ad intervalli regolari (magari ogni giorno). Così, aggiungendo 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 --method=http -h deb.debian.org -d buster --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'.

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.

Dopo queste piccole considerazioni, happy Debian!

Altre guide




Guida scritta da: MaXeR Swirl-auth40.png Debianized 40%
Estesa da:
Verificata da:
HAL 9000 16:25, 27 set 2019 (CEST)

Verificare ed estendere la guida | Cos'è una guida Debianized