패키지 관리 · 로컬 저장소와 오프라인 설치 · 실습
내 저장소 만들기
목표
인터넷 없이 동작하는 apt 저장소를 처음부터 만들어, 거기서 패키지를 설치합니다. 저장소가 사실은 "디렉터리 + 색인 파일" 이라는 것을 손으로 확인합니다.
왜 중요한가
폐쇄망이든 사내 표준 이미지든 CI 캐시든, 결국 필요한 것은 통제 가능한 저장소입니다. apt 가 저장소에서 읽는 것은 Packages 색인과 Release 메타데이터뿐이므로, 그 둘만 만들면 file:/// 경로도 완전한 저장소가 됩니다. 이 구조를 알면 "패키지를 넣었는데 안 보인다"의 원인이 색인 재생성 누락인지 클라이언트 캐시인지 즉시 갈라집니다. 실무 저장소는 여기에 GPG 서명을 더하지만, 이번 실습은 구조에 집중하기 위해 신뢰 옵션으로 대신합니다.
단계
1. /root/repo 디렉터리를 만들고, /opt/fixtures/pkg/labhub-tool 과 /opt/fixtures/pkg/labhub-extra 를 각각 .deb 로 빌드해 /root/repo 안에 넣으세요.
2. /root/repo/Packages 색인을 만드세요. 두 패키지의 Package: 항목이 모두 들어 있어야 합니다.
3. /root/repo/Packages.gz 압축본을 만드세요.
4. /root/repo/Release 파일을 만드세요. Origin, Label, Suite, Codename, Architectures, Components 여섯 키가 각각 한 줄씩 있어야 하고 Architectures 값에는 all 이 포함돼야 합니다.
5. /etc/apt/sources.list.d/labhub-local.list 에 이 저장소를 등록하세요. 경로는 /root/repo, flat 형식입니다.
6. 색인을 갱신하고, apt-cache policy labhub-extra 의 출력을 /root/repo-check/policy.txt 로 저장하세요.
7. labhub-extra 를 apt 로 설치하세요. 의존 관계에 따라 labhub-tool 도 함께 설치돼야 합니다.
8. /root/repo-check/origin.txt 를 두 줄로 만드세요.labhub-tool=<설치된 버전> / labhub-extra=<설치된 버전>
참고
dpkg-scanpackages /root/repo /dev/null > /root/repo/Packages형태로 색인을 만듭니다. 경로 표기 방식에 따라Filename:값이 달라지니apt-get update뒤 에러 메시지를 잘 읽으세요.- sources.list 한 줄의 형식은
deb [옵션] <URI> <suite> [component...]이고, flat 저장소는 suite 자리에./를 씁니다. - 흔한 실수 1: 색인을 만든 뒤
apt-get update를 안 해서 계속 "찾을 수 없음" 이 나오는 경우. - 흔한 실수 2: 서명이 없어
NO_PUBKEY/not signed에러가 나는 경우. 이번 실습에서는 신뢰 옵션으로 넘어갑니다.
단계 8개
- 패키지 풀 준비
- Packages 색인 만들기
- 색인 압축본 만들기
- Release 파일 작성
- 저장소 등록
- 색인 갱신과 확인
- 내 저장소에서 설치
- 출처 확인 보고서