Apt-mirror

Da PNLUG.
Versione del 7 apr 2016 alle 13:48 di Rcolonello (Discussione | contributi) (Server FTP)

Mirror dei Repository

Spesso, durante i nostri install party, la banda è condivisa su molte stazioni di lavoro. questo comporta tempi di update e install delle distro piuttosto lunghi.

Una prima soluzione potrebbe essere un proxy cache che funziona bene come tecnica ma necessita di una banda funzionante alla prima richiesta dei pacchetti.

Una seconda soluzione, per un completa installazione off line è la completa replica dei repository della distro in in container locale. L'idea è di avere spazio disco, copiare in locale tutti i pacchetti della distro per poterli utilizzare off line.

Pachetto apt-mirror

Lo strumento apt-mirror è sviluppato appositamente per questo tipo d'esigenza : clonare un repository. Lo si trova nei pacchetti debian (ad oggi la stable è jessie e lo si trova nella versione apt-mirror (0.5.1-1)).
Un interessante articolo ne propone l'utilizzo assieme ad un FTP Server,vedremo in una seconda fase come utilizzare tale server.

Prerequisiti

Spazio disco

Purtroppo sono necessari circa 60 GB per repository per architettura. Ad esempio se intendete preparare un repo per amd64 e i386 dovrete prevedere circa 120 GB di spazio.

connettività

L'accesso ad internet o ad un repo funzionante è condizione necessaria.

Installazione

# apt-get install apt-mirror

Configurazione

# nano /etc/apt/mirror.list

File esempio

Per costruire un mirror Ubuntu e Debian ho utilizzato il seguente esempio :

############# config ##################                                                          #Notes by Roby.deb
#
#set base_path    /var/spool/apt-mirror
set base_path /opt/apt-mirror                                                                    #percorso dove salvare il clone del mirror
#
# set mirror_path  $base_path/mirror
# set skel_path    $base_path/skel
# set var_path     $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch  <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads     20
set _tilde 0
#
############# end config ##############

#deb http://ftp.us.debian.org/debian stable main contrib non-free                                #da usare in combinata con set defaultarch  <running host architecture>
#deb-src http://ftp.us.debian.org/debian stable main contrib non-free                            #per maggiore flessibilità ho preferito esplicitare la versione

# mirror additional architectures
#deb-alpha http://ftp.us.debian.org/debian stable main contrib non-free
#deb-amd64 http://ftp.us.debian.org/debian stable main contrib non-free
                                                                                                 #Potete scegliere il repo che preferite, nell'architettura desiderata.
deb-amd64 http://ftp.us.debian.org/debian stable main contrib non-free                           #repo stable debian
deb-amd64 http://ftp.us.debian.org/debian stable-updates main contrib non-free                   #repo stable updates debian
deb-amd64 http://security.debian.org/ stable/updates main contrib non-free                       #repo security 
                                                                                          

#deb-armel http://ftp.us.debian.org/debian stable main contrib non-free
#deb-hppa http://ftp.us.debian.org/debian stable main contrib non-free
#deb-i386 http://ftp.us.debian.org/debian stable main contrib non-free
#deb-ia64 http://ftp.us.debian.org/debian stable main contrib non-free
#deb-m68k http://ftp.us.debian.org/debian stable main contrib non-free
#deb-mips http://ftp.us.debian.org/debian stable main contrib non-free
#deb-mipsel http://ftp.us.debian.org/debian stable main contrib non-free
#deb-powerpc http://ftp.us.debian.org/debian stable main contrib non-free
#deb-s390 http://ftp.us.debian.org/debian stable main contrib non-free
#deb-sparc http://ftp.us.debian.org/debian stable main contrib non-free

## Ubuntu trusty (14.04)
deb-amd64 http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse            #repo main ubuntu
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse   #repo security ubuntu
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse    #repo updates ubuntu


clean http://ftp.us.debian.org/debian                                                            #il comando clean pulisce i pacchetti obsoleti
clean http://archive.ubuntu.com/ubuntu                                                           #il comando clean pulisce i pacchetti obsoleti

TO DO

La cartella /opt/apt-mirror non esiste di default, andrà creata con


  # mkdir -p /opt/apt-mirror

Avvio apt-mirror

Il comando

  # apt-mirror

avvia il "download dei pacchetti e la "clonazione del repo".

Downloading 90 index files using 20 threads...
Begin time: Wed Apr  6 15:52:56 2016
[20]... [19]... [18]... [17]... [16]... [15]... [14]... [13]... [12]... [11]... [10]... [9]... [8]... [7]... [6]... [5]... [4]... [3]... [2]... [1]... [0]...
End time: Wed Apr  6 15:52:57 2016

Processing tranlation indexes: [TTT]

Downloading 44 translation files using 20 threads...
Begin time: Wed Apr  6 15:52:57 2016
[20]... [19]... [18]... [17]... [16]... [15]... [14]... [13]... [12]... [11]... [10]... [9]... [8]... [7]... [6]... [5]... [4]... [3]... [2]... [1]... [0]...
End time: Wed Apr  6 15:52:57 2016

Processing indexes: [P


se non vi sono errori potete procedere il tutto sta funzionando.

Errori

In caso di errori, valgono gli stessi controlli che vengono svolti per i repo :

  • controllate la vostra connettività di rete
  • controllate l'accesso ai mirror (anche con il browser)
  • controllate lo spazio su disco.

Server FTP

L'articolo suggerisce l'addozione del server proftpd-basic.
Anche proftpd-basic è disponibile in Jessie nella versione 1.3.5.

Installazione

 # apt-get install proftpd-basic

Configurazione

Accesso anonimo

Per rendere possibile l'accesso anonimo dobbiamo creare e configurare il seguente file :

 # nano /etc/proftpd/conf.d/anonymous.conf
<Anonymous ~ftp>
   User                    ftp
   Group                nogroup
   UserAlias         anonymous ftp
   RequireValidShell        off
#   MaxClients                   10
   <Directory *>
     <Limit WRITE>
       DenyAll
     </Limit>
   </Directory>
 </Anonymous>

Mount bind

Un mount bind è una visualizzazione alternativa di un albero di directory . Solitamente , mount crea una vista di un dispositivo di memorizzazione , come un albero di directory .
Un mount bind invece prende un albero di directory esistente e lo replica sotto un altro punto . Le directory e i file sono le stesse dell'originale . Qualsiasi modifica su un lato si riflette immediatamente sul lato opposto , in quanto le due viste mostrano gli stessi dati

Applicazione del mount bind

 # mount --bind /opt/apt-mirror/mirror/ftp.us.debian.org/  /srv/ftp/

Se volete potete aggiungere una seconda architettura :

 # mount --bind /opt/apt-mirror/mirror/archive.ubuntu.com/  /srv/ftp/
rc.local

Come suggerito dall'articolo è possibile montare automaticamente modificanto il file /etc/rc.local

 # nano /etc/rc.local

aggiungendo prima di exit 0

 sleep 5
 sudo mount --bind  /opt/apt-mirror/mirror/ftp.us.debian.org/ /srv/ftp/

WebServer

Alternativo al server ftp si può utilizzare un web server.

Tip 'n Trick

Trovare il mirror migliore

Prima d'iniziare la clonazione del mirror, può avere senso investigare su quale sia il più veloce. Come sappiamo molti elementi influenzano la velocità di download da un repository :

  • distanza geografica
  • tecnologia di connessione
  • provider


e molti altri ...

Per scoprire quale mirror ci dà le migliori performance esiste un pacchetto

# apt-get install netselect-apt


Note

Per approfondimenti si veda :

Sito ufficiale del progetto
esempio di configurazione

Link

https://apt-mirror.github.io/
http://www.tecmint.com/setup-local-repositories-in-ubuntu/
https://wiki.debian.org/SourcesList
https://www.howtoforge.com/local_debian_ubuntu_mirror
https://www.packtpub.com/books/content/create-local-ubuntu-repository-using-apt-mirror-and-apt-cacher
http://www.matrix44.net/cms/notes/gnulinux/create-a-local-ubuntu-mirror
http://www.pendrivelinux.com/how-to-set-up-your-own-debian-linux-mirror/