Wie ist das Ubuntu-Repository aufgebaut?

29

Wie sind die Dateien in einem Ubuntu-Repository organisiert? Was sind die wichtigen Dateien in einem Repository? Was passiert, wenn ein Repository inkonsistent wird, kaputt geht oder synchronisiert wird?

apoorv020
quelle

Antworten:

19

Entsprechend der Deb-Zeile in Ihrer Apt-Quelle ruft Apt Folgendes ab:

Es wird überprüft, ob das Release.gpg eine gültige Signatur für die Release-Datei ist und ob der Inhalt von Packages.gz mit der Integritätsprüfsumme in der Release-Datei übereinstimmt. Wenn eine Nichtübereinstimmung vorliegt, wird ein Fehler bei der Integrität der Repository-Signatur gemeldet.

Der Name der Paketdatei für das angeforderte Paket wird aus den zuvor abgerufenen Inhalten von Packages.gz bestimmt. Es wird heruntergeladen und seine Inhaltsprüfsumme muss mit dem Inhalt der Packages.gz-Prüfsumme übereinstimmen. Andernfalls wird ein Integritätsfehler gemeldet.

Bei Ihrer letzten Frage geht es nicht um die Spiegelstruktur an sich, sondern um die Spiegelsynchronisation, die vom Spiegelungsprozess abhängt. Es ist möglich, mithilfe eines temporären Speicherorts zu synchronisieren, ohne die Archivintegrität während der Synchronisierung zu beeinträchtigen. Ich bin mir nicht sicher, ob alle Ubuntu-Spiegel dies tun.

João Pinto
quelle
Leider sind die Links kaputt
bläulich
Sie sind nicht defekt, sie sind nur Vorlagen, Sie müssen das "release" "COMPONENT", "binary-" usw. ersetzen, die dynamische Felder sind.
João Pinto
18

Joäo beantwortete die zweite Hälfte meiner Frage und ich untersuchte die erste Hälfte alleine. Auf der Stammebene gibt es vier Verzeichnisse und eine Datei.

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

(Auch in meinem College-Repo waren nur die ersten beiden Einträge vorhanden. Die letzten drei scheinen für das Funktionieren des Repos nicht wesentlich zu sein.)

Die Datei ls-lr.gzenthält die Ausgabe des ls -lrBefehls als im Repository-Stammverzeichnis ausgeführt.

Das distsVerzeichnis scheint die meisten Metadaten zu enthalten, einschließlich aller packages.gz-Dateien (die eine Liste von Paketen enthalten) und Release.gpg / Release, die das Paket signieren. (Danke an Joao für die Info)

Das poolVerzeichnis enthält die eigentlichen .deb-Dateien. Die Organisation ist /pool/[section]/[letter]/[group]/packagename.deb. Somit ist der tatsächliche Speicherort des Python-Subversion-Pakets /pool/main/s/subversion/python-subversion_1.3.2-3ubuntu2%7edapper1_amd64.deb, da Subversion die Gruppe des Python-Subversion-Pakets ist und s der erste Buchstabe von Subversion ist.

Das projectsVerzeichnis scheint ein paar Dateien zu enthalten, die genau beschreiben, wie der Spiegel mit dem ursprünglichen Repository synchronisiert wurde.

Das indicesVerzeichnis enthält viele Dateien, von denen die meisten leer sind. Die nicht leeren Dateien scheinen einige zusätzliche Metadaten für Pakete bereitzustellen.

apoorv020
quelle