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