Как организованы файлы в хранилище Ubuntu? Каковы важные файлы в хранилище? Что происходит, когда хранилище становится непоследовательным, поврежденным или синхронизируется?
В соответствии с строкой 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, который подписывает пакет. (Спасибо Joao за информацию)
Каталог 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
содержит много файлов, большинство из которых пустые. Непустые файлы предоставляют дополнительные метаданные для пакетов.