[우분투] apt-get 패키지를 offline으로 설치하는 방법 Develop Tip

우분투 서버를 설치하여 패키지를 추가하려면,

$ sudo apt-get install <pkg>

와 같은 방법으로 아주 쉽게 설치가 가능하지만,
인터넷이 되지 않는 경우 난감한 경우가 많습니다.

물론 CD-ROM을 소스로 인식하게 하여 사용할 수도 있지만,
그것 마저 여의치 않는 경우가 있습니다.

일단 가장 쉽게 설치할 수 있는 방법은,

인터넷에 연결되어 있고, 동일한 설치버전과 최신 패키지를 받아 잘
설치된 서버가 있으면 이를 기반으로 패키지를 바로 이용할 수 있습니다.

예를 들어 A 기계에 Ubuntu 10.04 서버 버전이 설치되어 있고,
인터넷에 연결되어 있지 않고, B 기계에는 동일한 버전에
인터넷이 연결되어 있다고 가정합니다.

필요에 따라 libssl-dev 패키지를 설치하려고 하면,

인터넷이 연결되어 있는 B 기계에서
 
$ sudo apt-get install libssl-dev

라고 합니다.
그러면 필요한 dependent 패키지도 모두 설치가 됩니다.

이 때, B 기계에서 설치를 위하여 다운로드 된 위치는

/var/cache/apt/archives
에 모든 다운로드 캐슁된 *.deb 데비안 패키지 들이 있습니다.

이제 다운로드된 deb 파일을 모두
A 시스템에 복사한 후,

$ sudo dpkg -i libssl-dev*.deb

라고 하면 됩니다.

만약,

dpkg: 의존성 문제로 libssl-dev을(를) 설정할 수 없습니다:
 libssl-dev 패키지는 다음 패키지에 의존: zlib1g-dev: 하지만:
  zlib1g-dev 패키지는 설치하지 않았습니다.

와 같은 의존성 오류가 발생한다면,

$ sudo dpkg -i zlib1g-dev*.deb

패키지를 먼저 설치하고나서 다시 설치하면 해결됩니다.


만약 우분투 ISO 설치 CD 이미지가 있고, 여기서 부터 설치를 하려면,

$ sudo mkdir /media/ubuntu
$ sudo mount ubuntu*.iso /media/ubuntu -oloop
$ sudo apt-cdrom -d=/media/ubuntu add


라고 하고 설치를 하시면 됩니다.

....

필요에 따라 우분투 서버 버전을 설치하고 난 디폴트 환경에 
LXDE 등의 환경을 포함한 370 여 개의 deb 패키지 파일을 설치하려 하는데,
위와 같이 수동으로 환경을 구축하는 것은 거의 불가능합니다...

LANG=C 인 환경에서 

$ sudo dpkg -i *.deb

와 같이 명령을 수행하면,
dependency 등을 알려줍니다.
그런데 이것이 여러 패키지에 다중으로 연관되어 있을 수도 있기 때문에
어떻게 할까 고민하다가 파이썬으로 구현을 해 보았습니다.


dep 를 한데 모은 디렉터리에 dpkg.py 파일을 복사하고,

$ sudo python dpkg.py 

라고 명령을 주면 자동으로 의존적인 패키지를 확인하여
그 패키지를 맨 앞으로 이동하면서 설치를 합니다.

Try to install <leafpad_0.8.18.1-2_i386.deb> :  Fail! Depends on ['libcairo2', 'libgtk2.0-0', 'libpango1.0-0']
Try to install <libpango1.0-0_1.30.0-0ubuntu3.1_i386.deb> :  Fail! Depends on ['libcairo2', 'libfontconfig1', 'libthai0', 'libxft2', 'libxrender1', 'fontconfig']
Try to install <fontconfig_2.8.0-3ubuntu9.1_i386.deb> :  Fail! Depends on ['libfontconfig1', 'fontconfig-config']
dpkgInstall: Cannot find dependent package <ttf-bitstream-vera>
dpkgInstall: Cannot find dependent package <ttf-freefont>
dpkgInstall: Cannot find dependent package <gsfonts-x11>
Try to install <fontconfig-config_2.8.0-3ubuntu9.1_all.deb> :  Fail! Depends on ['ttf-dejavu-core']
Try to install <ttf-dejavu-core_2.33-2ubuntu1_all.deb> :  OK! with force-depends
Try to install <fontconfig-config_2.8.0-3ubuntu9.1_all.deb> :  OK!
Try to install <libfontconfig1_2.8.0-3ubuntu9.1_i386.deb> :  OK!
Try to install <fontconfig_2.8.0-3ubuntu9.1_i386.deb> :  OK!
...


어느분께는 도움이 되셨기를 ...

핑백

덧글

  • 음냐리 2014/03/13 13:44 # 삭제 답글

    큰 도움이 되었습니다.
  • 지훈현서아빠 2014/03/13 14:10 #

    도움이 되셨다니 저의 보람입니다~~
  • 크콩 2016/04/01 01:59 # 삭제 답글

    감사합니다'-'/
  • 지훈현서아빠 2016/04/01 08:58 #

    도움이 되셨다니 저의 보람입니다~ ^^
  • 웃는작두 2018/11/06 16:52 # 삭제 답글

    혹시 apt-get install libssl-dev 를 수동설치하는 방법은 어떻게 하나요 ??
  • 지훈현서아빠 2018/11/07 13:03 # 답글

    aptitude (apt, apt-get) 는 기본적으로 패키지를 원격에서 가져오게 설계되어 있습니다.
    수동으로 해 보시려면 다운받는 pkg 파일들을 하나 모아 dpkg 명령으로 하는 방법입니다.
    도움 되셨기를...
댓글 입력 영역

구글애드텍스트