miércoles, 15 de abril de 2009

Mirror Debian en OpenSolaris

Este artículo tiene por objeto explicar la forma en la cual configuré un servidor de paquetes Debian y Ubuntu dentro de un equipo que tiene instalado OpenSolaris 2008.11.
La idea detrás de esto es poder servir las actualizaciones de equipos Debian y Ubuntu desde OpenSolaris, entregándoles un mirror que funcione perfectamente.
Para poder hacerlo, utilicé el sistema "apt-mirror", y por lo tanto, partí de una de mis máquinas, que lo tenía instalado, para poder recrear la configuración sobre OpenSolaris.
Manos a la obra!

Primer desafío: comando apt-mirror

El primer paso, es generar el grupo y usuario necesarios para poder utilizar el comando de la misma forma que se hace en cualquier máquina con Ubuntu o Debian.

root:~# groupadd apt-mirror 
UX: groupadd: apt-mirror name too long. 
UX: groupadd: apt-mirror name should be all lower case or numeric. 
root:~# grep apt-mirror /etc/group apt-mirror::100: 
root:~# useradd -g apt-mirror -d /var/spool/apt-mirror -m apt-mirror 
UX: useradd: apt-mirror name too long. 
UX: useradd: apt-mirror name too long. 
UX: useradd: apt-mirror name should be all lower case or numeric. 
80 blocks 
root:~# passwd apt-mirror 
New Password: 
Re-enter new Password: 
passwd: password successfully changed for apt-mirror

Luego, generamos los directorios necesarios para que se ejecute el comando apt-mirror, y guarde los paquetes espejados. Tenemos especial consideración, aquí, de los permisos y propietarios necesarios.

root:~# mkdir /etc/apt 
root:~# chmod 755 /etc/apt
root:~# su - apt-mirror 
Sun Microsystems Inc. 
SunOS 5.11 snv_101b November 2008 
apt-mirror:/var/spool/apt-mirror$ mkdir mirror skel var

Luego, copiamos el archivo mirror.list del servidor linux utilizado como modelo de origen dentro del directorio recién creado, /etc/apt.
Recordemos configurar sus entradas para que sepa de dónde se deberá espejar el conjunto de paquetes, así como qué arquitecturas se deberán espejar (x86, amd64, etc.)

root:~# cd /etc/apt 
root:/etc/apt# scp hecsa@linux:/etc/apt/mirror.list . 
The authenticity of host 'linux (linux)' can't be established. RSA key fingerprint is dc:78:ff:1d:17:c6:50:52:d2:80:87:15:49:03:f0:a8. Are you sure you want to continue connecting (yes/no)? yes 
Warning: Permanently added 'linux' (RSA) to the list of known hosts. 
hecsa@linux's password: 
mirror.list 100% |*****************************| 2457 00:00 
root:/etc/apt# ls -ltr 
total 3 
-rw-r--r-- 1 root root 2457 2009-04-15 21:58 mirror.list

El contenido de este script será del siguiente estilo, por ejemplo:

set nthreads 20 
set _tilde 0
deb http://debian.logiclinux.com/debian stable main contrib non-free 
deb-amd64 http://debian.logiclinux.com/debian stable main contrib non-free 
deb-src http://debian.logiclinux.com/debian stable main contrib non-free

Ahora, copiamos el script perl apt-mirror dentro de /usr/bin.

root:/etc/apt# cd /usr/bin 
root:/usr/bin# scp hecsa@linux:/usr/bin/apt-mirror . 
hecsa@linux's password: 
apt-mirror 100% |*****************************| 16424 00:00 
root:/usr/bin# ls -las apt-mirror 
17 -rwxr-xr-x 1 root root 16424 2009-04-15 22:01 apt-mirror

Finalmente, intentaremos ejecutarlo con el siguiente comando (necesitaremos una buena cantidad de espacio en disco si queremos que baje todos los paquetes):

root:/usr/bin# su - apt-mirror -c apt-mirror

Podemos jugar un poco con la lista de paquetes que se bajarán, por ejemplo, agregando las siguientes entradas en el archivo /etc/apt/mirror.list, para que soporte aparte de Debian, Ubuntu:

deb http://espelhos.edugraf.ufsc.br/ubuntu/ jaunty universe main multiverse restricted
deb-amd64 http://espelhos.edugraf.ufsc.br/ubuntu/ jaunty universe main multiverse restricted

Segundo desafío: Configurar el web server

Ahora, deberemos hacer que nuestro web server entregue estos paquetes a los futuros clientes.
Para ello, lo único que debemos hacer es generar dos links simbólicos, uno para Ubuntu, y otro para Debian, de la siguiente forma:

root:/etc/apt# ln -s /var/spool/apt-mirror/mirror/debian.logiclinux.com/debian /var/apache2/2.2/htdocs/debian 
root:/usr/bin# ln -s /var/spool/apt-mirror/mirror/espelhos.edugraf.ufsc.br/ubuntu /var/apache2/2.2/htdocs/ubuntu 

Y con lo anterior, ya estamos listos para servir a clientes Ubuntu y Debian en su proceso de instalación, cosa que se hizo en el Flisol 2009, en forma exitosa, siendo ésta la primera vez que un servidor OpenSolaris está implementado para instalar clientes de otras arquitecturas, al menos hasta donde yo sé.
Saludos, hasta la próxima!!!

HeCSa