[{"data":1,"prerenderedAt":368},["ShallowReactive",2],{"zh-cn:CommonContent:\u002Fnews\u002F2026-09-25-oma-1.28-preview":3},{"id":4,"title":5,"body":6,"categories":358,"date":360,"description":45,"extension":361,"home":362,"important":362,"meta":363,"navigation":362,"path":364,"seo":365,"stem":366,"__hash__":367},"zhCN\u002Fnews\u002F2026-09-25-oma-1.28-preview.md","小熊猫包管理 (oma) v1.28 更新预览",{"type":7,"value":8,"toc":349},"minimark",[9,17,23,26,29,32,36,39,69,72,98,109,113,119,123,130,139,142,145,148,159,166,169,172,208,211,220,223,234,264,277,286,290,293,302,330,336,345],[10,11,12],"p",{},[13,14],"img",{"alt":15,"src":16},"oma-1.28","\u002Fassets\u002Fnews\u002Foma-1.28.webp",[18,19,20],"blockquote",{},[10,21,22],{},"oma 1.28「助」您中秋快乐！",[10,24,25],{},"时隔三个月，oma 1.28 即将发布！",[10,27,28],{},"过去三个月，维护者们主要将工作集中在了针对现有功能和代码的整编修缮及初步的 oma-apt-pkg 实现上——换言之，oma 1.28 是一次技术性更新。当然，针对用户体验，本版还是带来了全新命令缺失 (command-not-found) 提示、多软件源并行下载、CI 环境支持修缮，并进一步增强了与 APT 行为的兼容性。",[10,30,31],{},"让我们来一起详细了解本版 oma 的新特性吧～",[33,34,35],"h2",{"id":35},"测试指南",[10,37,38],{},"安同 OS 可通过如下命令获取 oma 1.28 测试版更新：",[40,41,46],"pre",{"className":42,"code":43,"language":44,"meta":45,"style":45},"language-bash shiki shiki-themes github-light","oma topics --opt-in oma-preview\n","bash","",[47,48,49],"code",{"__ignoreMap":45},[50,51,54,58,62,66],"span",{"class":52,"line":53},"line",1,[50,55,57],{"class":56},"s7eDp","oma",[50,59,61],{"class":60},"sYBdl"," topics",[50,63,65],{"class":64},"sYu0t"," --opt-in",[50,67,68],{"class":60}," oma-preview\n",[10,70,71],{},"Debian、Ubuntu 及衍生版，Linux Mint、deepin 及 openKylin 用户可通过如下命令获取 oma（目前暂未区分测试源及稳定源，可直接获取 1.28 版更新）：",[40,73,75],{"className":42,"code":74,"language":44,"meta":45,"style":45},"curl -sSf https:\u002F\u002Frepo.aosc.io\u002Fget-oma.sh | sudo sh\n",[47,76,77],{"__ignoreMap":45},[50,78,79,82,85,88,92,95],{"class":52,"line":53},[50,80,81],{"class":56},"curl",[50,83,84],{"class":64}," -sSf",[50,86,87],{"class":60}," https:\u002F\u002Frepo.aosc.io\u002Fget-oma.sh",[50,89,91],{"class":90},"sD7c4"," |",[50,93,94],{"class":56}," sudo",[50,96,97],{"class":60}," sh\n",[10,99,100,101,108],{},"如果您在测试 oma 的过程中遇到问题或有任何建议，欢迎您来社区",[102,103,107],"a",{"href":104,"rel":105},"https:\u002F\u002Faosc.io\u002Fcontact",[106],"nofollow","各聊天群组","与我们联系反馈。",[33,110,112],{"id":111},"更清晰全新命令缺失提示","更清晰：全新命令缺失提示",[10,114,115],{},[13,116],{"alt":117,"src":118},"新命令缺失提示更注重引导和展示关键信息","\u002Fassets\u002Fnews\u002Foma-1.28-cnf.webp",[18,120,121],{},[10,122,117],{},[10,124,125,126,129],{},"您也许不知道，在安同 OS 中输入尚未安装或错误命令时收到的提示其实是 oma 负责的 (",[47,127,128],{},"oma command-not-found",") 。这一界面早在三年前的 oma 0.33.0 就已经引入，期间我们也有收到来自用户的反馈和批评，但一直苦于没能形成合适的设计，便没有修改过。",[10,131,132,133,138],{},"过去一月余，从几个 AI 提供的设计稿件中，经过断断续续的讨论，我们为 oma 1.28 实现了全新的命令缺失提示。新设计细化了提示模式：在命令精确匹配时，oma 会直接提示您需要安装的软件包；在有相似命令提示时，则会给出相关度最高的三个软件包（使用 ",[102,134,137],{"href":135,"rel":136},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FJaro%E2%80%93Winkler_distance",[106],"Jaro-Winkler 距离算法","），并引导您安装或查看其他匹配项。",[10,140,141],{},"那么，在软件包名匹配，而没有命令匹配的情况下呢？我们也在思考这个问题，兴许会在下一个更新中增加这一功能。",[33,143,144],{"id":144},"其他新特性",[10,146,147],{},"oma 1.28 还引入了两个非界面性的功能优化：",[10,149,150,151,154,155,158],{},"首先是多软件源并行下载行为优化。先前，oma 不论使用多少个软件源，均限制共使用 N 个下载线程（默认为 4，可通过 ",[47,152,153],{},"network_threads"," 配置项或 ",[47,156,157],{},"-t"," 参数自定义）。oma 1.28 修改了这一行为，在下载（如元数据刷新或软件包下载）过程中允许以软件源为单位开启 N × R 个下载线程，即如果开启了 5 个软件源，则默认可发起 20 个下载线程，更好地利用网络资源。",[10,160,161,162,165],{},"第二是 CI 变量支持。我们近期收到用户反馈，称 oma 在 Docker 等无 D-Bus 环境下难以设置非交互模式；因此，我们在 oma 1.28 引入了业界常用的 CI 变量（如 ",[47,163,164],{},"CI=1","）探测支持。从 1.28 开始，oma 会自动探测这一变量并自动调整交互和输出模式，使其更适合在 Docker、持续集成等环境下使用。",[33,167,168],{"id":168},"问题修复",[10,170,171],{},"本版 oma 还引入了一些问题修复和行为修正：",[173,174,175,187,190,201],"ul",{},[176,177,178,179,182,183,186],"li",{},"修复了元数据刷新 (",[47,180,181],{},"oma refresh",") 过程中不会尝试不同压缩格式的元数据的问题：先前 oma 只会尝试编目（如 ",[47,184,185],{},"InRelease","）中列出的第一个压缩格式的元数据文件，但若下载失败则会直接放弃；1.28 开始会综合编目文件中的不同压缩格式及 oma 的压缩格式优先级配置自动回落，行为更贴合 APT",[176,188,189],{},"解决了 systemd-logind(8) 不可用的环境下（如星霞 OS）鉴权工具判定不正确，导致无法提示鉴权的问题",[176,191,192,193,196,197,200],{},"解决了指定 ",[47,194,195],{},"--no-check-dbus"," 参数时仍尝试使用 ",[47,198,199],{},"systemd-run"," 鉴权，导致无 systemd-logind(8) 环境下无法鉴权的问题",[176,202,203,204,207],{},"修正了从 ",[47,205,206],{},"Acquire-By-Hash","（即基于哈希校验和索引元数据的软件源）软件源在获取元数据失败时未正确回落到传统（即非哈希校验和索引的元数据目录）路径的问题，解决部分配置不良的软件源 Adoptium 无法使用 oma 刷新的问题",[33,209,210],{"id":210},"注意事项",[10,212,213,214,219],{},"oma 1.28 移除了对 Debian 11（代号“Bullseye”）的支持。Debian 对该版本系统的支持",[102,215,218],{"href":216,"rel":217},"https:\u002F\u002Fwww.debian.org\u002FNews\u002F2026\u002F20260831",[106],"已于 2026 年 8 月 31 日终止","。",[33,221,222],{"id":222},"已知问题",[10,224,225,226,229,230,233],{},"Wolfram Engine (",[47,227,228],{},"wolfram-engine",") 在 Raspberry Pi OS 软件源中的元数据错误将安装后大小 (",[47,231,232],{},"Installed-Size",") 条目写作了带小数的数字，如：",[40,235,239],{"className":236,"code":237,"language":238,"meta":45,"style":45},"language-deb822 shiki shiki-themes github-light","Package: wolfram-engine\nVersion: 15.0.1+202608182322\nArchitecture: arm64\nInstalled-Size: 5316364.474609375\n","deb822",[47,240,241,246,252,258],{"__ignoreMap":45},[50,242,243],{"class":52,"line":53},[50,244,245],{},"Package: wolfram-engine\n",[50,247,249],{"class":52,"line":248},2,[50,250,251],{},"Version: 15.0.1+202608182322\n",[50,253,255],{"class":52,"line":254},3,[50,256,257],{},"Architecture: arm64\n",[50,259,261],{"class":52,"line":260},4,[50,262,263],{},"Installed-Size: 5316364.474609375\n",[10,265,266,267,276],{},"而这与 ",[102,268,271,275],{"href":269,"rel":270},"https:\u002F\u002Fwww.debian.org\u002Fdoc\u002Fdebian-policy\u002Fch-controlfields.html#installed-size",[106],[272,273,274],"em",{},"Debian Policy Manual"," 第 5.6.20 节","中提出的安装后大小数字“应将一般文件和符号链接大小的综合取整至 1KiB”的要求相悖，这也直接导致了 oma 无法解析对应元数据条目的问题。",[10,278,279,280,285],{},"目前遇到该问题的用户已将这一问题",[102,281,284],{"href":282,"rel":283},"https:\u002F\u002Fcommunity.wolfram.com\u002Ft\u002Flinux-error-invalid-non-integer-installed-size-in-wolfram-engine-raspberry-pi-package-metadata\u002F27498",[106],"报告给 Wolfram 社区","，有待答复。针对这一问题，我们可能会给 oma 引入对应的规避，仿照 APT 行为直接截断小数点后的数字。",[33,287,289],{"id":288},"技术性重构与-ai","技术性重构与 AI",[10,291,292],{},"oma 是社区首个大量使用 AI 辅助开发的项目，而 1.28 也是第一个由 AI 辅助开发的特性更新。",[10,294,295,296,301],{},"长期以来，oma 是由",[102,297,300],{"href":298,"rel":299},"https:\u002F\u002Fgithub.com\u002Featradish",[106],"宇宙眼镜人 (Mag Mell)","个人主导开发的项目，虽然时有社区贡献者和新朋友报告问题、实现功能，但个人推动技术性重构和重大功能需要大量动力。面对复杂的技术问题和架构调整需求，单人项目往往面临着“不敢想”和“没动力”，导致技术工作不断延后的问题。",[10,303,304,305,310,311,314,315,318,319,322,323,325,326,329],{},"如宇宙眼镜人在 ",[102,306,309],{"href":307,"rel":308},"https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1TFg36uE6o\u002F?t=3725",[106],"AOSCC 2026 上介绍","的，1.28 开发周期是 oma 大重构的开始。1.27 到 1.28 开发周期内最核心的技术实现便是 ",[47,312,313],{},"oma-apt-pkg","，这是 oma 尝试替代长期依赖的 ",[47,316,317],{},"libapt-pkg"," 的开始，旨在提高多线程安全性、性能和引入更强的依赖解析控制，也将在未来作为解决安同 OS 长期存在的“滚挂”问题的手段之一；本版的 ",[47,320,321],{},"oma show"," 功能已切换到 ",[47,324,313],{}," 实现。此外，1.28 还清理了多个功能板块（如 ",[47,327,328],{},"oma-console"," 实现的终端内容渲染功能、颜色输出控制系统和进度条等）的代码清理，并增强了 APT 兼容性和行为规范化（如基于对 APT 实现的考据，实现更规范的元数据时间日期格式解析）。",[10,331,332,333,335],{},"这些内容作为用户也许难以察觉，但 oma 作为安同 OS 的关键组件、部分 Debian 系发行版用户喜爱的增强工具和 APT 的替代品，需要不断解决兼容性和正确性问题、考据 APT 的行为。而要增强用户体验和系统集成度，恰恰也需要技术和架构性工作来支撑。1.28 到 1.29 相信也会是一个重重构、轻特性的开发周期，其中 ",[47,334,313],{}," 对元数据刷新、依赖解析和安装过程的接管，以及 amo 集成仍会是关注重点。",[10,337,338,339,344],{},"当然，以上一切都是在遵守",[102,340,343],{"href":341,"rel":342},"https:\u002F\u002Fwiki.aosc.io\u002Fzh\u002Fcommunity\u002Fai-tool-usage-and-disclosure-guidelines\u002F",[106],"《安同开源社区 AI 辅助工具使用及披露约定》","约定下进行的，希望 oma 能成为在 AI 的帮助下推动工作、在人类的监督下保障质量的实践范例…… 也希望以后的 PR 正文和注释能更有人味（笑）。",[346,347,348],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}",{"title":45,"searchDepth":248,"depth":248,"links":350},[351,352,353,354,355,356,357],{"id":35,"depth":248,"text":35},{"id":111,"depth":248,"text":112},{"id":144,"depth":248,"text":144},{"id":168,"depth":248,"text":168},{"id":210,"depth":248,"text":210},{"id":222,"depth":248,"text":222},{"id":288,"depth":248,"text":289},[359],"advisories","2026-09-25","md",true,{},"\u002Fnews\u002F2026-09-25-oma-1.28-preview",{"title":5,"description":45},"news\u002F2026-09-25-oma-1.28-preview","vW5O8wNcaUInlucl_740_7MB4zFxviRDGxKqWuFVgrM",1790344826363]