LabHub

RHEL 계열 관리 · dnf/yum 기초 · 실습

dnf 실전

LabHub 에서 이어서 보기

목표

dnf 로 저장소를 확인하고, 설치하고, 파일에서 패키지를 역추적하고, 트랜잭션을 롤백하고, 버전을 고정합니다.

왜 중요한가

dnf 의 결정적 차이는 모든 설치가 트랜잭션으로 기록되고 되돌릴 수 있다는 점입니다. apt 에는 대응하는 기능이 없습니다. 이 차이가 운영 방식을 바꿉니다 — "일단 설치해 보고 아니면 되돌린다" 가 가능해집니다. 다만 이전 버전이 저장소에 없으면 실패하고, 커널이나 glibc 같은 시스템 패키지의 다운그레이드는 지원되지 않습니다.

그리고 dnf providesdpkg -S 보다 강력합니다. 저장소 메타데이터를 뒤지므로 아직 설치되지 않은 패키지까지 찾아 줍니다. RPM 에서 의존성의 단위가 패키지 이름이 아니라 능력(파일 경로, 라이브러리 소네임)이기 때문에 이 도구가 필수입니다.

단계

1. /root/rh 디렉터리를 만들고, 상세 저장소 목록을 /root/rh/repolist.txt 로 저장하세요. /opt/localrepo 를 가리키는 baseurl 이 보여야 합니다.
2. tree 패키지의 정보를 조회해 버전 문자열만 한 줄로 /root/rh/tree-version.txt 에 적으세요.
3. treenano 를 설치하고, 두 패키지의 NEVRA(rpm -q 출력)를 각각 한 줄씩 /root/rh/installed.txt 에 적으세요.
4. /usr/bin/tree 를 제공하는 패키지를 찾아 패키지 이름만 한 줄로 /root/rh/provides.txt 에 적으세요.
5. dnf 트랜잭션 목록을 /root/rh/history.txt 로 저장하세요. 최소 한 건의 트랜잭션이 있어야 합니다.
6. nano 를 설치한 트랜잭션을 되돌리세요(undo). 되돌린 뒤 nano 가 설치돼 있지 않아야 하고, 그 상태를 /root/rh/after-undo.txt 로 저장하세요.
7. tree 를 버전 고정하세요. dnf versionlock 플러그인이 있으면 그 명령으로, 없으면 /etc/dnf/plugins/versionlock.list 에 직접 적으세요. 고정 상태를 /root/rh/lock.txt 로 저장하세요.
8. /root/rh/report.txt 를 다음 4줄로 만드세요.
TREE=<tree 의 설치 버전> / NANO=<removed 또는 installed> / PROVIDER=<4번에서 찾은 패키지 이름> / LOCKED=tree

참고

단계 8개

  1. 저장소 확인
  2. 패키지 정보 조회
  3. 패키지 설치
  4. 파일에서 패키지 역추적
  5. 트랜잭션 확인
  6. 트랜잭션 되돌리기
  7. 버전 고정
  8. 종합 보고서