Skip to content

Dnf

  • Published on
    반입한 rpm 묶음을 폐쇄망 안에서 정상적인 dnf 저장소로 만드는 전 과정을 다룹니다. createrepo_c가 만들어 내는 repodata 디렉터리의 구조와 repomd.xml의 역할, 패키지를 추가했을 때 --update로 증분 갱신하는 법, 그리고 체크섬 타입과 메타데이터 압축 옵션을 공식 man 페이지 기준으로 정리합니다. 이어서 baseurl에 file 스킴을 쓰는 단일 서버 구성과 사내 HTTP로 여러 서버에 배포하는 구성을 각각 .repo 파일로 작성하고, gpgcheck와 repo_gpgcheck의 차이, GPG 공개키를 폐쇄망에 반입해 등록하는 절차를 rpm과 rpmkeys 양쪽 표기로 설명합니다. 마지막으로 폐쇄망에서 가장 자주 사람을 잡는 dnf 메타데이터 캐시 문제를 dnf clean의 하위 명령별 동작과 metadata_expire 설정으로 풀어냅니다.
  • Published on
    인터넷이 연결된 장비에서 RHEL 패키지를 의존성까지 통째로 받아 폐쇄망에 반입하는 실제 절차를 명령 단위로 정리합니다. dnf download의 --resolve와 --alldeps가 정확히 무엇을 다르게 하는지, 왜 이미 설치된 패키지 때문에 의존성이 조용히 빠지는지, 그리고 --installroot로 빈 루트를 만들어 그 함정을 없애는 방법을 공식 문서 문장과 함께 다룹니다. 빈 installroot에서는 releasever가 rpmdb에서 유도되지 않아 트랜잭션이 실패하므로 --releasever를 반드시 넘겨야 한다는 점, 모듈러 시스템에서는 module_platform_id까지 지정해야 한다는 점도 함께 짚습니다. 이어서 저장소 전체를 복제하는 dnf reposync의 옵션을 --download-metadata, --newest-only, --gpgcheck, --delete 중심으로 정리하고, yumdownloader를 언제 쓰는지, 받은 결과가 의존성 측면에서 완전한지 dnf repoclosure로 어떻게 검증하는지까지 이어갑니다. RHEL 10의 dnf5에서 옵션 이름이 달라지는 부분도 표로 비교합니다.
  • Published on
    RHEL 8의 모듈러리티가 폐쇄망에서 정확히 어디서 꼬이는지, 그리고 RHEL 9와 RHEL 10에서 그 이야기가 어떻게 달라지는지를 공식 문서 기준으로 갈라 정리합니다. 핵심은 모듈러 RPM을 그냥 복사해서 만든 로컬 저장소에서는 그 패키지들이 조용히 보이지 않게 된다는 점입니다. dnf가 모듈 메타데이터로 RPM을 필터링하기 때문인데, 해법은 reposync에 --download-metadata를 붙여 모듈 메타데이터를 함께 가져오거나, dnf modulesync로 모듈 데이터를 포함한 저장소를 통째로 생성하거나, 마지막 수단으로 module_hotfixes를 켜 필터링 자체를 끄는 세 갈래입니다. 빈 installroot에서 module_platform_id를 지정하지 않으면 모듈 콘텐츠가 제외된다는 dnf 문서의 경고도 함께 다룹니다. 후반부는 재현의 문제로 넘어가 releasever로 마이너 버전을 고정하는 세 가지 방법과 versionlock, 그리고 설치된 상태를 기록해 다른 서버에 그대로 재현하는 절차를 정리합니다.
  • Published on
    반입 절차가 완성된 다음의 이야기, 즉 폐쇄망을 몇 년간 굴리는 운영 편입니다. 먼저 폐쇄망에서 CVE 대응이 늦어지는 것이 팀의 게으름이 아니라 반입 주기라는 구조 때문임을 분명히 하고, 그 지연을 없앨 수 없다면 어떻게 측정하고 관리할지를 다룹니다. dnf updateinfo와 --security 계열 옵션으로 무엇이 밀려 있는지 세는 방법을 공식 문서 기준으로 정리하되, 반입 저장소에서 이 명령들이 아무것도 출력하지 않는 흔한 함정 — updateinfo 메타데이터가 반입 과정에서 사라지는 문제 — 을 먼저 짚습니다. 이어서 dnf repodiff로 두 반입 스냅샷의 차이를 심의 자료로 뽑아내는 법, repomanage로 미러 용량을 관리하는 법, dnf history로 롤백하되 커널과 glibc처럼 롤백하면 안 되는 것을 구분하는 법을 설명합니다. 마지막은 정기 반입과 긴급 반입 두 경로를 갖춘 주기 설계와 운영 체크리스트입니다.
  • Published on
    금융·공공·국방 폐쇄망에 RHEL 패키지를 반입해 설치할 때 왜 "rpm 파일 하나 복사"로 끝나지 않는지를 구조부터 정리합니다. RPM 의존성이 목록이 아니라 심볼 단위 그래프라는 점, 그 그래프를 푸는 depsolver가 저장소 메타데이터를 필요로 하는데 폐쇄망 안에는 그 메타데이터가 없다는 점, 그래서 문제가 "파일 옮기기"가 아니라 "해결된 트랜잭션을 통째로 옮기기"가 된다는 점을 짚습니다. 이어서 BaseOS와 AppStream으로 나뉜 Red Hat 콘텐츠 배포 구조와 서브스크립션·엔타이틀먼트의 역할, 저장소가 계속 움직이기 때문에 발생하는 버전 드리프트, 그리고 RHEL 8의 모듈러리티가 RHEL 9와 RHEL 10에서 어떻게 달라졌는지를 공식 문서 기준으로 비교합니다. 서브스크립션이 없는 독자를 위해 CentOS Stream·Rocky·Alma로 무엇까지 재현할 수 있는지도 함께 적었습니다.