緣由

因為 debian:11 套件太舊,就改用 debian:bookworm 當 base image,我在 Dockerfile 都會寫以下指令替換成交大的 mirror

sed -i -e 's/deb.debian.org/debian.cs.nycu.edu.tw/g' /etc/apt/sources.list

建置 image 時發現 No such file or directory,沒有 sources.list 那要怎麼下載套件?
跑了一個容器進去一看,還真的沒有 /etc/apt/sources.list,取而代之的是 /etc/apt/sources.list.d/debian.sources,網路上一查才知道 APT 1.1 後支援 DEB822-Style 格式,而 Debian 12 成為 sources list 預設格式。
會改變預設格式一定是有他們的考量,所以來看看 DEB822-Style 格式的差異吧。

One-Line-Style Format

傳統熟悉的格式,一列一個來源,多個值用逗號分隔,Options 放在 Type 後並用中括號包起來。然而這種格式太長,而且需要記參數順序,不利於人類理解與修改。

One-Line

DEB822-Style Format

類似 YAML 的格式,副檔名為 .sources,多個值用空白分隔,每個參數都自成一列,閱讀起來一目瞭然。

DEB822

總結

DEB822-Style 對於電腦沒有比較好處理,但對於人類來說可讀性大幅提升,的確是一個提升 UX 的好想法。而 Debian 12 將於 2023/07/10 正式發佈,下游的 Ubuntu 預計於 23.10 引入這項改動,希望這篇文章有幫助到各位 Debian 系使用者提早適應 APT sources list 的改動。