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?
quelle
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?
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 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.
(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 desls -lr
Befehls als im Repository-Stammverzeichnis ausgeführt.Das
dists
Verzeichnis 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
pool
Verzeichnis 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
projects
Verzeichnis scheint ein paar Dateien zu enthalten, die genau beschreiben, wie der Spiegel mit dem ursprünglichen Repository synchronisiert wurde.Das
indices
Verzeichnis enthält viele Dateien, von denen die meisten leer sind. Die nicht leeren Dateien scheinen einige zusätzliche Metadaten für Pakete bereitzustellen.quelle