it-swarm.com.de

Wie ist das Ubuntu-Repository aufgebaut?

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?

28
apoorv020

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.

18
João Pinto

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.gz enthält die Ausgabe des Befehls ls -lr, der im Stammverzeichnis des Repository ausgeführt wird.

Das Verzeichnis dists 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 Verzeichnis pool enthält die eigentlichen .deb-Dateien. Die Organisation ist /pool/[section]/[letter]/[group]/packagename.deb. Daher 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 projects -Verzeichnis scheint einige Dateien zu enthalten, die genau beschreiben, wie der Spiegel mit dem ursprünglichen Repository synchronisiert wurde.

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

17
apoorv020