인터넷을 사용할 수 없는 환경에서 리눅스를 이용해야 하는 상황이 생겨 오프라인 상태에서 우분투 패키지들을 업데이트, 업그레이드 하는 방법을 찾아보았다.
VirtualBox 환경에서 테스트 후 실제 Ubuntu에 적용하였다.
업데이트, 업그레이드만 테스트할 예정이기 때문에 최대한 간단하게 만들었다. 가장 기본으로 설정하고 외부 하드를 사용하기 위해 확장팩을 설치하였다. 첨부한 페이지에서 Oracle VM VirtualBox Extension Pack
항목을 찾아 다운받으면 된다. 다운받은 확장팩을 버추얼 박스에 적용시키는 것은 여기를 참고하였다.
1번은 인터넷이 필요하지만 3번은 단순 패키지 설치이기 때문에 인터넷이 필요하지 않다.
패키지 다운로드 시 인터넷이 필요하다. 일단 버추얼 박스 우분투에 인터넷을 연결해준다.
Settings에 Network 에서도 인터넷 연결이 가능하다.
인터넷이 연결되어 있는 상태에서
sudo apt-get update
명령어를 이용해 다운로드 가능한 패키지들을 받는다.
만약 인터넷이 연결되어 있지 않은 상태라면
다음과 같이 에러가 뜬다.
다운로드한 패키지들은 /var/cache/apt/archives
에 저장된다.
패키지가 있는 폴더로 이동 후 sudo dpkg --force-all -i ./*.deb
명령어를 이용해 패키지들을 설치한다.
- dpkg : deb 형식의 패키지를 설치하는 명령어
- --force-all : 현재 필요한 패키지(의존 패키지)가 없을 경우 무시하고 다음 설치를 진행하는 옵션
- -i : dpkg 명령어에서 install 을 하는 옵션
- ./*.deb : 현재 폴더에 존재하는 모든 .deb 파일
패키지 설치 시 의존성을 고려한 순서대로 설치되는 것이 아닌 패키지들이 나열되어 있는 순서대로 설치되기 때문에 순서상 필요한 패키지가 현재 설치되어 있지 않아 에러가 발생하는 경우가 있다. 동일한 명령어를 여러번 반복하여 모든 패키지를 설치해준다.
약 두 번정도 반복하면 모든 패키지 설치가 완료된다.
나는 설치는 완료 되었지만 일부 패키지가 예전 config 파일을 기준으로 셋팅했다하여 새로운 config 셋팅을 위해 sudo dpkg --force-confnew -i ./*.deb
명령어를 추가로 실행하여 설치를 완료하였다.
- --force-confnew : 최신 버전의 config 파일을 기준으로 설치한 패키지 셋팅하는 옵션
의존성 문제를 해결하지 않고 실행할 경우 -i 옵션이 붙어있으므로 재설치를 진행하여 패키지가 깨질 가능성이 있다. 의존성 문제를 해결 후에 실행할 것을 권장한다.
--force-all
옵션을 주지 않을 경우 대부분의 패키지는 설치되었으나 일부 패키지가 설치되지 않는다.
sudo dpkg --configure -a
명령어로 왜 설치가 되지 않았는지 확인한다.
대충 읽어보면 의존성 문제로 설치가 되지 않았다.
sudo apt-get --fix-broken install
명령어로 깨진 패키지들을 다시 다운로드 받아 sudo dpkg -i ./*.deb
로 다시 재설치하면 해결은 된다. 하지만 깨진 패키지들을 다시 다운받으려면 인터넷이 필요하다. 그러므로 되도록 --force-all
옵션을 주는 것이 좋다.
20210811 다시 점검해보니 'sudo apt-get update' 는 현재 내가 가지고 있는 패키지들의 최신 버전 패키지를 다운로드
받는 것 뿐이므로 의존성 문제가 발생하였다. 의존성 문제를 해결하고자 파이썬을 이용하여 가지고 있는 패키지들의 모든 의존성 패키지를 다운로드 하는 모듈을 만들어 해결하였다.
https://horrorgame.online
Storylines in horror games often revolve around uncovering mysteries, surviving dangerous situations, or confronting eerie phenomena.