本周包管理动态:2026年5月23日This Week in Package Management: 23 May 2026
该文汇总了全球包管理系统领域的最新动态,包括软件发布、安全公告和技术文章。内容涵盖主流包管理器(如npm、PyPI、Homebrew)的更新,以及依赖漏洞修复案例。文中提及多个知名项目的版本升级(如Python 3.14.0-rc1)和CVE漏洞披露(如npm包供应链攻击事件)。适合开发者追踪生态变化和安全补丁。
Andrew Nesbitt
我正在测试一个基于软件包管理器 OPML 源收集以及我在 Mastodon 上发布或推广的内容的周度汇总。
npm 将在 v12 预发布版本中完全移除 npm-shrinkwrap.json,包括该命令、配置别名和加载器;项目根目录的 shrinkwrap 需要重命名为 package-lock.json,现在打包锁定树需通过 tarball 实现,意味着 bundleDependencies。
安全
uv 0.11.15 修复了两个值得修补的问题:TAR 解析器的差异性和入口点逃逸脚本目录的问题。随后发布的 0.11.16 中,uv audit 开始拒绝与已知恶意记录匹配的锁定安装。
Ruby 4.0.5 随附了 CVE-2026-46727 的修复;使用 4.0.0 到 4.0.4 版本的用户应更新。
GitHub 确认本周约有 4,000 个内部仓库遭泄露。《The Register》报道,攻击入口是恶意的 VS Code 扩展,并归因于 Shai-Hulud 蠕虫背后的 TeamPCP 组织。
Nx 团队发布了 Nx Console v18.95.0 被入侵的事后报告,同样是恶意的 VS Code 扩展。值得注意的是,受影响贡献者的 .npmrc 设置了最小发布年龄,但其 pnpm 版本过旧,导致静默忽略未知密钥,使得 77 分钟前的恶意包得以通过。
dependabot-core 指出,攻击者可通过控制版本时间戳绕过冷却期设置,这适用于大多数情况。若你曾将其视为安全控制而非噪音过滤器,这一点值得了解。
发布
Deno 2.8 使 npm 成为默认注册表:deno add 和 deno install 现在将未加前缀的名称视为 npm 包,jsr: 变为需主动选择的选项。它还提供了 deno pack,可将 Deno 或 JSR 项目转换为可 npm 发布的 tarball,以及 deno ci、deno why、deno audit fix、类似 pnpm 的 catalog: 协议、可选的 node_modules 提升、以及 .npmrc 中的 min-release-age 支持。这一列表显然指明了发展方向。
pnpm 11.2.2 增加了预览功能,只需在 configDependencies 中添加 @pnpm/pacquet,即可将 pnpm install 的材料化阶段交由 Rust 端口处理。解析仍由 pnpm 完成;pacquet 仅从锁文件中获取和链接。
conda 26.5.0 实现了对 CEP 164–166 中条件依赖、可选依赖组和变体标志的解析支持。
Composer 2.10.0-RC2 已发布并征求测试者;运行 composer self-update --preview 试用,--stable 则退出稳定版。
Homebrew 5.1.12 添加了 brew exec,一种类似 npx 的启动器,用于查找哪个公式提供可执行文件并运行它。随后发布的 5.1.13 在审计中加入了 RubyGems 许可证检查。
RubyGems 和 Bundler 4.0.12 整理了 BUNDLE_VERSION 的处理方式,并在间接依赖可能与直接依赖混淆时添加警告。
Verdaccio 6.7.0 将 Node 基准线提升至 24 并开始对较旧运行时发出软警告。PDM 2.27.0 对 Python 也做了同样操作,现要求最低版本为 3.10。
文章
Go 团队宣布推出官方 pkg.go.dev API:模块、版本、符号、漏洞和搜索的无状态 GET 端点。无需再抓取 HTML。
npm 推出了分阶段发布和新安装源控制。npm stage publish 上传至待处理队列,需经具有 2FA 挑战的人工审核才能推广,之后他人方可安装。同时,--allow-file、--allow-remote 和 --allow-directory 加入 --allow-git,允许仅锁定注册表来源的安装;v12 中 --allow-git 默认切换为无。
NuGet 博客记录了 .NET 10 中的包修剪功能,该功能会剔除共享框架已提供的传递性包,并从漏洞报告中删除对应的冗余信息。
Gábor Bernát 在 PyCon US 上分享了 Python 打包峰会总结,概述了今年会场内的主要讨论议题。
《ACM Queue》一篇由 Bloomberg 撰写的文章指出,企业需从被动使用转向主动管理所依赖的开源项目。
PHP 基金会宣布获得 Alpha-Omega 资助后成立了生态系统安全团队;与此同时,Packagist 已为 Private Packagist 提供恶意软件过滤列表支持,并计划在 Composer 2.10 中上线。
Trail of Bits 总结了 zizmor 工具的多个月贡献,而我本周提交的一份关于 Actions 的 typosquatting(拼写混淆)审计报告也已合并。
其他动态
Catherine 开发的 pypitoken-cli 可从命令行将账户级 PyPI 令牌缩小为仅限特定包的权限范围。
diffify 可对比 CRAN 或 PyPI 两个版本间的差异:函数签名、依赖项、命名空间导出;而“Listen to PyPI”则延续维基百科听音传统,每当索引上传新包时播放音符提示。
Anil Madhavapeddy 正在复兴 OCaml 系统打包工作,并撰写相关整合说明文档。
GitHub 事件引发 VS Code 社区提出对扩展自动更新添加冷却期的开放议题;在处理前,建议先阅读 Dependabot 绕过方案的相关分析。
git-pkgs 相关更新
我发布了 git-pkgs v0.16.1,同时 git-pkgs 组织下的多个仓库也更新了版本:brief、proxy、manifests、registries、resolve、forge、enrichment、spdx、outline 和 gitignore。
下周链接请发送至 @[email protected]。
需要完整排版与评论请前往来源站点阅读。