들어가며
- RHEL7 환경이나 CentOS7 환경에서는 yum install --downloadonly 기능을 사용하면 쉽게 종속성 패키지까지 모두 다운로드 할 수 있었습니다.
- 하지만 RHEL8 및 CentOS8 환경에서는 아래와 같은 방법으로 시도하는 것이 편합니다.
내용
이미 사용 중인 운영체제를 사용할 경우 "설치 된" 패키지는 제외하고 다운로드 하기 때문에 가장 확실하고 간단한 방법은 새 운영체제를 설치한 직후에 패키지를 다운로드 하는 것 입니다.
새로운 VM에 RHEL8 및 CentOS8 버전의 OS를 설치합니다.
- Warning - * fedora8 환경의 운영체제를 설치할 때 반드시 Minimal 환경으로 설치합니다.
※ Minimal 버전으로 설치하지 않을시 이미 많은 패키지가 설치 된 배포판의 경우 download 된 패키지가 존재하여 실제 현장에선 Dependency가 누락 될 확률이 있으니, 가장 적은 수의 필수 패키지만 설치하는 Minimal 버전으로 설치 후 아래 가이드를 진행합니다.
OS가 설치 완료 되면 일단 스냅샷 부터 저장합니다. (테스트 서버이기 때문에 롤백을 자주 하게 됩니다.)
CentOS8 Stream 버전 이외의 운영체제의 미러 사이트 저장소는 EOS가 끝났습니다. 따라서 CentOS8이 사용하는 미러 사이트가 vault로 전환되었기 때문에 설치 직후의 CentOS8 미러사이트는 사용할 수 없습니다. 아래의 명령어를 입력하여 기존 CentOS8 미러 저장소를 vault 저장소로 수정하여 사용합니다.
# sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Linux-* # sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-*
* 위 sed 문 입력 후 dnf repolist로 조회시 정상적으로 인식하는 모습을 볼 수 있습니다.
dnf로 패키지를 다운로드하기 전에 혹시 모를 cache 데이터를 모두 제거합니다.
# dnf clean all
종속성 패키지까지 모두 다운로드 받고자하는 패키지를 아래의 명령어에 대입하여 다운로드 합니다.
# dnf download <패키지이름> --resolve
예시) docker # dnf download docker --resolve
# dnf download docker --resolve Last metadata expiration check: 0:01:31 ago on Fri 28 Jul 2023 03:12:17 AM EDT. (1/24): tar-1.30-5.el8.x86_64.rpm 11 MB/s | 838 kB 00:00 (2/24): conmon-2.0.29-1.module_el8.5.0+890+6b136101.x86_64.rpm 122 kB/s | 52 kB 00:00 (3/24): container-selinux-2.167.0-1.module_el8.5.0+911+f19012f9.noarch.rpm 84 kB/s | 54 kB 00:00 (4/24): libslirp-4.4.0-1.module_el8.5.0+890+6b136101.x86_64.rpm 109 kB/s | 70 kB 00:00 (5/24): fuse-common-3.2.1-12.el8.x86_64.rpm 156 kB/s | 21 kB 00:00 (6/24): containers-common-1-2.module_el8.5.0+890+6b136101.noarch.rpm 530 kB/s | 79 kB 00:00 (7/24): containernetworking-plugins-1.0.0-1.module_el8.5.0+890+6b136101.x86_64.rpm 27 MB/s | 19 MB 00:00 (8/24): fuse-overlayfs-1.7.1-1.module_el8.5.0+890+6b136101.x86_64.rpm 143 kB/s | 73 kB 00:00 (9/24): python3-setools-4.3.0-2.el8.x86_64.rpm 3.9 MB/s | 626 kB 00:00 (10/24): fuse3-3.2.1-12.el8.x86_64.rpm 2.4 MB/s | 50 kB 00:00 (11/24): policycoreutils-python-utils-2.9-16.el8.noarch.rpm 4.6 MB/s | 252 kB 00:00 (12/24): python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm 5.6 MB/s | 86 kB 00:00 (13/24): fuse3-libs-3.2.1-12.el8.x86_64.rpm 679 kB/s | 94 kB 00:00 (14/24): libnet-1.1.6-15.el8.x86_64.rpm 233 kB/s | 67 kB 00:00 (15/24): criu-3.15-3.module_el8.5.0+890+6b136101.x86_64.rpm 1.3 MB/s | 518 kB 00:00 (16/24): podman-3.3.1-9.module_el8.5.0+988+b1f0b741.x86_64.rpm 29 MB/s | 12 MB 00:00 (17/24): protobuf-c-1.3.0-6.el8.x86_64.rpm 193 kB/s | 37 kB 00:00 (18/24): podman-catatonit-3.3.1-9.module_el8.5.0+988+b1f0b741.x86_64.rpm 2.1 MB/s | 340 kB 00:00 (19/24): podman-docker-3.3.1-9.module_el8.5.0+988+b1f0b741.noarch.rpm 377 kB/s | 56 kB 00:00 (20/24): slirp4netns-1.1.8-1.module_el8.5.0+890+6b136101.x86_64.rpm 3.9 MB/s | 51 kB 00:00 (21/24): runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64.rpm 16 MB/s | 3.1 MB 00:00 (22/24): python3-policycoreutils-2.9-16.el8.noarch.rpm 49 MB/s | 2.2 MB 00:00 (23/24): checkpolicy-2.9-1.el8.x86_64.rpm 584 kB/s | 348 kB 00:00 (24/24): python3-libsemanage-2.9-6.el8.x86_64.rpm
현재 명령어를 실행 한 경로에 모든 디펜던시를 다운로드 한 모습입니다.
# ls -al total 41308 drwxr-xr-x. 2 root root 4096 Jul 28 03:13 . dr-xr-x---. 4 root root 142 Jul 28 03:13 .. -rw-r--r--. 1 root root 356576 Jul 28 03:13 checkpolicy-2.9-1.el8.x86_64.rpm -rw-r--r--. 1 root root 53667 Jul 28 03:13 conmon-2.0.29-1.module_el8.5.0+890+6b136101.x86_64.rpm -rw-r--r--. 1 root root 20038039 Jul 28 03:13 containernetworking-plugins-1.0.0-1.module_el8.5.0+890+6b136101.x86_64.rpm -rw-r--r--. 1 root root 80919 Jul 28 03:13 containers-common-1-2.module_el8.5.0+890+6b136101.noarch.rpm -rw-r--r--. 1 root root 54991 Jul 28 03:13 container-selinux-2.167.0-1.module_el8.5.0+911+f19012f9.noarch.rpm -rw-r--r--. 1 root root 530199 Jul 28 03:13 criu-3.15-3.module_el8.5.0+890+6b136101.x86_64.rpm -rw-r--r--. 1 root root 51396 Jul 28 03:13 fuse3-3.2.1-12.el8.x86_64.rpm -rw-r--r--. 1 root root 96540 Jul 28 03:13 fuse3-libs-3.2.1-12.el8.x86_64.rpm -rw-r--r--. 1 root root 21636 Jul 28 03:13 fuse-common-3.2.1-12.el8.x86_64.rpm -rw-r--r--. 1 root root 74287 Jul 28 03:13 fuse-overlayfs-1.7.1-1.module_el8.5.0+890+6b136101.x86_64.rpm -rw-r--r--. 1 root root 68632 Jul 28 03:13 libnet-1.1.6-15.el8.x86_64.rpm -rw-r--r--. 1 root root 71995 Jul 28 03:13 libslirp-4.4.0-1.module_el8.5.0+890+6b136101.x86_64.rpm -rw-r--r--. 1 root root 12692155 Jul 28 03:13 podman-3.3.1-9.module_el8.5.0+988+b1f0b741.x86_64.rpm -rw-r--r--. 1 root root 348543 Jul 28 03:13 podman-catatonit-3.3.1-9.module_el8.5.0+988+b1f0b741.x86_64.rpm -rw-r--r--. 1 root root 56851 Jul 28 03:13 podman-docker-3.3.1-9.module_el8.5.0+988+b1f0b741.noarch.rpm -rw-r--r--. 1 root root 258456 Jul 28 03:13 policycoreutils-python-utils-2.9-16.el8.noarch.rpm -rw-r--r--. 1 root root 37852 Jul 28 03:13 protobuf-c-1.3.0-6.el8.x86_64.rpm -rw-r--r--. 1 root root 88144 Jul 28 03:13 python3-audit-3.0-0.17.20191104git1c2f876.el8.x86_64.rpm -rw-r--r--. 1 root root 130160 Jul 28 03:13 python3-libsemanage-2.9-6.el8.x86_64.rpm -rw-r--r--. 1 root root 2352604 Jul 28 03:13 python3-policycoreutils-2.9-16.el8.noarch.rpm -rw-r--r--. 1 root root 640744 Jul 28 03:13 python3-setools-4.3.0-2.el8.x86_64.rpm -rw-r--r--. 1 root root 3227247 Jul 28 03:13 runc-1.0.2-1.module_el8.5.0+911+f19012f9.x86_64.rpm -rw-r--r--. 1 root root 52427 Jul 28 03:13 slirp4netns-1.1.8-1.module_el8.5.0+890+6b136101.x86_64.rpm -rw-r--r--. 1 root root 857868 Jul 28 03:13 tar-1.30-5.el8.x86_64.rpm
위 패키지들이 정상적으로 설치가 되는지 확인하고 싶다면 rpm 명령어를 이용하여 설치를 test 해봅니다.
# rpm -Uvh ./*.rpm --test warning: ./checkpolicy-2.9-1.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY Verifying... ################################# [100%] Preparing... ################################# [100%]
--test 옵션을 지정시 실제 설치는 되지 않고 종속성 에러가 있는지 미리 체크 해볼 수 있습니다. 디펜던시 에러가 발생하지 않는다면 로컬 환경에서 다운로드 된 패키지 만으로 정상 설치가 가능하다는 뜻 입니다.
위 패키지들을 압축하여 오프라인 환경으로 반출합니다. * 오프라인 환경에서도 rpm -Uvh로 설치 가능.
마치며
- 위와 같은 방법으로 fedora 7 계열의 OS와는 다르게 종속성 시스템 패키지를 모두 다운받아 오프라인 환경으로 dependency 에러 없이 반입할 수 있습니다.
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.