説明#
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: Repository 'Debian bookworm' changed its 'non-free component' value from 'non-free' to 'non-free non-free-firmware'
N: More information about this can be found online in the Release notes at: 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: Skipping acquire of configured file 'non-free-firmware/source/Sources' as repository 'http://repos.inside.com:19796/debian bullseye-updates InRelease' doesn't have the component 'non-free-firmware' (component misspelt in sources.list?)
W: Skipping acquire of configured file 'non-free-firmware/binary-amd64/Packages' as repository 'http://repos.inside.com:19796/debian bullseye-updates InRelease' doesn't have the component 'non-free-firmware' (component misspelt in sources.list?)
W: Skipping acquire of configured file 'non-free-firmware/i18n/Translation-en' as repository 'http://repos.inside.com:19796/debian bullseye-updates InRelease' doesn't have the component 'non-free-firmware' (component misspelt in sources.list?)
W: Skipping acquire of configured file 'non-free-firmware/i18n/Translation-zh_CN' as repository 'http://repos.inside.com:19796/debian bullseye-updates InRelease' doesn't have the component 'non-free-firmware' (component misspelt in sources.list?)
W: Skipping acquire of configured file 'non-free-firmware/i18n/Translation-zh' as repository 'http://repos.inside.com:19796/debian bullseye-updates InRelease' doesn't have the component 'non-free-firmware' (component misspelt in 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 の更新と他のパッケージのインストールが可能になります。