deepin-terminal
传统deb
6.0.1 → 6.0.2
说明:与现有「忽略」机制一致 —— 被系统 apt-mark hold 的包在更新中心默认不可选中(复选框禁用),
并在软件上显示「已锁定 / hold」标签;同时该软件行提供「强制安装」开关,打开后该包可单独被选中并升级
(后端对 spark 源追加 --allow-change-held-packages)。其他功能(忽略、批量升级、进度)不变。
service.ts 构建 UpdateCenterItem 时,调用 apt-mark showhold(或 dpkg)检测该包是否被 hold,新增字段 held?: boolean;前端类型同步加该字段。ignored 一致——被 hold 的项的复选框 :disabled,toggleSelection/selectableItems/filteredItems/start() 中把它当作不可选(held === true 同 ignored === true 处理)。forcedTaskKeys: Set<string>;开关打开的项,即使 held 也允许被 selected。start() 时把 forced 标记带入 QueueInstallPayload。install-manager.ts 的 addInstallTask 收到 forceHeld: true 且 origin==="spark" 时,给 ssinstall 追加 --allow-change-held-packages(仅 spark 源;apm 源不涉及 apt hold)。processInstall.ts 区分下载/安装完成文案,并让 install-complete 的 success 真实反映 apt 退出码(ssinstall 放弃安装却返回 0 的问题需另行处理)。此项是否做,等你指示。