查了一下本站好像沒有相關的系統介紹,所以來寫一下。
Debian 的套件庫結構如下:
1. unstable
2. testing
3. stable
4. oldstable
unstable 永遠叫作 sid
testing 目前 codename 叫作 lenny
stable 目前 codename 叫作 etch
oldstable 目前 codename 叫作 sarge
當新的 stable 推出時,原來的 stable 就會變成 oldstable
而原來的 oldstable 就功成身退,擺到歷史倉庫去了。
Debian 目前最多同時維護兩套 stable(也就是 oldstable 和 stable)
sid、lenny、etch、sarge 等等代號都是電影「Toy Story」裡的角色名。
套件開發流程:
1. 新套件或新版本一律進入 unstable (sid)
2. 套件在 unstable 待了一定時間後,只要沒問題就會進入 testing
3. 如果 testing 裡的套件有 RC(Release Critical) bugs 沒即時處裡,就會被踢出 testing(所以可能某軟體在 stable / unstable 裡都有,但 testing 裡沒有)
4. 原則上 Debian 的套件「不會」rebuild,stable 裡的 binary 就是當初進入 unstable 裡的那個 binary (某些 distro 在發行新版前會全系統 rebuild,Debian 並不這麼做。)
你可以把 Debian unstable / testing 視為一個整體,unstable / testing 的一切變動都不會影響到 stable / oldstable。
stable / oldstable 有專屬的團隊負責維護(例如 security update)
什麼情況下 testing 會變成 stable 呢?
1. 首先會訂出新的 stable release goal
2. 決定 schedule、新的 stable release kernel / toolchain version
3. kernel / toolchain 搞定後會把 testing freeze(凍結)
4. 開始瘋狂除錯,「原則上」Debian stable release 是不能有 RC bugs 的
5. 當 freezed testing RC bugs 都被清完後,就可以把 testing 變成 stable 了(也就是發行新版的 Debian)
6. 以目前來說,testing 叫作 lenny。當 lenny 變成 stable 時,etch 就會變成 oldstable;sarge 就被扔進倉庫去了。然後新的 testing 會另外有個新的 codename。unstable 還是一直都叫作 sid。
stable 和 unstable / testing 是分開的系統,unstable / testing 的變動都不會影響 stable。那什麼情況下 stable 的 binary 會 rebuild 呢?
1. 只有一種情況,那就是發現有 bug…
你可以發現有些套件的「版本號」有 codename 字樣,這些套件就是針對該 codename 制作的 bug-fix 版本。修復 bug 當然就需要從 source rebuild,而 rebuild 時就會在版本號上面加註 codename。