dnfの実戦
한국어 원문으로 표시합니다.
목표
dnf 로 저장소를 확인하고, 설치하고, 파일에서 패키지를 역추적하고, 트랜잭션을 롤백하고, 버전을 고정합니다.
왜 중요한가
dnf 의 결정적 차이는 모든 설치가 트랜잭션으로 기록되고 되돌릴 수 있다는 점입니다. apt 에는 대응하는 기능이 없습니다. 이 차이가 운영 방식을 바꿉니다 — "일단 설치해 보고 아니면 되돌린다" 가 가능해집니다. 다만 이전 버전이 저장소에 없으면 실패하고, 커널이나 glibc 같은 시스템 패키지의 다운그레이드는 지원되지 않습니다.
그리고 dnf provides 는 dpkg -S 보다 강력합니다. 저장소 메타데이터를 뒤지므로 아직 설치되지 않은 패키지까지 찾아 줍니다. RPM 에서 의존성의 단위가 패키지 이름이 아니라 능력(파일 경로, 라이브러리 소네임)이기 때문에 이 도구가 필수입니다.
단계
/root/rh디렉터리를 만들고, 상세 저장소 목록을/root/rh/repolist.txt로 저장하세요./opt/localrepo를 가리키는 baseurl 이 보여야 합니다.tree패키지의 정보를 조회해 버전 문자열만 한 줄로/root/rh/tree-version.txt에 적으세요.tree와nano를 설치하고, 두 패키지의 NEVRA(rpm -q출력)를 각각 한 줄씩/root/rh/installed.txt에 적으세요./usr/bin/tree를 제공하는 패키지를 찾아 패키지 이름만 한 줄로/root/rh/provides.txt에 적으세요.- dnf 트랜잭션 목록을
/root/rh/history.txt로 저장하세요. 최소 한 건의 트랜잭션이 있어야 합니다. nano를 설치한 트랜잭션을 되돌리세요(undo). 되돌린 뒤nano가 설치돼 있지 않아야 하고, 그 상태를/root/rh/after-undo.txt로 저장하세요.tree를 버전 고정하세요.dnf versionlock플러그인이 있으면 그 명령으로, 없으면/etc/dnf/plugins/versionlock.list에 직접 적으세요. 고정 상태를/root/rh/lock.txt로 저장하세요./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출력 전체를 저장하는 경우. 패키지 이름만 필요합니다.
저장소 확인
/root/rh 디렉터리를 만들고, 상세 저장소 목록을 /root/rh/repolist.txt 로 저장하세요. /opt/localrepo 를 가리키는 baseurl 이 보여야 합니다.
dnf repolist 에는 상세 출력 옵션이 있습니다. 로컬 저장소의 baseurl 이 보여야 합니다.
패키지 정보 조회
tree 패키지의 정보를 조회해 버전 문자열만 한 줄로 /root/rh/tree-version.txt 에 적으세요.
dnf info 는 버전, 저장소, 크기, 요약을 보여 줍니다. 버전 값만 뽑아 보세요.
패키지 설치
tree 와 nano 를 설치하고, 두 패키지의 NEVRA(rpm -q 출력)를 각각 한 줄씩 /root/rh/installed.txt 에 적으세요.
설치 후 rpm -q 로 확인하는 습관을 들이세요. 이름-버전-릴리스.아키텍처 형식으로 나옵니다.
파일에서 패키지 역추적
/usr/bin/tree 를 제공하는 패키지를 찾아 패키지 이름만 한 줄로 /root/rh/provides.txt 에 적으세요.
dnf provides 는 저장소 메타데이터까지 뒤지므로 설치되지 않은 패키지도 찾습니다.
트랜잭션 확인
dnf 트랜잭션 목록을 /root/rh/history.txt 로 저장하세요. 최소 한 건의 트랜잭션이 있어야 합니다.
dnf history 로 목록을, history info 로 상세를 봅니다. ID 는 숫자입니다.
트랜잭션 되돌리기
nano 를 설치한 트랜잭션을 되돌리세요(undo). 되돌린 뒤 nano 가 설치돼 있지 않아야 하고, 그 상태를 /root/rh/after-undo.txt 로 저장하세요.
undo 는 지정한 트랜잭션의 반대를 수행합니다. 확인 없이 진행하려면 -y 가 필요합니다.
버전 고정
tree 를 버전 고정하세요. dnf versionlock 플러그인이 있으면 그 명령으로, 없으면 /etc/dnf/plugins/versionlock.list 에 직접 적으세요. 고정 상태를 /root/rh/lock.txt 로 저장하세요.
플러그인이 있으면 명령으로, 없으면 설정 파일에 직접 적을 수 있습니다.
종합 보고서
/root/rh/report.txt 를 다음 4줄로 만드세요.
TREE=<tree 의 설치 버전> / NANO=<removed 또는 installed> / PROVIDER=<4번에서 찾은 패키지 이름> / LOCKED=tree
값은 실제 조회 결과여야 합니다. 상태는 설치 여부로 판단하세요.