CentOS8에서 종속성 패키지 모두 다운로드 방법

작성자 김민태 수정일 2023-12-21 10:38

#depen, #dependency, #디펜, #디펜던시, #종속성

들어가며

  • 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 에러 없이 반입할 수 있습니다.

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300