Respuestas:
De acuerdo con la línea de deb en su fuente de apt, apt obtendrá:
Valida si Release.gpg es una firma válida para el archivo Release y si el contenido de Packages.gz coincide con la suma de comprobación de integridad presente en el archivo Release. Si hay una falta de coincidencia, se informa una falla de integridad de firma de repositorio.
El nombre del archivo del paquete solicitado se determina a partir del contenido de Packages.gz recuperado anteriormente. Se descarga y su suma de verificación de contenido debe coincidir con el contenido de la suma de verificación Packages.gz o se informa un error de integridad.
Su última pregunta no es sobre la estructura de espejo en sí, sino sobre la sincronización de espejo, que depende del proceso de duplicación. Es posible sincronizar usando una ubicación temporal sin romper la integridad del archivo durante la sincronización. No estoy seguro si todos los espejos de Ubuntu hacen eso.
Joao respondió la segunda mitad de mi pregunta, así que investigué la primera mitad por mi cuenta. En el nivel raíz, hay cuatro directorios y un archivo.
root
| -- dists
| -- pool
| -- indices
| -- project
| -- ls-lr.gz
(También en mi repositorio universitario, solo estaban las dos primeras entradas. Por lo tanto, las últimas 3 parecen no ser esenciales para el funcionamiento del repositorio).
El archivo ls-lr.gz
contiene la salida del ls -lr
comando tal como se ejecuta en el directorio raíz del repositorio.
El dists
directorio parece contener la mayoría de los metadatos, incluidos todos los archivos packages.gz (que contiene una lista de paquetes) y Release.gpg / Release que firma el paquete. (Gracias a Joao por la información)
El pool
directorio contiene los archivos .deb reales. La organización es /pool/[section]/[letter]/[group]/packagename.deb
. Por lo tanto, la ubicación real del paquete python-subversion es /pool/main/s/subversion/python-subversion_1.3.2-3ubuntu2%7edapper1_amd64.deb
, porque subversion es el grupo del paquete python-subversion, y s es la primera letra de subversion.
El projects
directorio parece contener algunos archivos que detallan cómo se sincronizó el espejo con el repositorio original.
El indices
directorio contiene muchos archivos, la mayoría de ellos vacíos. Los archivos no vacíos parecen proporcionar algunos metadatos adicionales para los paquetes.