Quelle est la structure d'un référentiel Ubuntu?

29

Comment les fichiers d'un référentiel Ubuntu sont-ils organisés? Quels sont les fichiers importants dans un référentiel? Que se passe-t-il lorsqu'un référentiel devient incohérent, cassé ou synchronisé?

apoorv020
la source

Réponses:

19

Selon la ligne deb de votre source apt, apt récupérera:

Il valide si Release.gpg est une signature valide pour le fichier Release et si le contenu Packages.gz correspond à la somme de contrôle d'intégrité présente dans le fichier Release. En cas de non-concordance, un échec d'intégrité de la signature du référentiel est signalé.

Le nom du fichier de package pour le package demandé est déterminé à partir du contenu de Packages.gz précédemment récupéré. Il est téléchargé et sa somme de contrôle de contenu doit correspondre au contenu de la somme de contrôle Packages.gz ou une défaillance d'intégrité est signalée.

Votre dernière question ne concerne pas la structure du miroir en soi, elle concerne la synchronisation du miroir, qui dépend du processus de mise en miroir. Il est possible de synchroniser en utilisant un emplacement temporaire sans rompre l'intégrité de l'archive pendant la synchronisation. Je ne sais pas si tous les miroirs Ubuntu font cela.

João Pinto
la source
malheureusement, les liens sont rompus
bleuâtre
Ils ne sont pas cassés, ce ne sont que des modèles, vous devrez remplacer la "release" "COMPONENT", binary- ", etc, qui sont des champs dynamiques.
João Pinto
18

Joao a répondu à la deuxième moitié de ma question, j'ai donc enquêté par moi-même. Au niveau racine, il y a quatre répertoires et un fichier.

root
| -- dists
| -- pool
| -- indices
| -- project
| -- ls-lr.gz

(Toujours dans mon référentiel collégial, seules les deux premières entrées étaient présentes. Les 3 dernières semblent donc non essentielles au fonctionnement du référentiel.)

Le fichier ls-lr.gzcontient la sortie de la ls -lrcommande exécutée sur le répertoire racine du référentiel.

Le distsrépertoire semble contenir la plupart des métadonnées, y compris tous les fichiers packages.gz (qui contient une liste de packages) et Release.gpg / Release qui signe le package. (Merci à Joao pour l'info)

Le poolrépertoire contient les fichiers .deb réels. L'organisation est /pool/[section]/[letter]/[group]/packagename.deb. Ainsi, l'emplacement réel du paquet python-subversion est /pool/main/s/subversion/python-subversion_1.3.2-3ubuntu2%7edapper1_amd64.deb, car subversion est le groupe du paquet python-subversion, et s est la première lettre de subversion.

Le projectsrépertoire semble contenir quelques fichiers détaillant la façon dont le miroir a été synchronisé avec le dépôt d'origine.

Le indicesrépertoire contient de nombreux fichiers, pour la plupart vides. Les fichiers non vides semblent fournir des métadonnées supplémentaires pour les packages.

apoorv020
la source