리눅스 패키지 오프라인 환경에 설치하는법

작성자 박형춘 수정일 2022-09-20 12:16

들어가며

  • 운영 중인 서버에 신규 패키지를 설치해야 하는 경우가 있습니다. 이때 대다수는 외부 망과 차단된 환경이기에 패키지를 따로 받아서 설치해야 합니다.

  • 이 과정은 온라인 환경의 서버에서 패키지를 다운 받아 오프라인 서버로 옮긴 후 설치합니다. 

    따라서 온라인 환경의 서버가 있어야 하고 해당 서버는 minimal 버전으로 설치되지 않은 경우 의존성 패키지가 일부 누락될 수 있습니다. 


리눅스 배포 이미지 종류는 크게 4가지로 구분됩니다.
1. Minimal : 리눅스 시스템에 필요한 최소한의 패키지만 포함되어 있는 이미지 입니다.
2. DVD : Minimal + 일반 패키지, 설치 중 패키지 선택이 가능합니다.
3. Netinstall : 네트워크 설치를 위한 최소의 이미지 입니다.
4. Everything : 모든 기능의 패키지를 포함한 이미지 입니다.



내용


스파클링소다가 사용하는 리눅스 배포 버전(ubuntu16.04/centos7) 기준으로 설명합니다.


Devian 계열 (ubuntu)

  • 온라인 환경에서 패키지 설치를 위한 준비합니다.
    $ apt-get update 


  • 설치하려는 패키지 파일 및 의존성 파일을 다운 받습니다.

    $ apt-get install --download-only <패키지명> 
    ex) apt-get install -download-only nfs-common 

    apt—get install Reading package lists... Done Bui Iding dependency tree Reading state information... Done ——downtoad—onty nfs—common The following additional packages will be installed: dmsetup file keyutils krb5—10ca1es Iibcap2 Iibdevmapper1.02.1 libexpatl til Iibheimnttmo—heimdal Iibk5crypt03 tibkeyutitsl Iibkrb5—3 tibkrb5supportO Iibnfsidmap2 Iibpython3—std1ib Iibpython3.6—minima1 Iibpython3.6—std1ib libreadtine7 libroken18—heimdat Iibsas12—2 Iibsas12—1 Iibti rpc1 Iibwindo—heimdat IibwrapO mime—support python3 python3—minima1 python3.6 python3.6—minima1 readiine—common rpcbind Suggested packages : krb5—doc krb5—user I python3—tk python3—venv python3.6—venv python3.6—doc binutits binfmt—support readiine—doc The following NEW packages wilt be installed: dmsetup file keyutils krb5—10ca1es Iibcap2 Iibdevmapper1.02.1 libexpatl til Iibheimnttmo—heimdal Iibk5crypt03 tibkeyutitsl Iibkrb5—3 tibkrb5supportO Iibnfsidmap2 Iibpython3—std1ib Iibpython3.6—minima1 Iibpython3.6—std1ib libreadtine7 libroken18—heimdat Iibsas12—2 Iibsas12—1 Iibti rpc1 tibwindo—heimdat tibwrapO mime—support nfs—common python3 python3—minima1 python3.6 python3.6—minima1 readiine—coml O upgraded, 49 newly installed, O to remove and 2 not upgraded. Need to get 9137 kB of archives. After this operation, 43.0 MB of additional disk space wilt be used. Do you want to continue? [Y/n] y Get: 1 Get: 2 Get: 3 Get: 4 Get: 5 Get: 6 Get •.7 http. • / / archi ve.ubuntu.com/ubuntu http. •//archive.ubuntu.com/ubuntu http. •//archive.ubuntu.com/ubuntu http. •//archive.ubuntu.com/ubuntu http. • / / archi ve.ubuntu.com/ubuntu http. •//archive.ubuntu.com/ubuntu http. • / / archi ve.ubuntu.com/ubuntu bionic—updates/main amd64 tibsstl.l amd64 1.1. [1302 kB] bionic—updates/main amd64 Iibpython3.6—minima1 amd64 [533 kB] bionic—updates/main amd64 libexpatl amd64 2.2.5—3ubuntuO.7 [82.6 kB] bionic—updates/main amd64 python3.6—minima1 amd64 [1611 kB] bionic—updates/main amd64 python3—minima1 amd64 3.6.7—1—18.04 [23.7 kB] bionic/main amd64 mime—support alt 3.60ubuntu1 [30.1 kB] bionic/main amd64 Iibmpdec2 amd64 2.4.2—1ubuntu1 [84.1 kB]  


  • 다운 받은 파일들은 /var/cache/apt/archives 디렉토리 하위에 위치하게 됩니다.

    $ ll /var/cache/apt/archives

    root@2fddd2f54050 : / test# drwxr—xr—x 1 drwxr—xr—x 1 —rw—r— r —rw—r——r —rw—r— r total —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r 9040 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root 74416 22072 48064 13440 174512 13040 126828 133328 82644 122004 96492 858% 29276 14756 107228 85472 8764 206212 278652 30824 153588 Sep Aug Jan May Mar Nov Dec Nov Jan Feb Mar Nov Dec Dec Dec Dec Dec Nov Mar Dec Nov Nov May 1 1 23 13 10 17 15 27 23 5 10 17 15 15 15 15 15 17 10 15 17 17 17 05:01 ./ 13:21 deb 2020 file amd64. deb 2020 keyuti Is _ deb 14•.59 krb5—tocates 1.16—2ubuntuO.2 .deb 2020 deb 2017 deb 2017 tibdevnapperl lubuntu3.18.04.3_and64. deb 2020 and64 .deb 2018 tibexpat1_2.2.5—3ubuntuO.7 _ and64. deb 13:43 deb 2020 deb 2017 deb 2017 deb 2017 deb 2017 deb 2017 .2_and64. deb 2020 tibkeyuti ts1_1.5.9—9.2ubuntu2.1_amd64. deb 14•.59 deb 2017 tibkrb5—3 1.16—2ubuntuO.2 and64 .deb 2020 deb 2020 tibidap—2.4—2_2.4.45+dfsg—1ubuntu1.11 and64. deb 11•.49  


  • 다운 받은 패키지를 오프라인 환경의 서버로 옮깁니다.



  • 옮긴 서버의 .deb 파일들이 위치한 경로에서 패키지 설치를 진행합니다.

    $ dpkg --force-all -i <.deb 파일들이 위치한 경로>/*.deb



Rhel 계열 (centos)

  • 온라인 환경에서 패키지 설치를 위한 준비합니다.
    $ yum update && yum -y install yum-utils

  • 설치하려는 패키지의 의존성 정보를 확인합니다.

    $ yum deplist <패키지명> 
    ex) yum deplist nfs-utils



  • 설치할 패키지와 의존성 패키지를 다운 받습니다. (실제 설치는 되지 않습니다.) 

    $ yumdownloader --downloadonly --resolve --downloaddir=/test/nfs-package <패키지명> 
       - downloadonly : 설치 없이 파일 다운만 받는 옵션입니다. 
       - resolve : 의존성 있는 패키지도 같이 다운합니다. 
       - downloaddir : 다운받는 파일의 저장되는 위치를 지정합니다.  
    ex) yumdownloader --downloadonly --resolve --downloaddir=/test/mypackage nfs-utils 

    drwxr drwxr —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r —rw—r [root@hdcd—master—133 nfs—uti 1416 —rw—r——r —rw—r——r —xr—x. 2 —xr—x. 3 root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root 233 113364 54856 26268 42604 219068 65172 51000 28960 27700 9108 423356 182932 92628 80380 1 1 12 4 12 12 4 12 25 12 12 4 15 23 23 4 13:08 . 13:06 gssproxy-e .7.0-30. et7_9. x86_64. rpm 2021 keyutits-l .5.8-3.et7.x86_64. rpm 2014 tibbasicobjects—e .1.1—32. et7. x86 _64. rpm 2018 tibconection—e. 7.0—32. et7. x86 _64. rpm 2018 libevent-2. e .21-4.et7.x86_64. rpm 2014 tibini _ config—I .3.1—32. et7. x86 _64. rpm 2018 tibnfsidnap—e. 25—19. et7. x86 _64. rpm 2018 .2.1—32. et7. x86 _64. rpm 2018 2018 rpm .2.5—4. et7. x86 _64. rpm 2014 nfs-utits-l .e-e .68.et7.2.x86_64.rpn 2021 quota-4.01-19.et7.x86_64. rpm 2019 et7 .noarch. rpm 2019 2014 x86_64. rpm  

  • 다운 받은 .rpm 파일들을 오프라인 서버로 옮깁니다. 


  • 패키지를 설치합니다. 

    $ rpm -ivh <rpm 파일들이 위치한 디렉토리 경로>/* 
    ex) rpm -ivh /test/nfs-utils/* 

    [root@hdcd—master—133 nfs—uti Is] # Updating / installing... .5-32. e17 2: libevent—2. O. 21—4. et7 3: Iibcollection—0 7 0 . . -32.e17 4 : I-i bbasi cobj ects—O. 1. 1-32. et7 5: bverto—t-i bevent—O. 2.5-4. eu 6: tcp_wrappers—7.6—77. et7 7 et7 8 •.quota-1•.4.01-1g.et7 Is—0 2 1 . . -32.e17 . . -32.e17 10: 3 1 11 : gssproxy—O. 7.0—30. et7_g 12: I-i bnfsidmap—O. 25—19. et7 13: keyuti Is—I. 5.8—3. et7 14 :nfs-uti Is-I : 1.3.0-0.68. e17.2 rpm —ivh /home/chun/test/nfs—uti is/* [100%] [ 14%] [ 21%] [ 29%] [ 36%] [ 43%] [ 50%] [ 57%] 64%] [ 71%] [ 79%] [ 86%] [100%]  



마무리

  • 설치하려는 패키지를 온라인 환경에서 받을 때 minimal 버전을 권장합니다.
  • 온라인 환경 서버에 패키지가 설치 되어 있다면 삭제 후 위 과정을 다시 진행합니다.


이미 설치된 패키지 삭제하는 방법
- devian 계열
    $ dpkg --list | grep <패키지명>
    $ dpkg --purge <패키지명>
- rhel 계열
    $ rpm -qa |grep <패키지명>
    $ rpm -e <rpm -qa 로 출력된 리스트에 해당하는 모든 패키지>
    
ex) vim 패키지 삭제
$ rpm -qa |grep vim
$ rpm -e vim-filesystem-7.4.629-8.el7_9.x86_64
$ rpm -e vim-common-7.4.629-8.el7_9.x86_64
$ rpm -e vim-minimal-7.4.160-5.el7.x86_64
$ rpm -e vim-enhanced-7.4.629-8.el7_9.x86_64







아티클이 유용했나요?

훌륭합니다!

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

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

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

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

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

피드백 전송

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

02-558-8300