답변:
apt 소스의 deb 라인에 따르면 apt는 다음을 가져옵니다.
Release.gpg가 릴리스 파일에 유효한 서명인지, 그리고 Packages.gz 내용이 릴리스 파일에있는 무결성 체크섬과 일치하는지 확인합니다. 불일치가 있으면 리포지토리 서명 무결성 오류가보고됩니다.
요청 된 패키지의 패키지 파일 이름은 이전에 검색된 Packages.gz 내용에서 결정됩니다. 컨텐츠 체크섬이 다운로드되고 해당 컨텐츠 체크섬이 Packages.gz 체크섬 컨텐츠와 일치해야합니다. 그렇지 않으면 무결성 오류가보고됩니다.
마지막 질문은 미러 구조 자체에 관한 것이 아니라 미러 프로세스에 따른 미러 동기화에 관한 것입니다. 동기화하는 동안 아카이브 무결성을 중단하지 않고 임시 위치를 사용하여 동기화 할 수 있습니다. 모든 우분투 거울이 그렇게하는지 확실하지 않습니다.
Joao는 내 질문의 후반부에 대답했기 때문에 전반을 스스로 조사했습니다. 루트 레벨에는 4 개의 디렉토리와 1 개의 파일이 있습니다.
root
| -- dists
| -- pool
| -- indices
| -- project
| -- ls-lr.gz
(또한 내 대학 리포지토리에는 처음 두 항목 만있었습니다. 따라서 마지막 3 개는 리포지토리 기능에 필수적이지 않은 것으로 보입니다.)
파일 ls-lr.gz
에는 ls -lr
저장소 루트 디렉토리에서 실행 되는 명령 출력이 포함 됩니다.
dists
디렉토리는 (패키지의 목록을 포함) 넣고 Packages.gz 파일과 패키지에 서명 Release.gpg / 릴리스 모두를 포함하는 메타 데이터의 대부분을 포함 할 것으로 보인다. (정보를 위해 Joao에게 감사합니다)
pool
디렉토리는 실제 뎁 파일이 포함되어 있습니다. 조직은 /pool/[section]/[letter]/[group]/packagename.deb
입니다. 따라서 subversion은 python-subversion 패키지 /pool/main/s/subversion/python-subversion_1.3.2-3ubuntu2%7edapper1_amd64.deb
의 그룹이고 s는 subversion의 첫 글자이므로 python-subversion 패키지의 실제 위치는 입니다.
projects
디렉토리는 미러가 원래의 repo에 동기화 된 방법을 자세히 설명하는 몇 개의 파일을 포함 할 것으로 보인다.
indices
디렉토리에 많은 파일이 포함되어, 그들 대부분은 비 웁니다. 비어 있지 않은 파일은 패키지에 대한 추가 메타 데이터를 제공하는 것으로 보입니다.