Відповіді:
Відповідно до рядка deb у вашому джерелі apt, apt отримає:
Він перевіряє, чи Release.gpg є дійсною підписом для файлу Release і якщо вміст Packages.gz відповідає контрольній сумі цілісності, що присутня у файлі Release. Якщо є невідповідність, повідомляється про помилку цілісності підпису репозиторію.
Ім'я файлу пакета для запитуваного пакета визначається із раніше отриманого вмісту Packages.gz. Він завантажується, і його контрольна сума має відповідати вмісту контрольної суми Packages.gz або повідомляється про помилку цілісності.
Ваше останнє запитання не стосується структури дзеркала як такого, а про синхронізації дзеркала, що залежить від дзеркального процесу. Можна синхронізувати за допомогою тимчасового місця без порушення цілісності архіву під час синхронізації. Я не впевнений, чи роблять це всі дзеркала Ubuntu.
Жоао відповів на другу половину мого запитання, тому я дослідив першу половину самостійно. На кореневому рівні є чотири каталоги та один файл.
root
| -- dists
| -- pool
| -- indices
| -- project
| -- ls-lr.gz
(Також у моєму репортажі про коледж були лише перші два записи. Отже, останні 3 здаються несуттєвими для функціонування репо.)
Файл ls-lr.gz
містить висновок ls -lr
команди під час запуску в кореневому каталозі репозиторію.
Схоже, що dists
каталог містить більшість метаданих, включаючи всі файли пакунків.gz (що містить список пакунків) та Release.gpg / Release, який підписує пакет. (Дякую Жоао за інформацію)
pool
Каталог містить фактичні .deb файли. Організація є /pool/[section]/[letter]/[group]/packagename.deb
. Таким чином, фактичне розташування пакету пітон-субверсія є /pool/main/s/subversion/python-subversion_1.3.2-3ubuntu2%7edapper1_amd64.deb
, тому що субверсія є групою пакету пітон-субверсії, а s - перша літера субверсії.
projects
Каталог здається, містить кілька файлів , що деталізують , як дзеркало синхронізуються з первісної репо.
У indices
каталозі багато файлів, більшість з яких порожні. Непорожні файли здаються додатковими метаданими для пакетів.