Qual é a estrutura de um repositório Ubuntu?

29

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?

apoorv020
fonte

Respostas:

19

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 Pinto
fonte
infelizmente links estão quebrados
azulada
Eles não estão quebrados, eles são apenas modelos, você terá de substituir o "release" "Componente", binary-", etc, que são campos dinâmicos.
João Pinto
18

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.

root
| -- dists
| -- pool
| -- indices
| -- project
| -- ls-lr.gz

(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.gzcontém a saída do ls -lrcomando conforme executado no diretório raiz do repositório.

O distsdiretó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 pooldiretó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 projectsdiretório parece conter alguns arquivos detalhando como o espelho foi sincronizado com o repositório original.

O indicesdiretório contém muitos arquivos, a maioria vazios. Os arquivos não vazios parecem fornecer alguns metadados extras para pacotes.

apoorv020
fonte