En un entorn local on tinguem una colla d’ordinadors amb Ubuntu compartint ADSL és una molt bona idea disposar d’un equip que actuï com a repositori local, de manera que no s’eternitzin les actualitzacions o les instal·lacions de nou programari amb tots els ordinadors de la xarxa descarregant alhora les mateixes dades. El sentit comú indica que és molt millor que descarregui les dades un de sol i les comparteixi amb la resta. D’això tracta aquesta entrada: de com configurar un repositori local per a Ubuntu 10.04 (encara que serveix per a qualsevol altra versió i distribució basada en Debian). És molt senzill de fer, però escric el procés perquè m’he trobat algun maldecap que val la pena aclarir.
D’entrada necessitem un ordinador amb GNU/Linux (no cal que sigui Ubuntu per a fer un mirror d’aquest sistema, però sembla el més lògic). Jo faré servir un vell portàtil HP Compaq nx6310 amb un Core 2 Du0 T5500 @1,66Ghz i 512MB de memòria amb Lucid Lynx instal·lat. El repositori ens ocuparà uns 36GB de disc per cada versió del SO que necessitem si només volem els seus paquets binaris (els necessaris per a les actualitzacions i les noves instal·lacions) i gairebé el doble si volem també el codi font (source) de tot el sistema. Podem consultar la quantitat d’espai disponible en cada partició des del terminal amb la comanda:
|
1 |
df -h |
En el meu cas, tinc una partició de 40GB del disc muntada sobre la carpeta /ubuntu on hi haurà les dades del mirror sense codis font. Comencem la creació del repositori:
Part servidor
Aquestes són les configuracions que hem de fer a la màquina que actuarà com a repositori local. Després veurem com hem de configurar la resta d’ordinadors client.
1 Instal·lem l'aplicació apt-mirror
|
1 |
sudo apt-get install apt-mirror |
Aquesta és l’aplicació que farem servir per a crear i mantenir el nostre repositori. El següent que hem de fer és la configuració.
2 Creem les carpetes i els canviem el propietari
L’apt-mirror s’executa amb permisos de l’usuari homònim creat automàticament durant el pas anterior, per tant, perquè el repositori s’ompli de dades correctament cal que la carpeta on el vulguem situar sigui propietat d’aquest usuari. Si volem situar el mirror a la carpeta per defecte /var/spool/apt-mirror no cal que ho fem, però si preferim escollir una ubicació personalitzada sí.
|
1 2 3 4 |
sudo mkdir /ubuntu/var
sudo mkdir /ubuntu/skel
sudo mkdir /ubuntu/mirror
sudo chown -R apt-mirror:apt-mirror /ubuntu |
Substituïu /ubuntu per la carpeta que vulgueu. En cas de no fer-ho després ens trobarem amb l’error touch: no s’han pogut canviar les dates de «/ubuntu/var/apt-mirror-lock»: No such file or directory
3 Configurem apt-mirror
El fitxer del configuració de l’apt-mirror el trobarem, un cop instal·lat, a la ruta /etc/apt/mirror.list i el podem editar en el nostre editor preferit (en el meu cas: joe). Si no teniu un “editor preferit” podeu utilitzar gedit, que serà el més senzill:
|
1 |
gksudo gedit /etc/apt/mirror.list |
i trobarem un fitxer si fa o no fa així:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
############# config ##################
#
# set base_path /var/spool/apt-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://archive.ubuntu.com/ubuntu lucid main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu lucid-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu lucid-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu lucid-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu lucid-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu lucid main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu lucid-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu lucid-updates main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu lucid-proposed main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu lucid-backports main restricted universe multiverse
clean http://archive.ubuntu.com/ubuntu<br /> |
Les úniques modificacions que farem en aquest document seran a la línia 3 de manera que quedi:
|
1 2 3 4 |
############# config ##################
#
set base_path /ubuntu
# |
Fixem-nos que ha desaparegut el sostingut # del principi de la línia (les línies que comencen per un # sempre són ignorades en els fitxers de configuració) i hem canviat la carpeta base per defecte per la nostra. No cal tocar la resta de variables (línies 5–11). Per descomptat si volguéssim fer un mirror d’una versió diferent canviaríem la paraula lucid per l’adequada en totes les línies de la 17 a la 27. Per últim, posarem un sostingut # davant les línies 23–25 per evitar que es descarreguin els codis font.
4 Començar la descàrrega
Un cop ho tenim tot configurat cal indicar que volem començar la descàrrega de paquets. Com que són –com a mínim– 36GB hem de pensar en no menys de 8 hores de descàrrega! Iniciar el procés és molt senzill però ens podem trobar algun contratemps. La comanda és la següent:
|
1 |
sudo su - apt-mirror -c apt-mirror |
Això descarregarà els índexs dels paquets i després els processarà. En aquest moment ens pot aparèixer un error que indiqui apt-mirror: can’t open index in proceed_index_gz at /usr/bin/apt-mirror line 449 que solucionarem corregint un petit error en l’script que fa la descarrega. Hem d’editar el fitxer /usr/bin/apt-mirror i situar-nos a la línia 449
|
1 |
gksudo gedit /usr/bin/apt-mirror |
(amb CTRL+I podem saltar a la línia desitjada) per a fer el següent canvi:
|
1 |
open STREAM, “< $path/$index>” or die([...]); |
|
1 |
open STREAM, “< $path$index>” or die([...]); |
És a dir, eliminem la barra / que separa $path/$index.
En reprendre la descàrrega és probable que ens trobem amb un nou inconvenient: apt-mirror is already running, exiting at /usr/bin/apt-mirror line 187. És una pràctica habitual que molts programes creïn un fitxer buit de bloqueig (lock) per a evitar que els executem dues vegades simultàniament i, en haver avortat l’execució prèviament apt-mirror es pensa que ja està en execució quan en realitat no és així. Aleshores hem de borrar manualment el fitxer de bloqueig i reprendre la descàrrega. Aquest cop hauria d’anar bé!
|
1 2 |
sudo rm /ubuntu/var/apt-mirror.lock
sudo su - apt-mirror -c apt-mirror |
5 Instal·lar el servidor web
Després d’unes quantes hores de descàrrega procedirem a instal·lar el servidor web, ja que la transferència de dades amb els nostres clients la farem mitjançant http. Això és tan fàcil com executar:
|
1 |
sudo apt-get install apache2 |
No cal fer cap configuració, l’establerta per defecte és perfecta per als nostres interessos.
6 Establir els vincles del servidor web a la carpeta del mirror
La única carpeta accessible via http per defecte del nostre sistema és /var/www però com que hem instal·lat el mirror en una ubicació diferent, farem servir uns enllaços simbòlics.
|
1 2 3 |
sudo ln -s /ubuntu/mirror/archive.ubuntu.com /var/www/archive-ubuntu
sudo ln -s /ubuntu/mirror/archive.canonical.com /var/www/archive-canonical
sudo ln -s /ubuntu/mirror/security.ubuntu.com /var/www/security-ubuntu |
Ja hem acabat!
Part client
En tots els ordinadors que vulguem que emprin el repositori local haurem de substituir el fitxer de les fonts de programari /etc/apt/sources.list per un de nou.
1 Fem una copia de seguretat de les fonts actuals
|
1 |
sudo mv /etc/apt/sources.list /etc/apt/sources.list.original |
2 Creem en nou fitxer de fonts
Amb el següent contingut (substituïnt la IP 192.168.0.2 per la del nostre repositori local, és clar.)
|
1 2 3 4 5 |
deb http://192.168.0.2/archive-ubuntu/ubuntu lucid main restricted universe multiverse
deb http://192.168.0.2/archive-ubuntu/ubuntu lucid-updates main restricted universe multiverse
deb http://192.168.0.2/archive-ubuntu/ubuntu lucid-backports main restricted universe multiverse
deb http://192.168.0.2/security-ubuntu/ubuntu lucid-security main restricted universe multiverse
deb http://192.168.0.2/archive-canonical/ubuntu lucid partner |
3 Rellegim les fonts
|
1 |
sudo apt-get update |
Actualització del repositori local
Evidentment per tal que els ordinadors es mantinguin ben actualitzats haurem d’actualitzar el repositori local periòdicament (a diari o, a tot estirar, setmanalment seria el més adequat). Això podem fer-ho de forma manual executant:
|
1 |
sudo su - apt-mirror -c apt-mirror |
o configurar que es faci periòdicament de forma automàtica gràcies a cron o anacron afegint la línia
|
1 |
@daily 10 mirror nice su - apt-mirror -c apt-mirror |
al fitxer /etc/anacrontab




