RHEL 계열 관리 · dnf/yum 기초 · 실습
dnf 실전
목표
dnf 로 저장소를 확인하고, 설치하고, 파일에서 패키지를 역추적하고, 트랜잭션을 롤백하고, 버전을 고정합니다.
왜 중요한가
dnf 의 결정적 차이는 모든 설치가 트랜잭션으로 기록되고 되돌릴 수 있다는 점입니다. apt 에는 대응하는 기능이 없습니다. 이 차이가 운영 방식을 바꿉니다 — "일단 설치해 보고 아니면 되돌린다" 가 가능해집니다. 다만 이전 버전이 저장소에 없으면 실패하고, 커널이나 glibc 같은 시스템 패키지의 다운그레이드는 지원되지 않습니다.
그리고 dnf provides 는 dpkg -S 보다 강력합니다. 저장소 메타데이터를 뒤지므로 아직 설치되지 않은 패키지까지 찾아 줍니다. RPM 에서 의존성의 단위가 패키지 이름이 아니라 능력(파일 경로, 라이브러리 소네임)이기 때문에 이 도구가 필수입니다.
단계
1. /root/rh 디렉터리를 만들고, 상세 저장소 목록을 /root/rh/repolist.txt 로 저장하세요. /opt/localrepo 를 가리키는 baseurl 이 보여야 합니다.
2. tree 패키지의 정보를 조회해 버전 문자열만 한 줄로 /root/rh/tree-version.txt 에 적으세요.
3. tree 와 nano 를 설치하고, 두 패키지의 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
참고
dnf repolist -v,dnf info tree,dnf provides '*/bin/tree',dnf history,dnf history undo <ID> -y순서입니다.- 설치 여부 확인은
rpm -q <패키지>입니다. 없으면 "is not installed" 가 나옵니다. - 버전만 뽑으려면
rpm -q --qf '%{VERSION}-%{RELEASE}\n' <패키지>가 편합니다. - 흔한 실수 1: 6번에서 트랜잭션 ID 를 잘못 골라 엉뚱한 것을 되돌리는 경우.
dnf history info <ID>로 먼저 확인하세요. - 흔한 실수 2: 4번에서
dnf provides출력 전체를 저장하는 경우. 패키지 이름만 필요합니다.
단계 8개
- 저장소 확인
- 패키지 정보 조회
- 패키지 설치
- 파일에서 패키지 역추적
- 트랜잭션 확인
- 트랜잭션 되돌리기
- 버전 고정
- 종합 보고서