Debian11からDebian12のアップグレード　Backportsリポジトリを有効にする方法

# はじめに
本記事はDebian11.0（bullseye）からDebian12.0（Bookworm）へのアップグレード手順と、Backportsリポジトリを有効にする方法について記載しています。

## Debian12のアップグレード手順
アップグレードを行う前に、リリースによる副作用を確認したい場合は、公式ドキュメントの「[第5章 bookworm で注意すべき点](https://www.debian.org/releases/stable/i386/release-notes/ch-information.ja.html)」に目を通しておくことをお勧めします。

### 設定情報のバックアップ
システムをアップグレードする前に、完全なバックアップを取得することが推奨されています。

少なくとも設定情報のバックアップを取得する場合は、以下のようなコマンドを実行します。

`$ sudo tar czf /root/backup_etc_$(date +%F).tar.gz /etc`

```
tar: Removing leading `/' from member names
```

上記コマンド実行後、バックアップが取得できていることを確認します。

`$ sudo ls -l /root`

```
-rw-r--r-- 1 root root 719663 Jun 10 09:36 backup_etc_2025-06-10.tar.gz
```

::: note
アップグレードに関するプロセスは、`/home`ディレクトリ配下を変更しないように行ないます。しかし、Mozillaスイートの一部や、GNOME・KDEといったデスクトップ環境などのデフォルト設定を上書きしてしまう可能性があるため、必要に応じて`/home`ディレクトリについてもバックアップを取得するのが推奨されています。
:::

### バージョン確認
アップグレード前に現在のバージョンを確認します。

現在のバージョンを確認する場合は、`lsb_release`コマンドまたは`/etc/debian_version`ファイルなどから確認できます。

`$ lsb_release -a`

```
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 11 (bullseye)
Release:	11
Codename:	bullseye
```

`$ cat /etc/debian_version`

```
11.11
```

### 既存システムの最新化
古い状態のパッケージが存在するとき、アップグレード時にパッケージの依存関係に影響する場合があるため、アップグレード前に既存システムの最新化を行います。

`$ sudo apt update`
`$ sudo apt full-upgrade -y`

上記コマンド実行後、不要パッケージの削除を行います。

`$ sudo apt autoremove --purge -y`

### sources.listファイルの変更
`sources.list`ファイルがbookwormのリポジトリでない場合は、`sources.list`ファイルの変更を行う必要があります。

以下のコマンドを実行して、`sources.list`ファイルのリポジトリを**bookworm**に変更します。

`$ sudo cp -p /etc/apt/sources.list /etc/apt/sources.list.bak`
`$ sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list`

`sources.list`ファイル編集後、ファイルの中身が正しいことを確認します。

`$ cat /etc/apt/sources.list`

```
deb http://deb.debian.org/debian/ bookworm main
deb-src http://deb.debian.org/debian/ bookworm main
deb http://security.debian.org/ bookworm-security main
deb-src http://security.debian.org/ bookworm-security main
deb http://deb.debian.org/debian/ bookworm-updates main
deb-src http://deb.debian.org/debian/ bookworm-updates main
```

### パッケージの更新
以下のコマンドを実行して、パッケージの更新ができることを確認します。

`$ sudo apt update`

### アップグレードの実行
公式ドキュメントでも推奨されている通りに、段階的にアップグレードを行うことで、安全にアップグレードが実現できます。

段階的にアップグレードを実行する場合は、次の流れで実行します。

`$ sudo apt upgrade --without-new-pkgs -y`
`$ sudo apt full-upgrade -y`

Nginxなどをインストールしている場合は、設定ファイルについて対応を求められる場合があります。現在のインストールバージョンを保持する場合は、`N`または`O`を選択します。

```
Configuration file '/etc/nginx/nginx.conf'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** nginx.conf (Y/I/N/O/D/Z) [default=N] ? N
```

::: note
`apt upgrade --without-new-pkgs`コマンドは、他のパッケージをインストール・削除する必要がないパッケージのみをアップグレードを行います。従ってステムの容量が少なく、容量による制約のため完全アップグレードが実行できない場合などに有用です。
:::

### システムの再起動
以下のコマンドを実行して、システムの再起動を行います。

`$ sudo reboot`

### バージョン確認
システムの再起動完了後、バージョンが更新されていることを確認します。

以下のコマンドを実行して、現在のバージョンを確認します。

`$ lsb_release -a`

```
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 12 (bookworm)
Release:	12
Codename:	bookworm
```

## Backports
現在Debian12のサポート期限について、通常版の場合は2026年6月、LTS版の場合は2028年6月となっています。

従ってサポート期間中である場合は、セキュリティ修正やバグ修正を含むパッケージの更新を行うことができます。

しかし、サーバ運用において一部のソフトウェアについて新しいパッケージが必要になるケースもあるかと思います。例えば、Nginxの安定版のサポート期限はリリースから約1年となっていて、Debianのようにディストリビューションから提供されるパッケージはバージョンが少し古いため、新しい機能を試したい場合は自身でソースからインストールするなどの対応が必要になります。

そこで有効なのが**Backports**の活用です。Backportsを活用することで、一部のソフトウェアについてより新しいバージョンを、現在の安定版上で利用することができます。

Backportsは、Debianのテスト版ブランチからパッケージを取得し、現在の安定版で動作するように最適化及び再コンパイルする仕組みです。

Backportsを利用する方法を以下に記載します。

::: note
日本語では[バックポート](https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%83%E3%82%AF%E3%83%9D%E3%83%BC%E3%83%88)と呼ばれています。
:::

### Backportsリポジトリを有効にする方法
以下のコマンドを実行して、`/etc/apt/sources.list.d/`ディレクトリに新しいリポジトリファイルを作成します。

`$ sudo vi /etc/apt/sources.list.d/debian-12-backports.list`

```
deb http://deb.debian.org/debian bookworm-backports main
```

リポジトリを更新するためには、以下のコマンドを実行します。

`$ sudo apt update`

Backportsからパッケージをインストールしたい場合は、オプションに`bookworm-backports`を指定してインストールを行います。

`$ sudo apt -t bookworm-backports install <パッケージ名>`

::: note warn
`-t bookworm-backports`を明示しない限り、安定版（bookworm）のパッケージが優先されます。
:::

# おわり
システムを健全に運用するためには、利用するソフトウェアについて定期的にアップデート及びアップグレードを行ないましょう。

## 参考
- [第4章 Debian 11 (bullseye) からのアップグレード](https://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.ja.html)
- [About Debian 12 Bookworm](https://www.freexian.com/lts/extended/docs/debian-12-support/?utm_source=chatgpt.com)
- [How to enable Debian 12 Backports repository](https://www.cyberciti.biz/faq/install-enable-debian-linux-12-backports-repository/)