Câu trả lời:
Theo dòng deb trên nguồn apt của bạn, apt sẽ tìm nạp:
Nó xác nhận nếu Release.gpg là chữ ký hợp lệ cho tệp Phát hành và nếu nội dung Gói.gz khớp với tổng kiểm tra tính toàn vẹn có trong tệp Phát hành. Nếu có sự không phù hợp, lỗi toàn vẹn chữ ký kho được báo cáo.
Tên tệp gói cho gói được yêu cầu được xác định từ nội dung Gói.gz đã truy xuất trước đó. Nó được tải xuống và tổng kiểm tra nội dung của nó phải phù hợp với nội dung tổng kiểm tra Gói.gz hoặc lỗi toàn vẹn được báo cáo.
Câu hỏi cuối cùng của bạn không phải là về cấu trúc gương mỗi se, mà là về sự đồng bộ hóa gương, phụ thuộc vào quá trình phản chiếu. Có thể đồng bộ hóa bằng cách sử dụng một vị trí tạm thời mà không phá vỡ tính toàn vẹn của kho lưu trữ trong quá trình đồng bộ. Tôi không chắc chắn nếu tất cả các máy nhân bản Ubuntu làm điều đó.
Joao đã trả lời nửa sau câu hỏi của tôi, vì vậy tôi đã tự mình điều tra nửa đầu. Ở cấp độ gốc, có bốn thư mục và một tệp.
root
| -- dists
| -- pool
| -- indices
| -- project
| -- ls-lr.gz
(Cũng trong repo đại học của tôi, chỉ có hai mục đầu tiên ở đó. Vì vậy, 3 mục cuối dường như không cần thiết cho hoạt động của repo.)
Tệp ls-lr.gz
này chứa đầu ra của ls -lr
lệnh khi chạy trên thư mục gốc của kho lưu trữ.
Thư mục dists
dường như chứa hầu hết các siêu dữ liệu, bao gồm tất cả các tệp tests.gz (chứa danh sách các gói) và Release.gpg / Release có ký tên gói. (Cảm ơn Joao về thông tin)
Thư mục pool
chứa các tệp .deb thực tế. Các tổ chức là /pool/[section]/[letter]/[group]/packagename.deb
. Do đó, vị trí thực tế của gói lật đổ python là /pool/main/s/subversion/python-subversion_1.3.2-3ubuntu2%7edapper1_amd64.deb
bởi vì subversion là nhóm của gói python-subversion và s là chữ cái đầu tiên của lật đổ.
Thư mục projects
dường như chứa một vài tệp mô tả chi tiết cách nhân bản được đồng bộ hóa với repo ban đầu.
Thư mục indices
chứa nhiều tệp, hầu hết đều trống. Các tệp không trống dường như cung cấp một số siêu dữ liệu bổ sung cho các gói.