Computer >> 컴퓨터 >  >> 시스템 >> Linux

데비안(Debian) 업그레이드 완벽 가이드 – 안전하게 최신 버전으로 전환하는 방법

데비안(Debian) 업그레이드 완벽 가이드 – 안전하게 최신 버전으로 전환하는 방법

데비안은 약 2년 동안 큰 변화 없이 안정적으로 유지됩니다. 이 기간 동안 프로그램 버전과 기능은 그대로 유지되며, 보안 수정 사항만 백포트(backport) 방식으로 적용됩니다. 드물게 예외적인 상황에서 패키지에 새로운 기능이 필요할 때가 있습니다. 예를 들어 더 많은 하드웨어를 지원하기 위해 드라이버가 업그레이드되는 경우가 있지만, 이런 일은 매우 드뭅니다.

시스템을 일관되게 유지하면 여러 가지 장점이 있습니다. 운영체제가 안정적이고 신뢰할 수 있게 되며, 버그를 거의 만나지 않고 패키지를 업데이트한 후에도 시스템이 깨지는 일이 거의 없습니다. 새로운 기능이 없다는 것은 곧 예상치 못한 동작이나 놀라움도 없다는 의미입니다.

하지만 약 2년마다 새로운 데비안 버전이 출시되며, 새 버전에는 사용자가 원하거나 필요로 하는 상당한 개선 사항과 새로운 기능이 포함되어 있는 경우가 많습니다. 위에서 언급한 이유로 운영체제가 흔히 "견고하다(rock solid)"고 불리는데, 업그레이드 과정 역시 마찬가지로 견고합니다. 깨끗한 상태의 시스템에서 한 메이저 버전에서 다음 버전으로 업그레이드하는 과정은 너무나 매끄러워서, 마치 중요하지 않은 몇몇 패키지만 업그레이드한 것 같은 느낌을 줍니다.

업그레이드 전에 sources.list 정리하기

일부 사용자는 업그레이드를 시도할 때 문제에 직면합니다. 해결할 수 없는 패키지 충돌이 발생하거나, 중요한 소프트웨어가 제거되는 등의 문제입니다. 결국 이들은 기존 설치를 삭제하고 새 버전을 새로 설치하는 쪽을 선택하게 됩니다. 하지만 대부분의 경우 이것은 데비안의 잘못이 아닙니다. 문제가 발생하는 진짜 원인은 운영체제를 손상시키는 행동을 했기 때문인 경우가 많습니다. 겉보기에는 잘 작동하는 것처럼 보여도, 패키지 관리자가 내적으로 문제를 안고 있지 않다고 단정할 수 없습니다. 그렇기 때문에 업그레이드를 진행하기 전에 "sources.list" 파일에서 서드파티(제3자) 소프트웨어에 대한 모든 참조를 제거하는 것이 권장됩니다.

파일을 편집 모드로 엽니다:

sudo nano /etc/apt/sources.list

데비안 공식 저장소 외부의 소프트웨어에 대한 참조를 모두 제거합니다. 이 파일에는 딱 세 줄만 있으면 됩니다.

데비안(Debian) 업그레이드 완벽 가이드 – 안전하게 최신 버전으로 전환하는 방법

템플릿이 필요하다면 아래 예시를 복사한 후, 자신의 환경에 맞게 수정하세요.

주의: 현재 사용 중인 데비안 릴리스의 코드명(codename)을 반드시 유지해야 합니다! 예를 들어 2021년에 Debian Buster를 실행 중이라면 stretchbuster로, 또는 해당하는 코드명으로 바꿔야 합니다.

deb https://deb.debian.org/debian stretch main
deb https://deb.debian.org/debian stretch-updates main
deb https://deb.debian.org/debian-security/ stretch/updates main

또한 줄 끝부분의 문자열도 유지해야 합니다. 위 예시에서는 각 줄이 "main"으로 끝납니다. 하지만 현재 "sources.list"의 문자열이 "main contrib non-free"로 끝난다면, 각 줄 끝에 "contrib non-free"를 추가해야 합니다. 이 경우 결과는 다음과 같습니다:

deb https://deb.debian.org/debian stretch main contrib non-free
deb https://deb.debian.org/debian stretch-updates main contrib non-free
deb https://deb.debian.org/debian-security/ stretch/updates main contrib non-free

파일을 저장하려면 Ctrl + X를 누른 후 y, 그리고 Enter를 차례로 누릅니다.

sources.list에 대해 더 자세히 알아보려면 데비안 공식 위키를 참고하세요.

패키지 정보를 업데이트합니다:

sudo apt update

패키지를 업그레이드합니다:

sudo apt upgrade

아래 그림과 같은 변경 로그(changelog)가 나타나면, 내용을 확인한 후 q 키를 눌러 종료할 수 있습니다.

데비안(Debian) 업그레이드 완벽 가이드 – 안전하게 최신 버전으로 전환하는 방법

불필요한 패키지를 제거합니다:

sudo apt autoremove

업그레이드를 위한 sources.list 준비

반드시 메이저 버전에서 바로 다음 메이저 버전으로만 업그레이드해야 한다는 점에 유의하세요. 예를 들어 Debian 7에서 8로, 또는 8에서 9로 업그레이드할 수 있지만, 7에서 9로 건너뛰어 업그레이드해서는 안 됩니다.

소프트웨어 소스 파일을 다시 편집합니다.

sudo nano /etc/apt/sources.list

현재 데비안 릴리스의 코드명을 다음 버전의 코드명으로 교체합니다. 코드명은 데비안 릴리스 목록 페이지에서 확인할 수 있습니다.

예를 들어 Debian 9에서 Debian 10으로 업그레이드하려면 다음 내용을:

deb https://deb.debian.org/debian stretch main contrib non-free
deb https://deb.debian.org/debian stretch-updates main contrib non-free
deb https://deb.debian.org/debian-security stretch/updates main contrib non-free

다음과 같이 변경합니다:

deb https://deb.debian.org/debian buster main contrib non-free
deb https://deb.debian.org/debian buster-updates main contrib non-free
deb https://deb.debian.org/debian-security buster/updates main contrib non-free

파일을 저장한 후 패키지 정보를 새로 고칩니다:

sudo apt update

데비안 업그레이드 실행

데스크톱 환경에서 작업하는 경우, 먼저 그래픽 인터페이스에서 로그아웃하세요. 업데이트 과정 중 어느 시점에 그래픽 스택이 재시작되면서 터미널 애플리케이션에 접근할 수 없게 될 수 있습니다.

텍스트 콘솔에 로그인합니다. ALT+CTRL+F2 또는 ALT+CTRL+F3를 누른 후, 사용자 이름과 비밀번호로 로그인하고 이 화면에서 명령어를 입력합니다.

먼저 "안전 업그레이드(safe upgrade)"를 수행합니다. 이 명령은 어떤 패키지도 제거하지 않으면서 모든 패키지를 업그레이드하려고 시도합니다.

sudo apt upgrade

필수 패키지가 제거되는 충돌이 발생하는지 주의 깊게 살펴보세요. 이 명령과 다음 명령이 일부 시스템에서 그래픽 스택 등이 통째로 제거되는 원인이 될 수 있습니다. 다만 데비안 저장소 외부에서 아무것도 설치하지 않은 깨끗한 시스템에서는 이런 일이 발생하지 않아야 합니다.

일부 새 패키지에는 새로운 구성 파일이 포함되어 있습니다. 이때 기존 구성을 유지할지, 아니면 새 구성으로 교체할지 묻는 메시지가 표시됩니다.

데비안(Debian) 업그레이드 완벽 가이드 – 안전하게 최신 버전으로 전환하는 방법

구성 파일을 수정한 적이 있다면, 기존 파일을 유지하거나 새 버전으로 교체한 후 나중에 사용자 지정 설정을 다시 추가할 수 있습니다. 반면 파일을 수정한 적이 없다면 새 구성을 가져오는 것을 선택하세요(Y 입력). 새 구성에는 중요한 개선 사항, 보안 수정 사항 또는 소프트웨어가 정상 작동하기 위해 필요한 변경 사항이 포함되어 있을 수 있습니다. 그렇기 때문에 가능한 한 자주 "패키지 관리자(maintainer) 버전 설치"를 선택하는 것이 좋습니다.

이제 "전체 업그레이드(full upgrade)"를 수행합니다. 이 명령은 이전 명령으로 업데이트할 수 없었던 나머지 패키지들을 업그레이드합니다. 해당 패키지들이 시스템에 남아 있는 오래된 패키지나 더 이상 필요 없는 프로그램들과 충돌하기 때문입니다. 전체 업그레이드는 새 패키지를 위한 공간을 확보하기 위해 일부 오래된 패키지를 제거합니다.

sudo apt full-upgrade

여기까지 완료되면 업그레이드가 끝난 것입니다. 다음 명령으로 불필요한 패키지를 정리할 수 있습니다:

sudo apt autoremove

마지막으로 컴퓨터/서버를 재부팅합니다:

sudo systemctl reboot

마무리

대부분의 경우 이 과정은 문제없이 진행될 것입니다. 하지만 패키지 관리자에 서드파티 소프트웨어 소스를 추가했거나, 서드파티 패키지(dpkg -i something.deb 같은 명령으로)를 설치한 적이 있다면 충돌이 발생할 수 있습니다. 이런 경우에는 문제가 되는 패키지를 먼저 제거하는 방식(sudo apt autoremove badpackage)으로 수동으로 해결해야 합니다.

또한 새 릴리스로 업그레이드하는 방법에 대해 더 자세히 알아보고 싶다면, "Debian stretch upgrade"와 같은 키워드로 검색해 보세요. 물론 검색할 때 코드명 "stretch"는 자신에게 해당하는 코드명으로 바꿔야 합니다. 이 글과 마찬가지로 한 릴리스에서 다른 릴리스로의 업그레이드 경로를 자세히 설명하는 공식 문서를 찾을 수 있을 것입니다.