Qual é a estrutura de um repositório do Ubuntu?

26

Como os arquivos em um repositório do Ubuntu são organizados? 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?

    
por apoorv020 27.02.2011 / 20:23

2 respostas

16

De acordo com a linha deb no seu código apt, o apt irá buscar:

  • link
  • link
  • link

Valida se o Release.gpg é uma assinatura válida para o arquivo Release e se o conteúdo do Packages.gz corresponde à soma de verificação de integridade presente no arquivo Release. Se houver uma incompatibilidade, uma falha na integridade da assinatura do repositório será relatada.

O nome do arquivo de pacote para o pacote solicitado é determinado a partir do conteúdo Packages.gz recuperado anteriormente. Ele é baixado e sua soma de verificação de conteúdo deve corresponder ao conteúdo do checksum de 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 quebrar a integridade do arquivamento durante a sincronização. Não tenho certeza se todos os espelhos do Ubuntu fazem isso.

    
por João Pinto 28.02.2011 / 00:26
14

João respondeu a segunda metade da minha pergunta, então eu investiguei o primeiro semestre sozinho. No nível da raiz, existem quatro diretórios e um arquivo.

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

(Também no meu repositório da faculdade, apenas as duas primeiras entradas estavam lá. Portanto, as três últimas parecem não ser essenciais para o funcionamento do repositório).

O arquivo ls-lr.gz contém a saída do comando ls -lr como executado no diretório raiz do repositório.

O diretório dists parece conter a maioria dos metadados, incluindo todo o arquivo packages.gz (que contém uma lista de pacotes) e Release.gpg / Release que assina o pacote. (Obrigado a João pela info)

O diretório pool contém os arquivos .deb reais. A organização é /pool/[section]/[letter]/[group]/packagename.deb . Assim, 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 da subversão.

O diretório projects parece conter alguns arquivos detalhando como o espelho foi sincronizado com o repositório original.

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

    
por apoorv020 28.02.2011 / 06:07

Tags