Qual è la struttura di un repository Ubuntu?

25

Come sono organizzati i file in un repository Ubuntu? Quali sono i file importanti in un repository? Cosa succede quando un repository diventa incoerente, rotto o in fase di sincronizzazione?

    
posta apoorv020 27.02.2011 - 20:23

2 risposte

15

Secondo la linea deb sul tuo sorgente apt, apt recupererà:

  • link
  • link
  • link

Convalida se Release.gpg è una firma valida per il file Release e se il contenuto Packages.gz corrisponde al checksum di integrità presente nel file Release. In caso di mancata corrispondenza, viene segnalato un errore di integrità della firma del repository.

Il nome del file del pacchetto per il pacchetto richiesto è determinato dai contenuti Packages.gz recuperati in precedenza. Viene scaricato e il checksum del contenuto deve corrispondere al contenuto checksum Packages.gz o viene segnalato un errore di integrità.

L'ultima domanda non riguarda la struttura del mirror in sé, riguarda la sincronizzazione del mirror, che dipende dal processo di mirroring. È possibile eseguire la sincronizzazione utilizzando una posizione temporanea senza interrompere l'integrità dell'archivio durante la sincronizzazione. Non sono sicuro che tutti i mirror di Ubuntu lo facciano.

    
risposta data João Pinto 28.02.2011 - 00:26
14

Joao ha risposto alla seconda metà della mia domanda, quindi ho studiato il primo tempo da solo. A livello di root, ci sono quattro directory e un file.

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

(Anche nel mio repository del college, c'erano solo le prime due voci, quindi gli ultimi 3 sembrano non essenziali per il funzionamento del repository.)

Il file ls-lr.gz contiene l'output del comando ls -lr eseguito nella directory root del repository.

La directory dists sembra contenere la maggior parte dei metadati, incluso tutto il file packages.gz (che contiene un elenco di pacchetti) e Release.gpg / Release che firma il pacchetto. (Grazie a Joao per le informazioni)

La directory pool contiene i file .deb effettivi. L'organizzazione è /pool/[section]/[letter]/[group]/packagename.deb . Quindi la posizione effettiva del pacchetto python-subversion è /pool/main/s/subversion/python-subversion_1.3.2-3ubuntu2%7edapper1_amd64.deb , perché subversion è il gruppo del pacchetto python-subversion, e s è la prima lettera di subversion.

La directory projects sembra contenere alcuni file che descrivono dettagliatamente come il mirror è stato sincronizzato con il repository originale.

La directory indices contiene molti file, molti dei quali vuoti. I file non vuoti sembrano fornire dei metadati aggiuntivi per i pacchetti.

    
risposta data apoorv020 28.02.2011 - 06:07

Leggi altre domande sui tag