Bagaimana struktur repositori Ubuntu?

29

Bagaimana file dalam repositori Ubuntu diorganisasikan? Apa file-file penting dalam repositori? Apa yang terjadi ketika repositori menjadi tidak konsisten, rusak atau sedang disinkronkan?

apoorv020
sumber

Jawaban:

19

Menurut garis deb pada sumber apt Anda, apt akan mengambil:

Ini memvalidasi jika Release.gpg adalah tanda tangan yang valid untuk file Release, dan jika konten Packages.gz cocok dengan checksum integritas yang ada pada file Release. Jika ada ketidakcocokan, kegagalan integritas tanda tangan repositori dilaporkan.

Nama file paket untuk paket yang diminta ditentukan dari konten Packages.gz yang sebelumnya diambil. Itu diunduh, dan kontennya checksum harus cocok dengan content.gz konten checksum atau kegagalan integritas dilaporkan.

Pertanyaan terakhir Anda bukan tentang struktur cermin itu sendiri, ini tentang sinkronisasi cermin, yang tergantung pada proses mirroring. Dimungkinkan untuk menyinkronkan menggunakan lokasi sementara tanpa merusak integritas arsip selama sinkronisasi. Saya tidak yakin apakah semua mirror Ubuntu melakukan itu.

João Pinto
sumber
sayangnya tautan rusak
kebiru
Mereka tidak rusak, mereka hanya templat, Anda perlu mengganti "release" "COMPONENT", binary- ", dll, yang merupakan bidang dinamis.
João Pinto
18

Joao menjawab bagian kedua dari pertanyaanku, jadi aku menyelidiki sendiri bagian pertama. Pada level root, ada empat direktori dan satu file.

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

(Juga di repo kampus saya, hanya dua entri pertama yang ada di sana. Jadi 3 yang terakhir tampaknya tidak penting untuk berfungsinya repo.)

File tersebut ls-lr.gzberisi output dari ls -lrperintah yang dijalankan di direktori root repositori.

The distsdirektori tampaknya berisi sebagian besar metadata, termasuk semua file packages.gz (yang berisi daftar paket) dan Release.gpg / Release yang menandatangani paket. (Terima kasih kepada Joao untuk informasinya)

The pooldirektori berisi file-file .deb yang sebenarnya. Organisasi itu /pool/[section]/[letter]/[group]/packagename.deb. Dengan demikian lokasi sebenarnya dari paket python-subversi adalah /pool/main/s/subversion/python-subversion_1.3.2-3ubuntu2%7edapper1_amd64.deb, karena subversi adalah grup dari paket python-subversi, dan s adalah huruf pertama dari subversi.

The projectsdirektori tampaknya berisi beberapa file merinci bagaimana cermin itu disinkronisasikan ke repo aslinya.

The indicesdirektori berisi banyak file, kebanyakan dari mereka kosong. File yang tidak kosong tampaknya menyediakan beberapa metadata tambahan untuk paket.

apoorv020
sumber