LabHub

패키지 관리 · dpkg 저수준 · 실습

dpkg 로 한 층 아래 보기

LabHub 에서 이어서 보기

목표

dpkg 로 시스템을 조회하고, 직접 .deb 를 빌드해 설치까지 해 봅니다. apt 없이 패키지를 다뤄 보면 apt 가 무엇을 대신해 주고 있었는지가 분명해집니다.

왜 중요한가

dpkg 는 저장소를 모릅니다. 주어진 파일을 풀고(unpack), 의존이 만족되면 마무리(configure)할 뿐입니다. 그래서 dpkg -i 는 의존성을 자동으로 끌어오지 않고 iU 상태로 멈춥니다. 이 분업을 알면 폐쇄망에서 왜 "설치 순서"가 중요한지, apt-get -f install 이 무엇을 고치는지가 전부 설명됩니다. 그리고 dpkg -S 로 파일의 출신을 확인하는 습관은 낯선 서버에서 가장 먼저 쓰는 무기입니다.

단계

1. /root/dpkg 디렉터리를 만들고, 현재 설치 완료(ii) 상태인 패키지의 개수만 숫자 한 줄로 /root/dpkg/count.txt 에 적으세요.
2. coreutils 패키지가 설치한 파일 중 /usr/bin/ 아래에 있는 것만 골라 /root/dpkg/coreutils-bin.txt 로 저장하세요.
3. /usr/bin/ls 를 소유한 패키지 이름만 한 줄로 /root/dpkg/owner.txt 에 적으세요.
4. dpkg-querybash 패키지의 이름 버전 아키텍처 를 공백으로 구분한 한 줄로 만들어 /root/dpkg/bash-fields.txt 에 저장하세요.
5. /opt/fixtures/pkg/labhub-tool 디렉터리를 .deb 로 빌드해 /root/dpkg/labhub-tool_1.2.0-labhub1_all.deb 로 저장하세요.
6. 빌드한 패키지의 제어 정보/root/dpkg/deb-info.txt 로, 파일 목록/root/dpkg/deb-contents.txt 로 저장하세요.
7. 그 패키지를 설치하고, labhub-tool 명령을 실행한 결과를 /root/dpkg/run.txt 에 저장하세요.
8. /root/dpkg/report.txt 를 다음 4줄로 만드세요.
PACKAGE=labhub-tool / VERSION=<설치된 버전> / FILES=<이 패키지가 깐 실제 파일 개수(디렉터리 제외)> / OWNER_OF_LS=<3번에서 찾은 패키지 이름>

참고

단계 8개

  1. 작업 디렉터리와 설치 목록
  2. 패키지가 깐 파일 목록
  3. 이 파일은 누가 깔았나
  4. 원하는 필드만 뽑기
  5. 픽스처로 .deb 빌드하기
  6. 빌드한 패키지 뜯어보기
  7. 설치하고 상태 확인
  8. 패키지 종합 보고서