본문 바로가기
리눅스

Upgrading Debian 11 to Debian 12

by 다움위키 2023. 12. 8.

현재 데비안 안정 버전 11에서 다음의 안정 버전 12로의 업그레이드에 대해 그 방법과 유의해야 할 사항을 기록해 두고자 합니다.

데비안은 대체로 매년 2년 주기로 버전 업그레이드가 진행됩니다.

이런 느린 데비안의 업그레이드 주기는 안정성을 높이는 좋은 방법이긴 하지만, 일반 사용자는 간혹 새로운 버전의 소프트웨어를 사용해 보고 싶은 욕망이 있습니다.

게다가, 데비안에서 낳은 우분투 등의 자식 배포판의 상황을 보면, 대체로 큰 버그 없이 동작하는 것으로 보여서 몇 개월 전에 새로운 버전, 현재의 테스팅 버전으로 업그레이드를 고려해 볼 수 있습니다.

업그레이드는 다음 정도의 순서로 진행해 볼 수 있습니다.

  • Backup the system
  • Update existing packages and reboot the Debian 11 system.
  • Edit the file /etc/apt/sources.list
  • sudo apt update
  • sudo apt upgrade --without-new-pkgs
  • sudo apt full-upgrade
  • reboot

준비/점검

문제는 아직 출시되지 않는 버전을 미리 설치하기 때문에, 다른 저장소에서 설치한 프로그램들이 동작할지 확인하는 것이 필요합니다.

이런 이유로, 가상 기계에 데비안 11을 설치하고, 다른 저장소의 패키지를 설치했습니다. 그런-다음 위의 과정을 진행했고, 문제없이 업데이트가 되었고, 서비스들도 전부 정상적으로 동작함을 확인할 수 있었습니다.

실제 기계 업그레이드

실제 기계에서 업그레이드는 이상 없이 잘 작동하는 것처럼 보였지만, 이상하게도 실제 기계가 더 많은 패키지를 보유하고 있어서 더 시간이 더 걸리겠지만, 많은 코어로 작업하기 때문에 적은 시간으로 완료한 것처럼 보였습니다.

문제점과 해결책

실제 기계를 업그레이드를 완료하고 시스템을 재시작 후에, 확인해 보니, 그놈이 여전히 3.38에서 동작하고 있음을 확인할 수 있었습니다.

이 문제는 다움 저장소를 만들면서 bullseye 외의 testing, sid의 우선 순위를 낮게 둠으로써 해당하는 바이너리들이 설치되지 않는 문제를 발견할 수 있었습니다. 이 부분을 확인하는 것에 상당한 시간이 걸렸습니다. 사실, 테스팅과 시드의 바이너리는 전혀 가져오지 않기 때문에, 그 설정을 해 두었을 것이라는 생각을 하지 못했습니다.

어쨌든, 그 부분을 지우고, 설치 과정을 진행했고, 우선 전반적인 프로그램의 업데이트가 완료되었습니다.

apt 오류

의존성으로 인해, 시스템 동작에 필요한 최소한이 남고, 지워지면 곤란한 패키지들이 지워지는 상황에 이러다 보니, 다음 오류가 발생합니다:

dpkg: warning: 'ldconfig' not found in PATH or not executable dpkg: error: 1 expected program not found in PATH or not executable Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin

이 문제는 libc-bin 패키지 등의 필수 프로그램의 제거로 인해 발생한 문제였습니다. 다행히, 그놈은 살아 있어서, 브라우저에서 libc-bin 패키지를 다운로드할 수 있었고, 아래와 같이 처리해서 패키지를 설치할 수 있었습니다:

  • ar -x libc-bin_*.deb
  • tar -xf data.tar.xz
  • cp ./usr/bin/locale /usr/bin
  • cp ./sbin/ldconfig /sbin

물론, 해당 패키지는 그 이후의 업그레이드 과정에서 덮어쓰게 되므로, 걱정할 문제는 아닙니다.

기존 라이브러리 제거

이제 bullseye와 bookworm의 차이로 남아 있는 패키지를 제거했습니다.

그러나, bookworm은 java-17만 지원하고 python3만 지원합니다. 게다가, 여기저기에서 필요하다고 생각되는 패키지들은 설치해 둔 것이 있는데, 예를 들어, 프린터를 진행하기 위해, 우분투의 lsb 프로그램을 설치했었습니다.

이런 패키지들은 잘못 지웠을 때, 원했던 서비스가 동작하지 않을 수 있어서 하나씩 진행해야 했지만, 허술한 계획으로 진해하다 보니, 문제가 발생하기 시작했습니다.

미디어위키 시각 편집기

미디어위키 시각 편집기는 외부의 RESTBase 서비스를 이용할 수도 있지만, 현재 시스템에서 설치할 수 있습니다. 테이블 저장을 위해, 아파치 카산드라를 사용하거나 sqlite3을 사용하도록 되어 있지만, 어쩐 일인지 splite3을 사용하게 되면, 시작 편집기가 동작하지 않는 문제가 발생했습니다.

이때, 필요한 카산드라 버전은 3.x이고, 이 버전은 자바 8과 python2.7에서 동작합니다. 그러나, 둘 다 bookworm에서 지원하지 않습니다.

자바는 이미 수동으로 설치해 두었기 때문에, 문제가 되지 않지만, python2.7을 지우고 나서 카산드라가 동작하지 않아서 그것에 필요한 파일을 설치했지만, 카산드라를 설치하려면, 의존성에서 찾는 부분이 무엇인지 설치 자체가 되지 않았습니다.

그래서, 카산드라 바이너리를 받아서 패키지를 풀고, 해당 의존성을 제거한 후에 설치할 수 있었습니다.

PHP8.2

물론, php8.2가 이제 bookworm에 올라오긴 했지만, 미디어위키에서 필요한 모든 모듈들이 제공되지는 않습니다. 이러다 보니, 이런 패키지들을 로컬에서 컴파일할 필요가 있습니다. 다음 패키지를 컴파일해서 설치했습니다:

  • php
  • php8.2-apcu
  • php8.2-igbinary
  • php8.2-redis
  • php-dev

한편, php-luasandbox는 컴파일은 되지만, 이상하게도 로컬 버전으로는 시각 편집기가 동작하지 않았고, 저장소 버전에서만 동작합니다.