[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-update-rust-packages-ubuntu-releases-zh":3,"article-related-update-rust-packages-ubuntu-releases-zh":30,"series-tools-009f9e6d-81c0-4d91-8ab6-e1e18b139e8f":75},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":22,"views":26,"created_at":27,"published_at":28,"topic_cluster_id":29},"009f9e6d-81c0-4d91-8ab6-e1e18b139e8f","update-rust-packages-ubuntu-releases-zh","Ubuntu Rust 套件更新產物清單","\u003Cp data-speakable=\"summary\">這篇教你把 Ubuntu 的 rustc 套件升到新的上游 \u003Ca href=\"\u002Ftag\u002Frust\">Rust\u003C\u002Fa> \u003Ca href=\"\u002Fnews\u002Fprompt-versioning-belongs-in-production-zh\">版本\u003C\u002Fa>，最後產出可上傳的版本化原始套件、補丁更新紀錄與可驗證的建置結果。\u003C\u002Fp>\u003Cp>這篇給 Ubuntu 工具鏈維護者看，特別是要把新的 Rust 發行版帶進 Ubuntu 套件庫的人，不是給本機安裝 rustup 的開發者。照著\u003Ca href=\"\u002Fnews\u002Floop-engineering-agent-completes-tasks-zh\">做完\u003C\u002Fa>，你會拿到一份已同步上游、已刷新補丁、已清理 vendored 相依、並能送審上傳的 rustc 原始套件工作樹。\u003C\u002Fp>\u003Cp>本文依據 \u003Ca href=\"https:\u002F\u002Fubuntu.com\u002Fproject\u002Fdocs\u002Fmaintainers\u002Fniche-package-maintenance\u002Frustc\u002Fupdate-rust\u002F\">Ubuntu Rust 更新指南\u003C\u002Fa> 與 \u003Ca href=\"https:\u002F\u002Fgit.launchpad.net\u002F~canonical-foundations\u002Fubuntu\u002F+source\u002Frustc\">Foundations rustc Git 儲存庫\u003C\u002Fa> 的流程整理，目標是讓你一路照做到底，不必自己拼流程。\u003C\u002Fp>\u003Ch2>開始之前\u003C\u002Fh2>\u003Cul>\u003Cli>一台已安裝 Git 的 Ubuntu 開發機\u003C\u002Fli>\u003Cli>可登入 Launchpad 的帳號，且具備 SSH 金鑰存取權\u003C\u002Fli>\u003Cli>可存取 Foundations rustc Git 儲存庫的權限\u003C\u002Fli>\u003Cli>目標上游 Rust 發行版 tarball，例如 1.85.1\u003C\u002Fli>\u003Cli>目前 Ubuntu 發行版對應的 rustc 套件分支\u003C\u002Fli>\u003Cli>Debian 打包工具，包含 dpkg-dev 與 debhelper\u003C\u002Fli>\u003Cli>足夠的磁碟空間可放原始碼樹與兩份 orig tarball\u003C\u002Fli>\u003Cli>目標 Ubuntu 系列名稱，例如 noble\u003C\u002Fli>\u003Cli>若你的流程需要，準備好要填入的 bug 編號\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>Step 1: 複製 rustc 打包樹\u003C\u002Fh2>\u003Cp>目的：建立本機工作目錄，讓打包分支與產生的 tarball 放在同一層父目錄，符合 Ubuntu 維護 rustc 的目錄安排。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782410580619-4cjc.png\" alt=\"Ubuntu Rust 套件更新產物清單\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cpre>\u003Ccode>mkdir -p ~\u002Fwork\u002Frustc\ncd ~\u002Fwork\u002Frustc\ngit clone git+ssh:\u002F\u002Fgit.launchpad.net\u002F~canonical-foundations\u002Fubuntu\u002F+source\u002Frustc\ncd rustc\ngit remote add personal git+ssh:\u002F\u002Fgit.launchpad.net\u002F~YOUR_LAUNCHPAD_USERNAME\u002Fubuntu\u002F+source\u002Frustc\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>驗收：你應該看到父目錄下有一個 rustc 原始碼目錄，且 \u003Ccode>git remote -v\u003C\u002Fcode> 會同時列出 Foundations 遠端與你的個人遠端。\u003C\u002Fp>\u003Ch2>Step 2: 下載新的上游版本\u003C\u002Fh2>\u003Cp>目的：把舊的上游來源換成新的 Rust 發行版，讓套件從正確的版本基礎開始。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782410584507-hjry.png\" alt=\"Ubuntu Rust 套件更新產物清單\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>先下載新的上游 tarball，然後在打包樹中更新版本化來源檔案，暫時保留既有套件中繼\u003Ca href=\"\u002Fnews\u002Fanthropic-overseas-data-center-push-right-move-zh\">資料\u003C\u002Fa>不動。這一步的重點，是先把舊上游內容換成新版本，再進入補丁刷新與裁剪。\u003C\u002Fp>\u003Cp>驗收：你應該在原始碼樹中看到新的 Rust 版本，頂層版本檔也要對上目標版本，例如 1.85.1，而不是 1.84.0。\u003C\u002Fp>\u003Ch2>Step 3: 刷新 Ubuntu 補丁\u003C\u002Fh2>\u003Cp>目的：讓既有的 Debian 與 Ubuntu 補丁能在新 Rust 原始碼上乾淨套用，同時維持套件意圖不變。\u003C\u002Fp>\u003Cp>把補丁序列重新基底化或刷新，接著逐一檢查每個補丁是否因上游改動而衝突。需要時修正偏移、更新上下文行，若上游已經包含某個變更，就直接移除那個補丁。\u003C\u002Fp>\u003Cp>驗收：你應該能無 fuzz、無 rejected hunks 地套用完整補丁堆疊，而且套用後的樹狀內容可以從刷新後的來源成功建置。\u003C\u002Fp>\u003Ch2>Step 4: 裁剪 vendored 相依\u003C\u002Fh2>\u003Cp>目的：移除 Ubuntu 最終原始套件不需要的 vendored 檔案，讓套件來源更小、更乾淨。\u003C\u002Fp>\u003Cp>執行打包流程中的裁剪步驟，從原始碼樹中移除不必要的 vendored crates。Ubuntu 的流程還要求在裁剪後再抓一次來源，讓最後的 orig tarball 反映裁剪後的檔案清單。\u003C\u002Fp>\u003Cp>驗收：你應該看到不需要的 vendored crates 被移除，而剩下的來源樹只保留建置套件真正需要的檔案。\u003C\u002Fp>\u003Ch2>Step 5: 重建 orig tarball\u003C\u002Fh2>\u003Cp>目的：產生可上傳的最終來源產物，包含主 orig tarball 與對應裁剪結果的 vendor tarball。\u003C\u002Fp>\u003Cpre>\u003Ccode>debian\u002Frules get-orig-source\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>完成裁剪後，重新產生上游來源與 vendor tarball，讓套件精確記錄你要送進 archive 的內容。這一步會把工作樹轉成可上傳的原始套件產物。\u003C\u002Fp>\u003Cp>驗收：你應該在父目錄看到新的 \u003Ccode>.orig.tar.xz\u003C\u002Fcode> 與 \u003Ccode>.orig-vendor.tar.xz\u003C\u002Fcode>，而且內容要對上目標 Rust 版本與裁剪後的 vendor 集合。\u003C\u002Fp>\u003Ch2>Step 6: 建置並測試套件\u003C\u002Fh2>\u003Cp>目的：在送出上傳前，確認新版本化套件可以編譯，且打包中繼資料正確無誤。\u003C\u002Fp>\u003Cp>先在本機或乾淨的 PPA 進行原始套件建置，再執行適用於你這個發行版的 rustc 套件測試。接著檢查 changelog、版本字串與相依中繼資料，確認版本化套件名稱已更新，例如 rustc-1.85。\u003C\u002Fp>\u003Cp>驗收：你應該看到建置成功、套件測試通過，而且原始套件的版本化名稱與 changelog 都已反映新的上游版本。\u003C\u002Fp>\u003Ch2>常見錯誤\u003C\u002Fh2>\u003Cul>\u003Cli>把這份流程拿去更新本機 Rust 工具鏈。修法：開發者電腦請改用 rustup，這套流程只適用於 Ubuntu archive 打包。\u003C\u002Fli>\u003Cli>裁剪後忘了再重生一次來源。修法：重新執行 orig source 產生步驟，讓最終 tarball 與裁剪後的 vendor 清單一致。\u003C\u002Fli>\u003Cli>上游升版後還留著衝突補丁。修法：每個補丁都要對新版本刷新一次，已被上游吸收的就刪掉。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>接下來可以看什麼\u003C\u002Fh2>\u003Cp>如果套件已經能乾淨建置，下一步就可以整理 changelog、把套件上傳到對應的 Ubuntu archive，並延伸閱讀 Ubuntu 的 Rust 回補與補丁維護文件。\u003C\u002Fp>","這篇教你把 Ubuntu 的 rustc 套件升到新的上游 Rust 版本，最後產出可上傳的版本化原始套件、補丁更新紀錄與可驗證的建置結果。","ubuntu.com","https:\u002F\u002Fubuntu.com\u002Fproject\u002Fdocs\u002Fmaintainers\u002Fniche-package-maintenance\u002Frustc\u002Fupdate-rust\u002F",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782410580619-4cjc.png","tools","zh","a899f8a7-1b6c-4bee-8e84-fb690ff2a070",[17,18,19,20,21],"Ubuntu","Rust","rustc","Launchpad","Debian 打包",[23,24,25],"先同步上游 Rust，再刷新 Ubuntu 補丁與裁剪 vendored 相依，最後才重建 orig tarball。","驗收重點是版本號、補丁套用狀態、tarball 內容與本機建置結果四件事。","這份流程只適用於 Ubuntu archive 維護，不適用於一般開發機上的 Rust 安裝。",0,"2026-06-25T18:02:36.118696+00:00","2026-06-25T18:02:36.11+00:00","c3c88dd2-a940-438a-b359-0e5a24562273",{"tags":31,"relatedLang":34,"relatedPosts":38},[32],{"name":18,"slug":33},"rust",{"id":15,"slug":35,"title":36,"language":37},"update-rust-packages-ubuntu-releases-en","Update Rust packages for Ubuntu releases","en",[39,45,51,57,63,69],{"id":40,"slug":41,"title":42,"cover_image":43,"image_url":43,"created_at":44,"category":13},"c06a3011-4faf-4d89-831a-bd0f9c8d44b0","cinevva-web-game-engine-guide-stack-zh","Cinevva 把引擎選型變成堆疊","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782412410129-dcx7.png","2026-06-25T18:33:03.790829+00:00",{"id":46,"slug":47,"title":48,"cover_image":49,"image_url":49,"created_at":50,"category":13},"14d3774f-c3fb-4df1-9b92-260100b22e95","cursors-continue-buy-turns-copilot-into-platform-zh","Cursor 買 Continue 把 Copilot 變平台","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782411497790-fmiy.png","2026-06-25T18:17:50.419204+00:00",{"id":52,"slug":53,"title":54,"cover_image":55,"image_url":55,"created_at":56,"category":13},"14235e8e-b195-41fa-994b-11bea9e16942","prompt-versioning-belongs-in-production-zh","提示詞版本控管應該進生產環境，不該只放文件裡","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782406071974-d2w4.png","2026-06-25T16:47:23.368451+00:00",{"id":58,"slug":59,"title":60,"cover_image":61,"image_url":61,"created_at":62,"category":13},"6e7ee199-4aa2-4954-9891-4b18b04555b9","vllm-sglang-vmlx-local-llm-runtimes-zh","vLLM、SGLang、vMLX：本地 LLM 新選擇","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782397982700-oxni.png","2026-06-25T14:32:27.846267+00:00",{"id":64,"slug":65,"title":66,"cover_image":67,"image_url":67,"created_at":68,"category":13},"02bf30a9-fa24-4adc-952b-a5d1cb4bd080","best-paper-lists-turn-conference-noise-into-taste-zh","Best-paper 清單把噪音變成品味","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782392612502-p51d.png","2026-06-25T13:03:02.033956+00:00",{"id":70,"slug":71,"title":72,"cover_image":73,"image_url":73,"created_at":74,"category":13},"f95cff7f-49e3-43af-86f7-7371f9d754cb","sora-chart-loan-timing-choice-zh","SORA 圖表把貸款時機變選擇","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1782381796941-ji38.png","2026-06-25T10:02:50.036986+00:00",[76,81,86,91,96,101,106,111,116,121],{"id":77,"slug":78,"title":79,"created_at":80},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":82,"slug":83,"title":84,"created_at":85},"9b19ab54-edef-4dbd-9ce4-a51e4bae4ebb","mcp-in-2026-the-ai-tool-layer-teams-use-zh","2026 年 MCP：團隊真的在用的 AI 工具層","2026-03-26T08:01:46.589694+00:00",{"id":87,"slug":88,"title":89,"created_at":90},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":92,"slug":93,"title":94,"created_at":95},"05553086-6ed0-4758-81fd-6cab24b575e0","garry-tan-open-sources-claude-code-toolkit-zh","Garry Tan 開源 Claude Code 工具包","2026-03-26T08:26:20.068737+00:00",{"id":97,"slug":98,"title":99,"created_at":100},"042a73a2-18a2-433d-9e8f-9802b9559aac","github-ai-projects-to-watch-in-2026-zh","2026 必看 20 個 GitHub AI 專案","2026-03-26T08:28:09.619964+00:00",{"id":102,"slug":103,"title":104,"created_at":105},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":107,"slug":108,"title":109,"created_at":110},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":112,"slug":113,"title":114,"created_at":115},"bfdb467a-290f-4a80-b3a9-6f081afb6dff","aiml-2026-student-ai-ml-lab-repo-review-zh","AIML-2026：像課綱的學生實驗 Repo","2026-03-27T01:21:51.467798+00:00",{"id":117,"slug":118,"title":119,"created_at":120},"80cabc3e-09fc-4ff5-8f07-b8d68f5ae545","ai-trending-github-repos-and-research-feeds-zh","AI Trending：把 AI 資源收成一張表","2026-03-27T01:31:35.262183+00:00",{"id":122,"slug":123,"title":124,"created_at":125},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]