
Ubuntu의 업데이트 관리자(Update Manager)를 사용하면 설치된 시스템을 새로운 메이저 릴리스로 비교적 쉽게 업그레이드할 수 있습니다. 이 유틸리티의 그래픽 인터페이스는 단계별 마법사 형태로 진행되기 때문에 누구나 어렵지 않게 따라 할 수 있습니다.
하지만 그래픽 유틸리티를 사용할 수 없는 경우도 있습니다. 예를 들어 서버 환경에서는 그래픽 인터페이스에 접근할 방법이 없으므로, 명령줄을 통해 Ubuntu를 업그레이드해야 합니다.
그러나 이것이 명령줄 업그레이드가 유용한 유일한 상황은 아닙니다. 명령줄 인터페이스는 작업 진행 상황을 훨씬 더 자세히 보여주는 경향이 있습니다. 대부분의 명령줄 도구는 작업 중에 많은 텍스트를 출력하기 때문에, 업그레이드 과정의 세부 내용을 실시간으로 확인하고 싶다면 이 방법을 선호할 수 있습니다. 또한 오류가 발생했을 때 이를 더 빠르게 파악할 수 있다는 장점도 있습니다.
do-release-upgrade 명령의 "-d" 옵션
Ubuntu를 이전 버전에서 상위 버전으로 업그레이드하는 데 사용되는 유틸리티는 do-release-upgrade입니다. 사실 이 도구는 Python 프로그래밍 언어로 작성된 스크립트입니다.

일반적으로 이 스크립트는 하나의 안정화 릴리스(또는 LTS – Long-Term Support)에서 다음 릴리스로 업그레이드를 진행합니다. 예를 들어 Ubuntu 16.04를 Ubuntu 18.04로 업데이트하는 식입니다. 다만 새로운 LTS 버전이 출시되더라도 첫 번째 포인트 릴리스가 나오기 전까지는 해당 버전으로 업그레이드할 수 없습니다. 즉, 현재 16.04.5를 사용 중이라면 18.04로 바로 업그레이드할 수 없으며, 18.04.1이 출시될 때까지 기다려야 합니다. 실제로도 첫 번째 포인트 릴리스까지 기다리는 것이 권장됩니다. 최초의 LTS 릴리스에는 아직 심각한 버그가 숨어 있을 수 있기 때문입니다. 하지만 정말 새 LTS가 급하다면, 출시 즉시 명령줄 옵션을 사용해 강제로 업그레이드할 수 있습니다. 예를 들어 18.04가 막 출시된 직후라면 18.04.1이 나오기 전에 다음과 같이 입력합니다.
sudo do-release-upgrade -d
반대로 18.04.1이 이미 출시된 상태라면 옵션 없이 명령을 실행하면 됩니다.
sudo do-release-upgrade
do-release-upgrade 명령으로 Ubuntu 업그레이드하기
업그레이드 전에는 PPA나 "/etc/apt/sources.list", "/etc/apt/sources.list.d/"에 직접 추가한 항목 같은 서드파티 저장소를 임시로 비활성화하는 것이 좋습니다. Ubuntu 외에 다른 제공자의 저장소를 추가한 적이 없다는 것을 확실히 안다면 이 단계는 건너뛰어도 됩니다.

이러한 저장소의 일부 패키지는 다음 Ubuntu 릴리스의 새 패키지와 예상치 못한 방식으로 충돌을 일으킬 수 있습니다. 이후 sudo apt update를 실행해 패키지 정보를 갱신하고, sudo apt autoremove nginx와 같은 명령으로 서드파티에서 설치한 프로그램을 제거합니다.
시스템에 do-release-upgrade 명령이 없다면 다음과 같이 설치합니다.
sudo apt install update-manager-core
다만 보통은 기본적으로 설치되어 있습니다.
새 Ubuntu 릴리스로 업그레이드하기 전에 모든 소프트웨어 패키지가 최신 상태여야 합니다. 시스템의 모든 패키지를 먼저 업데이트하세요.
sudo apt update && sudo apt upgrade
단기 지원 버전으로 업그레이드하기(선택 사항)
18.04처럼 짝수 버전은 장기 지원 릴리스(LTS)를 의미하고, 19.04처럼 홀수 버전은 개발용 단기 지원 릴리스를 의미합니다. 현재 LTS 버전을 사용 중이며 다음 LTS로 업그레이드하려면 이 섹션의 단계를 건너뛰세요. 하지만 현재 18.04 같은 LTS 버전을 사용 중이면서 18.10이나 19.04(다음으로 사용 가능한 버전)로 업그레이드하고 싶다면 아래 파일을 편집합니다.
sudo nano /etc/update-manager/release-upgrades
Prompt=lts를 Prompt=normal로 변경합니다. Ctrl + X를 누른 후 y, Enter 순서로 눌러 파일을 저장합니다.

로컬 컴퓨터를 업그레이드하는 경우
그래픽 데스크톱에서 터미널 에뮬레이터를 열어 작업할 수도 있지만, 여기에는 주의할 점이 있습니다. 그래픽 서버가 업그레이드되는 동안 재시작될 수 있는데, 이 경우 터미널 세션이 강제로 종료될 수 있습니다. 따라서 그래픽 세션에서 로그아웃한 뒤, Alt + Ctrl + F2 또는 Alt + Ctrl + F3를 눌러 TTY 콘솔에 로그인한 후 아래의 업그레이드 스크립트를 실행하는 것이 안전합니다.
Ubuntu 업그레이드 시작
이제 간단히 업그레이드 스크립트를 실행합니다.
sudo do-release-upgrade
이후 마법사의 단계를 신중하게 따르세요. 업그레이드 상황에 따라 절차가 조금씩 다를 수 있습니다. 예를 들어 SSH 세션에 연결된 상태라면 아래 이미지와 같은 추가 확인 단계가 표시됩니다.

이후 단계에서는 새 패키지 버전에서 변경된 구성 파일을 어떻게 처리할지 묻는 질문이 거의 반드시 나옵니다.

해당 구성 파일을 직접 수정한 적이 있다면 "N"을 입력해 기존 변경 사항을 유지하는 것이 좋습니다. 호스팅 업체가 해당 파일을 수정한 경우에도 마찬가지입니다. 이 부분은 사용자가 스스로 확인해야 합니다. 사용자나 업체가 특별한 변경을 하지 않았다면 "Y"를 입력해 업데이트된 구성 파일을 적용하세요.
마무리
업그레이드 과정 자체는 복잡하지 않지만, 예상치 못한 문제가 발생할 수도 있습니다. 이는 대개 시스템이 얼마나 "깨끗한지", 즉 서드파티 저장소가 없는지에 크게 좌우됩니다. 업그레이드 유틸리티가 작업을 마친 후에는 컴퓨터를 재부팅하기만 하면 됩니다. 보통 스크립트가 재부팅 옵션을 제공하지만, 그렇지 않은 경우 다음 명령을 실행하면 됩니다.
sudo systemctl reboot
또는 간단히 다음 명령을 사용해도 됩니다.
sudo reboot
업그레이드 과정의 버그나 새로 설치된 소프트웨어의 오류를 만나지 않는 한, 재부팅 후에는 시스템이 정상적으로 작동할 것입니다.