Building an Offline Transfer Bundle
한국어 원문으로 표시합니다.
목표
패키지 하나와 그 의존성 전체를 "반입 번들" 로 묶고, 체크섬 매니페스트로 검증한 뒤, 그 번들만으로 설치를 재현합니다. 폐쇄망 반입 절차의 축소판입니다.
왜 중요한가
폐쇄망에서 가장 흔한 실패는 "받아 갔는데 의존성이 모자라서 다시 나와야 하는 것" 입니다. 반입 심의가 하루에 한 번뿐인 조직에서는 왕복 한 번이 하루입니다. 그래서 숙련자는 바깥에서 의존성 그래프를 통째로 푼 결과를 들고 들어갑니다. 그리고 매체를 통과한 파일이 온전한지 확인할 방법이 필요합니다 — 체크섬은 전송 중 손상을 잡고, 서명은 출처를 보증합니다. 이 실습은 그 절차의 뼈대를 손에 익힙니다.
단계
/root/offline디렉터리를 만들고,cowsay를 설치할 때 받아야 할 파일들의 URI 목록을/root/offline/uris.txt로 저장하세요. (실제로 설치하면 안 됩니다.)cowsay와 그 의존성을 내려받기만 하고, 받은.deb파일을/root/offline/pool/로 모으세요. 최소 2개 이상이어야 합니다./root/offline/pool안의 모든.deb에 대한 SHA-256 매니페스트를/root/offline/manifest.sha256으로 만드세요.- 그 매니페스트로 검증을 수행하고 결과를
/root/offline/verify.txt로 저장하세요. 모든 줄이 정상(OK)이어야 합니다. /root/offline/pool을 저장소로 만들기 위해Packages와Packages.gz를 생성하세요./etc/apt/sources.list.d/labhub-airgap.list로 이 저장소를 등록하고 색인을 갱신하세요.cowsay를 재설치해서 반입분으로도 설치가 되는지 확인하고, 설치 후cowsay labhub실행 결과를/root/offline/run.txt로 저장하세요./root/offline/report.txt를 다음 4줄로 만드세요.PACKAGES=<pool 안 .deb 개수>/BYTES=<pool 안 .deb 파일 크기 합계(바이트)>/VERIFY=OK/SNAPSHOT=<오늘 날짜 YYYY-MM-DD>
참고
- 받은 파일은 보통
/var/cache/apt/archives/에 쌓입니다. 미리apt-get clean을 해 두면 이번에 받은 것만 남아 구분하기 쉽습니다. - 크기 합계는
du -bc /root/offline/pool/*.deb | tail -1또는stat -c %s합으로 구할 수 있습니다. - 흔한 실수 1: 3번 매니페스트를 절대 경로로 만들면 4번 검증이 다른 디렉터리에서 깨집니다.
cd후 상대 경로로 만드는 편이 안전합니다. - 흔한 실수 2: 1번에서 실제로 설치해 버리면 2번에서 "이미 최신" 이라며 아무것도 받지 않습니다.
- 흔한 실수 3: 6번에서
Permission denied로 색인 갱신이 실패하는 경우. apt 는 파일을 받을 때만_apt라는 비특권 사용자로 권한을 낮추는데,/root가 700 이라 그 사용자가 통과하지 못합니다.chmod o+x /root로 '들어가기' 한 칸만 열어 주면 됩니다(목록 보기는 여전히 막혀 있습니다).
무엇을 받아야 하는지 먼저 계산
/root/offline 디렉터리를 만들고, cowsay 를 설치할 때 받아야 할 파일들의 URI 목록을 /root/offline/uris.txt 로 저장하세요. (실제로 설치하면 안 됩니다.)
apt-get install 에는 실제로 받지 않고 받을 URI 목록만 출력하는 옵션이 있습니다. 시뮬레이션 계열 옵션을 찾아보세요.
패키지 내려받기
cowsay 와 그 의존성을 내려받기만 하고, 받은 .deb 파일을 /root/offline/pool/ 로 모으세요. 최소 2개 이상이어야 합니다.
설치까지 하지 말고 내려받기만 하는 옵션이 있습니다. 받은 파일은 apt 캐시 디렉터리에 쌓입니다.
체크섬 매니페스트 생성
/root/offline/pool 안의 모든 .deb 에 대한 SHA-256 매니페스트를 /root/offline/manifest.sha256 으로 만드세요.
sha256sum 을 여러 파일에 한 번에 걸면 '해시 공백 파일명' 형식이 나옵니다. 나중에 검증할 때 그대로 쓸 수 있는 형식입니다.
매니페스트로 검증
그 매니페스트로 검증을 수행하고 결과를 /root/offline/verify.txt 로 저장하세요. 모든 줄이 정상(OK)이어야 합니다.
sha256sum 에는 파일 대신 매니페스트를 읽어 검사하는 옵션이 있습니다. 검증은 매니페스트가 있는 디렉터리에서 실행해야 경로가 맞습니다.
반입분으로 저장소 색인 만들기
/root/offline/pool 을 저장소로 만들기 위해 Packages 와 Packages.gz 를 생성하세요.
앞 실습과 같은 방법입니다. 다만 이번에는 파일이 여러 개이므로 색인의 Package 항목 수를 확인해 보세요.
반입 저장소 등록
/etc/apt/sources.list.d/labhub-airgap.list 로 이 저장소를 등록하고 색인을 갱신하세요.
저장소 이름을 앞 실습과 다르게 하세요. 두 저장소가 동시에 유효해도 괜찮습니다.
반입 저장소에서 재설치
cowsay 를 재설치해서 반입분으로도 설치가 되는지 확인하고, 설치 후 cowsay labhub 실행 결과를 /root/offline/run.txt 로 저장하세요.
이미 설치된 패키지를 같은 버전으로 다시 설치하려면 재설치 옵션이 필요합니다.
반입 보고서
/root/offline/report.txt 를 다음 4줄로 만드세요.
PACKAGES=<pool 안 .deb 개수> / BYTES=<pool 안 .deb 파일 크기 합계(바이트)> / VERIFY=OK / SNAPSHOT=<오늘 날짜 YYYY-MM-DD>
매니페스트 줄 수, 총 바이트, 검증 결과를 모으면 됩니다. 총 바이트는 du 나 stat 로 구할 수 있습니다.