LabHub
배우기 러닝패스 코스

Package Management

Handling Packages With apt

LabHub 에서 이어서 보기

한국어 원문으로 표시합니다.

목표

apt 로 검색·설치·제거를 하고, hold 와 pin 으로 버전을 붙잡는 것까지 손에 익힙니다. 이 실습이 끝나면 apt-cache policy 출력만 보고 "왜 이 버전이 뽑혔는지" 설명할 수 있습니다.

왜 중요한가

apt 는 저장소에 실시간으로 물어보지 않습니다. /var/lib/apt/lists/ 에 캐시된 색인만 보고 판단하고, 같은 패키지가 여러 저장소에 있으면 우선순위로 고릅니다. 이 구조를 알면 "저장소에는 있는데 안 보인다"(색인이 낡음)와 "사내 미러를 넣었는데 공식에서 받아온다"(우선순위가 같음)가 한 번에 설명됩니다. 이 실습 환경에는 인터넷이 없고 /opt/localrepo 오프라인 저장소만 있으므로, 모든 설치가 그 저장소에서 일어납니다.

단계

  1. /root/pkg 디렉터리를 만들고, apt-cache policy 의 전체 출력을 /root/pkg/policy.txt 로 저장하세요.
  2. tree 라는 패키지를 검색해 결과를 /root/pkg/search-tree.txt 로 저장하세요. 결과 안에 이름이 정확히 tree 인 줄이 있어야 합니다.
  3. tree설치 후보 버전만 한 줄로 /root/pkg/tree-version.txt 에 적으세요. (예: 2.1.1-2ubuntu3)
  4. treencdu 두 패키지를 설치하세요.
  5. cowsay 를 설치하고, 그 의존성 중 Depends 줄만 골라 /root/pkg/cowsay-depends.txt 로 저장하세요.
  6. htop 을 설치한 뒤 업그레이드 대상에서 제외(hold)하고, 그 사실을 /root/pkg/hold.txt 로 저장하세요.
  7. /etc/apt/preferences.d/labhub.pref 를 만들어 htop 패키지를 우선순위 1001 로 고정하세요. Package, Pin, Pin-Priority 세 줄이 모두 있어야 합니다.
  8. /root/pkg/report.txt 를 만드세요. 앞에서 설치한 tree, ncdu, htop, cowsay 네 패키지에 대해 이름 버전 형식으로 한 줄씩 쓰고, 마지막 줄HOLD=<hold 걸린 패키지 이름> 을 적으세요.

참고

작업 디렉터리와 저장소 확인

/root/pkg 디렉터리를 만들고, apt-cache policy 의 전체 출력을 /root/pkg/policy.txt 로 저장하세요.

apt-cache policy 를 인자 없이 실행하면 지금 설정된 저장소와 우선순위가 전부 나옵니다. 그 출력을 파일로 저장하세요.

패키지 검색하기

tree 라는 패키지를 검색해 결과를 /root/pkg/search-tree.txt 로 저장하세요. 결과 안에 이름이 정확히 tree 인 줄이 있어야 합니다.

apt-cache search 는 이름과 설명에서 검색합니다. 결과 중 이름이 정확히 tree 인 줄이 있어야 합니다.

설치 후보 버전 확인

tree설치 후보 버전만 한 줄로 /root/pkg/tree-version.txt 에 적으세요. (예: 2.1.1-2ubuntu3)

apt-cache policy <패키지> 의 Candidate 줄에 있는 값입니다. 버전 문자열만 한 줄로 적으세요.

패키지 설치하기

treencdu 두 패키지를 설치하세요.

설치 후 dpkg -s 로 상태를 확인해 보세요. Status 줄이 'install ok installed' 여야 진짜 설치된 것입니다.

의존성 목록 뽑기

cowsay 를 설치하고, 그 의존성 중 Depends 줄만 골라 /root/pkg/cowsay-depends.txt 로 저장하세요.

먼저 설치해야 뒤 단계의 보고서가 채워집니다. apt-cache depends 는 Depends 외에 Recommends, Suggests 도 함께 보여 주니 Depends 줄만 남기세요.

업그레이드에서 제외하기

htop 을 설치한 뒤 업그레이드 대상에서 제외(hold)하고, 그 사실을 /root/pkg/hold.txt 로 저장하세요.

apt-mark 에는 hold / unhold / showhold 서브커맨드가 있습니다. 표시가 걸렸는지 확인까지 하세요.

핀 파일로 우선순위 지정

/etc/apt/preferences.d/labhub.pref 를 만들어 htop 패키지를 우선순위 1001 로 고정하세요. Package, Pin, Pin-Priority 세 줄이 모두 있어야 합니다.

핀 파일은 Package / Pin / Pin-Priority 세 줄이 한 묶음입니다. Pin 은 version, release, origin 중 하나로 시작합니다.

설치 상태 보고서

/root/pkg/report.txt 를 만드세요. 앞에서 설치한 tree, ncdu, htop, cowsay 네 패키지에 대해 이름 버전 형식으로 한 줄씩 쓰고, 마지막 줄HOLD=<hold 걸린 패키지 이름> 을 적으세요.

dpkg-query 의 -W -f 옵션을 쓰면 원하는 필드만 원하는 형식으로 뽑을 수 있습니다. hold 목록은 apt-mark 쪽에 있습니다.