Jawaban:
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.
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.gz
berisi output dari ls -lr
perintah yang dijalankan di direktori root repositori.
The dists
direktori 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 pool
direktori 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 projects
direktori tampaknya berisi beberapa file merinci bagaimana cermin itu disinkronisasikan ke repo aslinya.
The indices
direktori berisi banyak file, kebanyakan dari mereka kosong. File yang tidak kosong tampaknya menyediakan beberapa metadata tambahan untuk paket.