Какова структура репозитория Ubuntu?

29

Как организованы файлы в хранилище Ubuntu? Каковы важные файлы в хранилище? Что происходит, когда хранилище становится непоследовательным, поврежденным или синхронизируется?

apoorv020
источник

Ответы:

19

В соответствии с строкой deb вашего исходного кода apt, apt получит:

Он проверяет, является ли Release.gpg действительной подписью для файла Release, и соответствует ли содержимое Packages.gz контрольной сумме целостности, присутствующей в файле Release. В случае несоответствия сообщается о сбое целостности подписи репозитория.

Имя файла пакета для запрошенного пакета определяется из ранее извлеченного содержимого Packages.gz. Он загружен, и его контрольная сумма содержимого должна соответствовать содержимому контрольной суммы Packages.gz, или сообщается о сбое целостности.

Ваш последний вопрос не о структуре зеркала как таковой, а о синхронизации зеркала, которая зависит от процесса зеркалирования. Возможна синхронизация с использованием временного местоположения без нарушения целостности архива во время синхронизации. Я не уверен, что все зеркала Ubuntu делают это.

Жоао Пинту
источник
к сожалению, ссылки не работают
голубоватые
Они не разбиты, это всего лишь шаблоны, вам нужно будет заменить «release», «COMPONENT», binary- »и т. Д., Которые являются динамическими полями.
João Pinto
18

Хуан ответил на вторую половину моего вопроса, поэтому я исследовал первую половину самостоятельно. На корневом уровне есть четыре каталога и один файл.

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Каталог содержит большое количество файлов, большинство из них пустые. Непустые файлы предоставляют дополнительные метаданные для пакетов.

apoorv020
источник