Ubuntu Rust 套件更新產物清單
這篇教你把 Ubuntu 的 rustc 套件升到新的上游 Rust 版本,最後產出可上傳的版本化原始套件、補丁更新紀錄與可驗證的建置結果。

這篇教你把 Ubuntu 的 rustc 套件升到新的上游 Rust 版本,最後產出可上傳的版本化原始套件、補丁更新紀錄與可驗證的建置結果。
這篇給 Ubuntu 工具鏈維護者看,特別是要把新的 Rust 發行版帶進 Ubuntu 套件庫的人,不是給本機安裝 rustup 的開發者。照著做完,你會拿到一份已同步上游、已刷新補丁、已清理 vendored 相依、並能送審上傳的 rustc 原始套件工作樹。
本文依據 Ubuntu Rust 更新指南 與 Foundations rustc Git 儲存庫 的流程整理,目標是讓你一路照做到底,不必自己拼流程。
開始之前
訂閱 AI 趨勢週報
每週精選模型發布、工具應用與深度分析,直送信箱。不定期,不騷擾。
不會寄垃圾信,隨時可取消。
- 一台已安裝 Git 的 Ubuntu 開發機
- 可登入 Launchpad 的帳號,且具備 SSH 金鑰存取權
- 可存取 Foundations rustc Git 儲存庫的權限
- 目標上游 Rust 發行版 tarball,例如 1.85.1
- 目前 Ubuntu 發行版對應的 rustc 套件分支
- Debian 打包工具,包含 dpkg-dev 與 debhelper
- 足夠的磁碟空間可放原始碼樹與兩份 orig tarball
- 目標 Ubuntu 系列名稱,例如 noble
- 若你的流程需要,準備好要填入的 bug 編號
Step 1: 複製 rustc 打包樹
目的:建立本機工作目錄,讓打包分支與產生的 tarball 放在同一層父目錄,符合 Ubuntu 維護 rustc 的目錄安排。

mkdir -p ~/work/rustc
cd ~/work/rustc
git clone git+ssh://git.launchpad.net/~canonical-foundations/ubuntu/+source/rustc
cd rustc
git remote add personal git+ssh://git.launchpad.net/~YOUR_LAUNCHPAD_USERNAME/ubuntu/+source/rustc驗收:你應該看到父目錄下有一個 rustc 原始碼目錄,且 git remote -v 會同時列出 Foundations 遠端與你的個人遠端。
Step 2: 下載新的上游版本
目的:把舊的上游來源換成新的 Rust 發行版,讓套件從正確的版本基礎開始。

先下載新的上游 tarball,然後在打包樹中更新版本化來源檔案,暫時保留既有套件中繼資料不動。這一步的重點,是先把舊上游內容換成新版本,再進入補丁刷新與裁剪。
驗收:你應該在原始碼樹中看到新的 Rust 版本,頂層版本檔也要對上目標版本,例如 1.85.1,而不是 1.84.0。
Step 3: 刷新 Ubuntu 補丁
目的:讓既有的 Debian 與 Ubuntu 補丁能在新 Rust 原始碼上乾淨套用,同時維持套件意圖不變。
把補丁序列重新基底化或刷新,接著逐一檢查每個補丁是否因上游改動而衝突。需要時修正偏移、更新上下文行,若上游已經包含某個變更,就直接移除那個補丁。
驗收:你應該能無 fuzz、無 rejected hunks 地套用完整補丁堆疊,而且套用後的樹狀內容可以從刷新後的來源成功建置。
Step 4: 裁剪 vendored 相依
目的:移除 Ubuntu 最終原始套件不需要的 vendored 檔案,讓套件來源更小、更乾淨。
執行打包流程中的裁剪步驟,從原始碼樹中移除不必要的 vendored crates。Ubuntu 的流程還要求在裁剪後再抓一次來源,讓最後的 orig tarball 反映裁剪後的檔案清單。
驗收:你應該看到不需要的 vendored crates 被移除,而剩下的來源樹只保留建置套件真正需要的檔案。
Step 5: 重建 orig tarball
目的:產生可上傳的最終來源產物,包含主 orig tarball 與對應裁剪結果的 vendor tarball。
debian/rules get-orig-source完成裁剪後,重新產生上游來源與 vendor tarball,讓套件精確記錄你要送進 archive 的內容。這一步會把工作樹轉成可上傳的原始套件產物。
驗收:你應該在父目錄看到新的 .orig.tar.xz 與 .orig-vendor.tar.xz,而且內容要對上目標 Rust 版本與裁剪後的 vendor 集合。
Step 6: 建置並測試套件
目的:在送出上傳前,確認新版本化套件可以編譯,且打包中繼資料正確無誤。
先在本機或乾淨的 PPA 進行原始套件建置,再執行適用於你這個發行版的 rustc 套件測試。接著檢查 changelog、版本字串與相依中繼資料,確認版本化套件名稱已更新,例如 rustc-1.85。
驗收:你應該看到建置成功、套件測試通過,而且原始套件的版本化名稱與 changelog 都已反映新的上游版本。
常見錯誤
- 把這份流程拿去更新本機 Rust 工具鏈。修法:開發者電腦請改用 rustup,這套流程只適用於 Ubuntu archive 打包。
- 裁剪後忘了再重生一次來源。修法:重新執行 orig source 產生步驟,讓最終 tarball 與裁剪後的 vendor 清單一致。
- 上游升版後還留著衝突補丁。修法:每個補丁都要對新版本刷新一次,已被上游吸收的就刪掉。
接下來可以看什麼
如果套件已經能乾淨建置,下一步就可以整理 changelog、把套件上傳到對應的 Ubuntu archive,並延伸閱讀 Ubuntu 的 Rust 回補與補丁維護文件。