2025年06月14日

XBPS 0.60 发布

变更内容 (What’s Changed)

  • libxbps: 修复了在未解压状态下更新包的问题。duncaen

  • libxbps: 在解压所有包之前和之后运行所有脚本,以避免在半解压状态下运行任务。duncaen

  • libxbps: 修复了缺少末尾换行符时的配置解析问题,并移除了值中的末尾空格。eater, duncaen

  • libxbps: 如果配置文件中也定义了架构,则修复 XBPS_ARCH 环境变量。duncaen

  • libxbps: 修复内存泄漏问题。ArsenArsen

  • libxbps: 修复文件描述符泄漏问题。gt7-void

  • libxbps: 修复 libfetch 中的临时重定向问题。ericonr

  • libxbps: 修复了使用 replaces 替换包时自动/手动模式的设置方式。这使得通过过渡包正确替换手动安装的包成为可能。duncaen

  • libxbps: 修复了当依赖项处于锁定 (hold) 状态时不一致的依赖解析问题。如果被锁定的依赖破坏了包的安装或更新,xbps 现在将以 ENODEV (19) 退出,而不是直接忽略它,从而避免导致不一致的 pkgdb。#393 duncaen

  • libxbps: 修复了 XBPS_FLAG_INSTALL_AUTO 的问题,即在自动安装模式下安装新包时,正在更新的已安装包会被错误地标记为自动安装。#557 duncaen

  • libxbps: 重新安装包时,不要移除仍属于新包的目录。这避免了因目录重建而导致 runsv 出错的问题(runsv 保持着服务目录的打开句柄,如果被删除并重建会受影响)。#561 duncaen

  • xbps-install(1): 列出重新安装的包。chocimier

  • xbps-install(1): 在干跑 (dry-run) 模式下,忽略空间不足错误。chocimier

  • xbps-install(1): 修复了仓库锁定 (repo-locked) 的依赖可能会从非锁定仓库更新的漏洞。chocimier

  • xbps-fetch(1): 确保在遇到故障时以失败状态退出。duncaen

  • xbps-fetch(1): 修复在错误情况下打印未初始化内存的问题。duncaen

  • xbps-pkgdb(1): 移除 mtime 检查,因为它们在 fat 文件系统上不可靠,且 xbps 不再依赖 mtime 匹配包。duncaen

  • xbps-checkvers(1): 使用 --installed 参数时同时列出子包 (subpackages)。chocimier

  • xbps-remove(1): 修复干跑模式下清理缓存的不一致性。duncaen

  • xbps-remove(1): 允许通过指定两次 -O/--clean-cache 标志从包缓存中移除“已卸载”的包(缓存中仍然是最新的但不再安装的包)。#530 duncaen

  • xbps-query(1): --cat 现在可在仓库 (repo) 或 pkgdb 模式下工作。duncaen

  • xbps-query(1): --list-repos/-L 列出所有仓库,包括无法打开的仓库。chocimier

  • xbps.d(5): 更精确地描述 ignorepkgchocimier

  • libxbps, xbps-install(1), xbps-remove(1), xbps-reconfigure(1), xbps-alternatives(1): 添加 XBPS_SYSLOG 环境变量以覆盖 syslog 配置选项。duncaen

  • libxbps: 解决了由于 Void Linux 仓库中虚拟包数量增加导致的性能问题。#625 duncaen

  • libxbps: 将暂存数据合并到仓库索引 (repodata) 文件中。这允许从远程仓库下载暂存索引,而无需保持两个索引文件同步。#575 duncaen

  • xbps-install(1), xbps-query(1), xbps-checkvers(1), xbps.d(5): 添加了 --staging 标志、XBPS_STAGING 环境变量和 staging=true|false 配置选项。启用暂存允许 xbps 使用来自远程仓库的暂存包。duncaen

  • xbps-install(1), xbps-remove(1): 在应用事务之前,在事务摘要下方打印一次软件包安装和删除消息。#572 chocimier

  • xbps-query(1): 改进的参数解析允许在参数的任何位置输入软件包参数。#588 classabbyamp

  • xbps-install(1): 使干跑 (dry-run) 输出保持一致并支持机器解析。#611 classabbyamp

  • libxbps: 在路径中不进行波浪号 (~) 字符的 URL 转义,以获得与某些服务器更好的兼容性。#607 gmbeard

  • libxbps: 对软件包使用正确的 ASN1 签名类型。签名现在具有 .sig2 扩展名。#565 classabbyamp

  • xbps-uhelper(1): 如果指定了 -v/--verbose 标志,为 pkgmatchcmpver 子命令添加详细输出。#549 classabbyamp

  • xbps-uhelper(1): 支持许多子命令的多个参数,以提高流水线性能。#536 classabbyamp

  • xbps-alternatives(1): 为 -l/--list 添加 -R/--repository 模式,以显示仓库中软件包的替代方案。#340 duncaen

  • libxbps: 修复获取包和仓库时的永久 (308) 重定向问题。duncaen

  • xbps-remove(1): 忽略其删除文件时出现的文件未找到错误。duncaen

  • libxbps: preserve 软件包元数据现在在删除软件包时也受到尊重。duncaen

  • xbps-pkgdb(1): 新的 --checks 参数允许选择运行哪些检查。#352 ericonr, duncaen

完整变更日志 (Full Changelog): https://github.com/void-linux/xbps/compare/0.59.2...0.60