返回 2026-06-07
🛠 工具 / 开源

本周包管理动态:2026 年 6 月 6 日This Week in Package Management: 6 June 2026

nesbitt.io·2026-06-06

这是一份涵盖全球包管理生态系统的每周汇总报告,收集了最新的版本发布、安全公告以及相关技术文章。它为开发者和系统管理员提供了包管理领域最新动态的一站式追踪服务。通过整合不同生态系统的更新信息,读者可以快速了解影响项目依赖和系统稳定性的关键变更。该周报是保持技术栈更新和防范供应链安全风险的重要参考资料。

Andrew Nesbitt

本周盘点是第三期,内容取自包管理器 OPML 订阅源集合以及我在 Mastodon 上发布或转发的动态。本周 OPML 新增了五个项目博客订阅源和 NixOS 公告订阅源。

安全

Bundler 4.0.13 引入了 Cooldown(冷却期)功能,这是一个可配置的时间窗口,它会暂缓解析发布不足 N 天的 gem 版本,从而让新发布的恶意版本度过这段窗口期后才会被 bundle install 选取。配套的 RubyGems 4.0.13 版本则阻止了 gem 解压时通过预先存在的符号链接逃逸出目标目录的行为。

Packagist 供应链系列文章仍在继续。《关闭 Composer 的下载回退路径》探讨了原本为提高弹性而设计的 dist-to-source(分发到源码)回退机制,是如何被用来获取与 Composer 预期不同的构建产物的。《为每个 Composer 版本拦截恶意软件下载》介绍了 Private Packagist 如何在依赖策略框架出现之前,针对早于 2.10 的 Composer 版本强制执行恶意软件下载拦截。《在组织内强制使用安全的 Composer 版本》则通过允许 Private Packagist 组织限制可以拉取代码库的 Composer 客户端版本,并在开发者的终端中报错以拒绝旧版客户端,从而形成闭环。

全新的 HexDocs URL:按包划分的子域名将公开的 Elixir 和 Erlang 包文档从 hexdocs.pm/package 迁移至 package.hexdocs.pm,并将组织文档迁移至一个单独的可注册域名 (hexorgs.pm)。现在,浏览器的同源策略将各个包相互隔离,这解决了 Hex 近期安全审计中发现的问题,即文档页面在共享源下运行维护者控制的 HTML、CSS 和 JavaScript。

Homebrew 的 Tap-Trust 文档描述了非官方 tap 加载方式即将发生的一项变更。目前,任何已安装的 tap 默认都会提供 formula、cask 和命令。在 Tap-Trust 机制下,tap 需要通过 brew trust user/repo(或针对单个 formula 的变体命令)获得明确批准,Homebrew 才会执行其代码。此变更将成为 Homebrew 6.0.0 或 5.2.0(以先发布者为准)的默认行为。设置 HOMEBREW_REQUIRE_TAP_TRUST=1 可提前启用该功能。

Composer 2.10.1 修复了打开编辑器时的 shell 转义问题,并在 self-update --rollback 恢复备份的 phar 文件前验证其签名。

NuGet.Server 3.4.3 修复了包上传端点上的一个未授权拒绝服务漏洞 (CWE-696/CWE-400),方法是将 API 密钥验证移到了文件 I/O 和包处理(这些原本是先执行的步骤)之前。

版本发布

Yarn 4.16.0 为 npm 的分阶段发布队列添加了 yarn npm stage 命令,并增加了对 oxc 格式化工具和代码检查工具的编辑器 SDK 支持。

Hatch 1.17.0 弃用了 hatch fmt,转而采用带有 code、fmt 和 types 子命令的新 hatch check 命令组。类型检查已连接至 Pyrefly。该版本还新增了用于锁定环境的 hatch env lock 命令,并将 HTTP 客户端从 httpx 切换为 httpx2。

NixOS 26.05 “Yarara” 是 Nixpkgs 和 NixOS 最新的半年度版本。自 25.11 以来,Nixpkgs 方面新增了 20,442 个新包,更新了 20,641 个包,并移除了 17,532 个包。这也是支持 x86_64-darwin 架构的最后一个版本,因为上游 Apple 已经弃用了该平台。

继 MSYS2 项目在 3 月份弃用 MINGW64 之后,Stack 3.11.0.1 RC 版本将默认的 64 位 Windows MSYS 环境从 MINGW64 切换为了 CLANG64。

Dependabot Core 0.380.0 通过 PR #14882 为 bun 添加了 lockfile 生成器。同一版本在执行 pnpm 安全更新时传入了 --config.minimumReleaseAge=0 参数,从而绕过了 pnpm-workspace.yaml 中的冷却时间设置,确保安全 PR 不会被发布时间策略所阻塞。

mise 2026.6.0 在 node.corepack=true 且 node.npm_shim=false 时,将 npm 纳入 Corepack 管理,使得 Corepack 管理的 npm shim 与 yarn 和 pnpm 并列,并将 aqua 的 Windows 扩展处理机制与上游对齐。

Windows Package Manager 1.29.250 是 1.29 版本的候选发布版(RC)。现在可以为源分配数字优先级(实验性功能)。当多个源提供相同的包时,安装过程将直接优先选择高优先级的源,不再弹出提示。导出和导入的往返操作现在支持覆盖和自定义安装程序参数,同时 MCP 服务器新增了升级操作。

同期发布的还有:Cargo 0.97.1、uv 0.11.19、pip 26.1.2、Conda 26.5.2、Mamba 2.8.0、pixi 0.70.1、pnpm 11.5.2、pipx 1.14.0、Deno 2.8.2、Homebrew 5.1.15、Docker Engine 29.5.3、Go 1.25.11、Go 1.26.4、sbt 2.0.0-RC14、cargo-semver-checks 0.48.0。

文章

《钱从哪里来?》(Daniel D. Beck)汇总了他所知能让技术文档作者和维护者获得报酬的所有渠道,涵盖了从基金会资助和专职技术作者岗位,到文档定制外包和打赏机制等各类方式。

《OSPO 如何衡量开源软件资金的影响》(Dawn Foster)探讨了在预算收紧、且受资助项目无法直接转化为产品收入时,OSPO(开源项目办公室)可以在内部提出的论证。Dawn 还在《IEEE Computer》上发表了一篇长达四页的文章,阐述治理选择如何塑造开源项目的可持续性,目标读者为项目负责人。

Rust 基金会维护者基金于本周启动,该项目以“驻场维护者”(Maintainer in Residence)计划的形式,通过捐赠资金池向现有的 Rust 项目维护者发放报酬。

《使用 pipdeptree 渲染 lockfile》是一篇针对 from-lock 子命令的新教程,该命令可在离线状态下打印 PEP 751 lockfile 的依赖树,而无需执行任何解析或安装操作。

《Reproducible Builds 2026 年 5 月报告》以 Debian 的一项决定作为头条:Debian 要求迁移至下一个发行版(代号为“forky”)的软件包必须具备可重现性,从而阻止不可重现的软件包进行版本迁移。

论文

《在黑暗中摸索:为什么对组件的共识至关重要》(Reichmann 等,arXiv)发现,针对同一款软件,不同的 SBOM 生成器对于什么才算作一个组件存在分歧,这导致了供应链漏洞识别过程中出现盲区。

《PyFEX:通过弹性且穷举的路径探索揭露隐蔽的 Python 威胁》(Wang 等,arXiv)是一款针对 Python 的强制执行引擎,它能够在运行中途从崩溃中恢复,并成功标记了 PyPI 上 212 个此前未知的恶意上传包。

其他动态

crates.io 的 PR #13855 提议在 crate 页面上突出显示标准库的替代方案:在 crate 页面添加横幅,并在依赖列表中添加标记,两者均链接到可替代该 crate 功能的 std API。首批支持的库包括 lazy_static、once_cell、matches 和 num_cpus。该 PR 还引用了我撰写的《大家都该从 npmx 借鉴的功能》一文作为灵感来源之一。

请将下周的链接发送至 @[email protected]。

需要完整排版与评论请前往来源站点阅读。