Como são organizados os arquivos em um repositório Ubuntu? Quais são os arquivos importantes em um repositório? O que acontece quando um repositório se torna inconsistente, quebrado ou está sendo sincronizado?
fonte
Como são organizados os arquivos em um repositório Ubuntu? Quais são os arquivos importantes em um repositório? O que acontece quando um repositório se torna inconsistente, quebrado ou está sendo sincronizado?
De acordo com a linha deb na sua fonte apt, o apt buscará:
Ele valida se o Release.gpg é uma assinatura válida para o arquivo Release e se o conteúdo Packages.gz corresponde à soma de verificação de integridade presente no arquivo Release. Se houver uma incompatibilidade, uma falha de integridade da assinatura do repositório será relatada.
O nome do arquivo do pacote solicitado é determinado a partir do conteúdo de Packages.gz recuperado anteriormente. Ele é baixado e sua soma de verificação de conteúdo deve corresponder ao conteúdo da soma de verificação Packages.gz ou uma falha de integridade é relatada.
Sua última pergunta não é sobre a estrutura do espelho em si, é sobre a sincronização do espelho, que depende do processo de espelhamento. É possível sincronizar usando um local temporário sem interromper a integridade do arquivo durante a sincronização. Não tenho certeza se todos os espelhos do Ubuntu fazem isso.
João respondeu a segunda metade da minha pergunta, então eu investiguei a primeira metade por conta própria. No nível raiz, existem quatro diretórios e um arquivo.
(Também no repo da faculdade, apenas as duas primeiras entradas estavam lá. Portanto, as três últimas parecem não ser essenciais para o funcionamento do repo.)
O arquivo
ls-lr.gz
contém a saída dols -lr
comando conforme executado no diretório raiz do repositório.O
dists
diretório parece conter a maioria dos metadados, incluindo todos os arquivos packages.gz (que contém uma lista de pacotes) e Release.gpg / Release, que assina o pacote. (Obrigado a João pela informação)O
pool
diretório contém os arquivos .deb reais. A organização é/pool/[section]/[letter]/[group]/packagename.deb
. Portanto, a localização real do pacote python-subversion é/pool/main/s/subversion/python-subversion_1.3.2-3ubuntu2%7edapper1_amd64.deb
, porque subversion é o grupo do pacote python-subversion, e s é a primeira letra do subversion.O
projects
diretório parece conter alguns arquivos detalhando como o espelho foi sincronizado com o repositório original.O
indices
diretório contém muitos arquivos, a maioria vazios. Os arquivos não vazios parecem fornecer alguns metadados extras para pacotes.fonte