개요
대부분의 기기가 인터넷에 연결되어있는 상태에서 오프라인 업그레이드는 흔하지 않습니다. 하지만 업무를 하다 보면 망분리 등의 사유로 인터넷이 되지 않는 환경에서 필요한 패키지를 설치해야 하는 경우도 있습니다. Xubuntu (Ubuntu)는 이 경우에 유용하게 사용할 수 있는 apt-offline
이라는 툴이 제공됩니다. 이 도구를 이용하면 매우 간단하게 오프라인 업그레이드를 수행할 수 있습니다.
이번 포스트에서는 오프라인 환경에 openssh-server
를 설치하는 예시를 통하여 apt-offline
의 사용방법을 알아보도록 하겠습니다.
※ Xubuntu 18.04에서 수행한 결과입니다.
※ 설치할 패키지(openssh-server
)를 획득할 수 있는 인터넷이 연결된 온라인 환경이 추가로 필요합니다. (또한 해당 시스템 역시 설치하고자 하는 패키지가 설치되어 있지 않아야 합니다.)
사전작업
- 양측에
apt-offline
패키지를 설치합니다.
# @Online
$ sudo apt install apt-offline
apt-offline 패키지(apt-offline_1.8.1_all.deb
)를 pkgs.org에서 검색하여 다운로드 받습니다.
Offline 시스템으로 복사합니다. (USB 등을 이용)
오프라인 시스템에서 아래의 명령으로 apt-offline을 설치합니다.
# @Offline
$ sudo dpkg -i apt-offline
※ 덧붙임 : dpkg
를 사용한다면 이론적으로 Xubuntu(Ubuntu)의 모든 패키지를 오프라인으로 설치할 수 있습니다. 하지만 의존성 문제로 여간 성가신 것이 아닙니다. 마지막 참고 항목을 보면 제가 이를 이용하여 openssh-server
를 설치할 때 발생한 오류를 확인할 수 있습니다.
작업
키 서명 생성하기
Ubuntu의 저장소는 키 서명(key signatures)을 사용하여 패키지의 무결성을 확인합니다. 오프라인 저장소도 동일합니다. 다음 명령을 이용하여 키 서명을 생성합니다.
# @Offline
$ sudo apt-offline set ~/apt-offline.sig --update --upgrade --install-packages openssh-server
온라인에서 openssh-server를 설치한다면 다음의 명령을 순서대로 입력할 것입니다.
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install openssh-server
apt-offline
에서도 동일하게 update, upgrade, install <package>
를 수행합니다. 위 명령의 옵션은 해당 패키지의 man 페이지를 참고합니다.
패키지 다운로드하기
생성한 apt-offline.sig를 online 장비로 복사합니다.
# online에서 실행합니다.
$ sudo apt-offline get -d /media/sf_Desktop/repository/ ~/openssh-server.sig
/media/sf_Desktop/repository/ 폴더에 필요한 패키지들이 추가됩니다. 이제 이 폴더를 오프라인 피씨로 복사합니다.
만약 하나의 zip 파일로 묶어서 사용하고 싶은 경우라면 bundle
옵션을 사용합니다.
$ sudo apt-offline get sudo apt /path/to/usb/bundle.zip ~/.offline.sig
오프라인으로 패키지 설치
오프라인 피씨에서 다음 명령을 사용하여 앞서 생성한 repository의 내용을 적용합니다.
# 오프라인에서 실행합니다.
$ sudo apt-offline install /media/sf_Desktop/repository/
참고 1.
deb 파일을 다운로드하여 dpkg를 이용하여 openssh-server를 설치하는 경우, 아래와 같이 의존성 오류가 발생합니다. 이를 해결하기 위해 openssh-sftp-server를 설치하면 또 다른 의존성 오류가 발생합니다. 계속 의존성을 추적하다면 결국 해결은 되겠지만 매우 성가신 일이 아닐 수 없습니다.
- 설치하고자 하는 패키지 (예를 들어
openssh-server
) 를 pkgs.org에서 검색하여 다운로드합니다. - 해당 파일을 인터넷이 되지 않는 시스템으로 복사한 후, 해당 폴더에서 아래의 명령으로 설치합니다.
$ sudo dpkg -i openssh-server dpkg: dependency problems prevent configuration of openssh-server: openssh-server 패키지는 다음 패키지에 의존: openssh-client (= 1:7.6p1-4): 하지만: 시스템에 있는 openssh-client의 버전은 1:7.6p1-4ubuntu0.3입니다. openssh-server 패키지는 다음 패키지에 의존: openssh-sftp-server: 하지만: openssh-sftp-server 패키지는 설치하지 않았습니다
위 오류의 원인인 의존 패키지 (openssh-client
, openssh-sftp-server
)를 설치합니다. 또 다른 의존성 오류가 발생하면 해당 package도 설치합니다.
참고 2
'운영체제' 카테고리의 다른 글
윈도우 10 사용자 이름 및 폴더 바꾸기 (0) | 2020.05.24 |
---|---|
Node.js 오류 @ WSL (0) | 2020.03.09 |
(리눅스) 네트워크 카드에 다중 IP 설정 (0) | 2019.08.18 |
리눅스 어플리케이션 개발을 위한 WSL 설치 및 VS Code 연동 (0) | 2019.06.30 |
유닉스(리눅스) - man 페이지 (0) | 2018.09.20 |