Rust 版 coreutils 的日期錯誤導致 Ubuntu 25.10 自動更新受影響 (★
221 分)
Ubuntu 專案宣布 Ubuntu 25.10 版本的自動更新機制出現嚴重問題,起因是由 Rust 編寫的 `uutils coreutils` 套件中 `date` 指令發生錯誤,導致系統無法自動檢查可用軟體更新。受影響的系統包括雲端部署、容器映像檔、桌面版與伺服器版安裝。官方指出,安裝 `rust-coreutils` 版本 0.2.2-0ubuntu2 或更早的系統會受到影響,修正版本為 0.2.2-0ubuntu2.1 之後的版本;手動透過 `apt` 指令進行更新的功能則不受影響。Ubuntu 這次嘗試以 Rust 版本的 `uutils` 與 `sudo-rs` 取代原本以 C 撰寫的 GNU 公用程式,是長期「氧化 (oxidize)」發行版計畫的一部分,目的是評估 Rust 工具的穩定性,並考慮在 2026 年 4 月的長期支援 (LTS, Long-Term Support) 版中延伸採用。
根據後續開發者的分析,具體問題出在 Rust 版 `date` 指令未完整支援 `-r` 或 `--reference` 參數,該選項原應回傳指定檔案的最後修改時間,卻在該版本中被解析但未執行任何動作,導致依賴該參數的自動更新腳本靜默失敗。開發者後來在 GitHub 的修補中新增了該功能支援。工程師指出,如果當時程式能回傳參數解析錯誤,問題會更早被測出,這反映出 Rust 編譯器雖能檢測許多錯誤,但仍無法捕捉未實作的指令邏輯。部分開發者建議應建立機制,讓命令列解析器能在未使用某個參數時於編譯階段發出警告,以符合 Rust 提倡「由工具確保正確性」的精神。
在 Hacker News 的討論中,多數開發者將焦點放在這次轉向 Rust 的策略而非單一錯誤。許多人認為以新語言重寫成熟、經數十年驗證的 C 工具,雖有助於安全性與維護性,但在短期內顯然會引入新的相容與穩定性問題。一派觀點支持 Ubuntu 勇於嘗試,認為這類變革若不在非 LTS 版本中測試,就難以進入正式長期支援發行;另一派則批評這項舉動倉促,並指責 Canonical 犯下「拿使用者當實驗白老鼠」的錯誤。還有人指出這起事故充分暴露測試覆蓋率不足,例如 GNU coreutils 的測試套件本身直到事件發生後才新增針對 `date -r` 的測試案例。
部分討論者延伸到授權層面,指出 Rust 版 `uutils` 採用 MIT 授權,而非 GNU coreutils 的 GPLv3,可能讓 Canonical 日後更方便整合在只允許簽署韌體的封閉系統中,甚至有評論懷疑這是該公司長期商業策略的一環。此外,也有聲音認為 Rust 雖強調記憶體安全與併發穩定性,但無法防止邏輯錯誤,而這次的問題正是邏輯與測試疏漏而非記憶體漏洞。更多開發者則指出這類事件雖造成不便,卻促進新版程式更細緻的測試設計,也推動上游專案更清楚定義行為——長期而言有助於改善開放原始碼工具的品質。
整體而言,社群對這次 Ubuntu 自動更新失效事件的評價兩極:一方面批評在穩定版發行中引入未成熟替代品,但另一方面也承認這是將 Rust 工具推向生產等級的必經過程。這次事故突顯了 Rust 重寫專案在系統級轉換中的挑戰,也提醒開發者在「更安全」的語言與「經得起時間考驗」的穩定性之間,如何取得實際平衡。
👥
287 則討論、評論 💬 🔥
https://news.ycombinator.com/item?id=45686919