¿Cuál es la estructura de un repositorio de Ubuntu?

29

¿Cómo se organizan los archivos en un repositorio de Ubuntu? ¿Cuáles son los archivos importantes en un repositorio? ¿Qué sucede cuando un repositorio se vuelve inconsistente, roto o se está sincronizando?

apoorv020
fuente

Respuestas:

19

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.

João Pinto
fuente
desafortunadamente los enlaces están rotos
azulado
Ellos no están rotos, son sólo las plantillas, tendrá que sustituir la "liberación", "Componente", binary-", etc, que son campos dinámicos.
João Pinto
18

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.gzcontiene la salida del ls -lrcomando tal como se ejecuta en el directorio raíz del repositorio.

El distsdirectorio 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 pooldirectorio 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 projectsdirectorio parece contener algunos archivos que detallan cómo se sincronizó el espejo con el repositorio original.

El indicesdirectorio contiene muchos archivos, la mayoría de ellos vacíos. Los archivos no vacíos parecen proporcionar algunos metadatos adicionales para los paquetes.

apoorv020
fuente