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

25

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

    
задан apoorv020 27.02.2011 в 19:23
источник

2 ответа

15

В соответствии с линией deb на вашем apt-источнике apt будет извлекать:

  • Ссылка
  • Ссылка
  • Ссылка

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

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

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

    
ответ дан João Pinto 27.02.2011 в 23:26
источник
13

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

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 является первой буквой подрывной операции.

В каталоге projects содержится несколько файлов, в которых подробно описано, как зеркало синхронизируется с исходным репо.

В каталоге indices содержится много файлов, большинство из которых пустые. Непустые файлы, похоже, содержат некоторые дополнительные метаданные для пакетов.

    
ответ дан apoorv020 28.02.2011 в 05:07