Jerarquía
~~~~~~~~~
Psync maneja una jerarquía respecto a los mirros.
El ojeto más externo de tods es la Configuración, que no es más que una lista de
Repo(sitorio)s.
Un Repo es una unidad que normalmente representa una unidad de software
relacionado entre sí. Por lo general representa todo un árbols de un mirror que
incluye una distro completa o software de terceros para varios distros. Un
repositorio puede tener a lista de Distros o Releases. Como una Distro a su vez
puede ser una lista de Releases, veremos la primera en detalle.
Los repositorios para terceros a veces empaquetan software para distintas
Distros, principalmente los que empaquetan .rpm's para Mandrake/Mandriva,
RedHat/Fedor, SuSE y así. Por ellos es que un Repositorio puede contener varias
Distros.
Un Release es una instancia única de una Distro en el tiempo. Por lo general se
refiere a las versiones estables y congeladas de las Distros, pero también
representan aquellas que van cambiando con el tiempo: cooker de Mandriva,
testing y unstable de Debian, etc. Un Release puede venir para varias Archs.
Una Arch(itercture) puede contener Módulos. Casi todas las distros actuales
dividen el software deisponible en tales cosas.
Tratamientos de errores:
~~~~~~~~~~~~~~~~~~~~~~~~
Volviendo un poco para atrás, un Release es la unidad de transacción para psync.
Esto significa que si al menos un paquete de cualquiera de los componentes del
Release falla, el Release se considera incompleto y no se actualizan las bases
de datos[*]. En este caso, tanto los archivos `viejos´ como los recién bajados
quedan en el mirror y los que correspondan serán limpiados en la primer pasada
completamente exitosa que suceda.
[*] Es cierto que muchos de los errores son recuperables, pero aún no pienso
encargarme de ello (esto es simple por ahora porque hay un solo backend de
downoading: http [y a través del comando externo culr]. Si llegara a haber más,
habría que hacer toda una API para backends... lo cual no estoy dispuesto a
hacer aún).