説明#
Debian11 で apt update を実行する際に、Debian bookworm のエラーが発生します。
エラーメッセージは以下の通りです。
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
6 packages can be upgraded. Run 'apt list --upgradable' to see them.
N: リポジトリ 'Debian bookworm' は 'non-free' から 'non-free non-free-firmware' に 'non-free component' の値を変更しました
N: 詳細については、リリースノートのオンライン版を参照してください: https://www.debian.org/releases/bookworm/amd64/release-notes/ch-information.html#non-free-split
原因はバージョンの変更により、apt ソースの non-free コンポーネントが変更されたためです。警告の説明に従って、sources.list ファイルの内容を変更し、non-free を non-free-firmware に変更する必要があります。
もちろん、既に国内のソースを変更している場合でも、公開されているソースリストを確認してコンポーネントが正しいかどうかを確認する必要があります。通常、オープンソースの apt ソースの説明に従って sources.list を変更すると、この問題は発生しません(当然ですよね)
すべてには例外がありますので、記録しておきます。
私が使用しているマシンは、内部ネットワーク環境にあり、内部ネットワークにはソースミラーがデプロイされており、プロキシを介してソースコンポーネントのアドレスとのハンドシェイクを行っています。この場合、ファイルを変更しても問題が発生する可能性があります。
例えば:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
6 packages can be upgraded. Run 'apt list --upgradable' to see them.
W: リポジトリ 'http://repos.inside.com:19796/debian bullseye-updates InRelease' に 'non-free-firmware' コンポーネントが存在しないため、設定されたファイル 'non-free-firmware/source/Sources' の取得をスキップしています (sources.list でコンポーネントのスペルミスがありますか?)
W: リポジトリ 'http://repos.inside.com:19796/debian bullseye-updates InRelease' に 'non-free-firmware' コンポーネントが存在しないため、設定されたファイル 'non-free-firmware/binary-amd64/Packages' の取得をスキップしています (sources.list でコンポーネントのスペルミスがありますか?)
W: リポジトリ 'http://repos.inside.com:19796/debian bullseye-updates InRelease' に 'non-free-firmware' コンポーネントが存在しないため、設定されたファイル 'non-free-firmware/i18n/Translation-en' の取得をスキップしています (sources.list でコンポーネントのスペルミスがありますか?)
W: リポジトリ 'http://repos.inside.com:19796/debian bullseye-updates InRelease' に 'non-free-firmware' コンポーネントが存在しないため、設定されたファイル 'non-free-firmware/i18n/Translation-zh_CN' の取得をスキップしています (sources.list でコンポーネントのスペルミスがありますか?)
W: リポジトリ 'http://repos.inside.com:19796/debian bullseye-updates InRelease' に 'non-free-firmware' コンポーネントが存在しないため、設定されたファイル 'non-free-firmware/i18n/Translation-zh' の取得をスキップしています (sources.list でコンポーネントのスペルミスがありますか?)
セキュリティ上の理由から、アドレスは架空のものですが、実際にはこの方法でリモートのソースコンポーネントにアクセスし、内部ネットワークデバイスで apt の更新とパッケージのインストールを行っています。
この場合、apt の情報によると、そのアドレスには non-free-firmware コンポーネントが存在しないということです。つまり、non-free を non-free-firmware に変更しても apt の更新は実現できません。
これが上記の Debian ソースのコンポーネントを確認する必要がある理由です。
少し冗長になりましたが、以下に解決策があります。
解決策#
問題の解決策は、解決策を提案した「人」に対して警告を表示しないことです。
su -c 'echo "APT::Get::Update::SourceListWarnings::NonFreeFirmware \"false\";" > /etc/apt/apt.conf.d/no-bookworm-firmware.conf'
上記のコマンドを実行すると、apt の更新と他のパッケージのインストールが可能になります。