Ответы:
В соответствии с строкой 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
Каталог кажется, содержит большинство метаданных, включая весь файл Packages.gz (который содержит список пакетов) и Release.gpg / Release , который подписывает пакет. (Спасибо Жоао за информацию)
pool
Каталог содержит фактические .deb файлы. Организация есть /pool/[section]/[letter]/[group]/packagename.deb
. Таким образом, фактическое местоположение пакета python-subversion таково /pool/main/s/subversion/python-subversion_1.3.2-3ubuntu2%7edapper1_amd64.deb
, потому что subversion - это группа пакета python-subversion, а s - первая буква Subversion.
projects
Каталог кажется, содержит несколько файлов , детализирующих , как зеркало синхронизируются с первоначальной репо.
indices
Каталог содержит большое количество файлов, большинство из них пустые. Непустые файлы предоставляют дополнительные метаданные для пакетов.