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é?
la source
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é?
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.
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.
(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.gz
contient la sortie de lals -lr
commande exécutée sur le répertoire racine du référentiel.Le
dists
ré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
pool
ré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
projects
répertoire semble contenir quelques fichiers détaillant la façon dont le miroir a été synchronisé avec le dépôt d'origine.Le
indices
répertoire contient de nombreux fichiers, pour la plupart vides. Les fichiers non vides semblent fournir des métadonnées supplémentaires pour les packages.la source