This Week in Package Management: 11 July 2026This Week in Package Management: 11 July 2026
This Week in Package Management: 11 July 2026
Andrew Nesbitt
本周快报第八期,内容来源于包管理器 OPML 订阅源合集,以及我在 Mastodon 上发布或转发的动态。
版本发布
npm 12.0.0 已发布。allow-git 和 allow-remote 现在默认设为 none,因此安装 git 依赖项或用户提供的 tarball URL 需要明确同意。npm shrinkwrap 已被移除,项目根目录或依赖 tarball 中的 npm-shrinkwrap.json 不再受支持。未知的 .npmrc 键、未知的 CLI 标志和缩写标志现在会报错而不是警告,root preinstall 会在依赖项安装之前运行,并且 npm adduser、star 和 unstar 已被移除。
pnpm 11.10 新增了 _auth 设置,该设置将注册表凭证作为单一的以 URL 为键的结构,因此 CI 可以通过 pnpm_config__auth 传递它们,从而避免了导致每个注册表环境变量失效的 shell 引号问题。它还添加了 pnpm prefix 和 pnpm issues,并且 pnpm self-update 现在可以安装 v12,即 Rust 移植版。随后发布的 11.11 版本引入了 pnpm access 命令,用于管理注册表可见性、MFA 要求和团队访问权限,并允许 git 托管包的 allowBuilds 条目通过仓库 URL 进行匹配,而无需固定 commit hash。
uv 0.11.28 通过更新的 astral-async-zip 加强了 ZIP 处理以防范解析器差异,因此 uv 现在可能会拒绝以前接受的格式错误的 wheel,这与上周的 tar 处理工作相呼应。之前的 0.11.27 版本则进行了解析器性能优化:SIMD TOML 解析、驻留的 requires-python 指定符以及缓存的锁标记。
Go 1.26.5 是一个安全版本,修复了 crypto/tls 和 os 中的问题,并对编译器、运行时和 go 命令进行了错误修复。
Rust 1.97.0 稳定了 Cargo 配置中的 resolver.lockfile-path,用于指向只读源目录之外的 lockfile,并稳定了 build.warnings,用于在不使用 -Dwarnings 导致构建缓存失效的情况下将警告转为错误。cargo clean 现在会拒绝看起来不像 Cargo target 目录的 --target-dir。
winget 1.29 添加了一项实验性的源优先级功能:可以通过 winget source add 或 source edit 为源分配数字优先级,当搜索在多个源中匹配到包时,优先级较高的源会排在前面。
Spack 1.2.1 修复了在 forkserver 下运行时新安装程序的挂起问题,并恢复了 macOS 上的求解器性能。
CocoaPods 1.17.0 为 pod repo push 添加了 --no-lint 选项,以便在发布时跳过 lint 阶段,并更新了 ruby-macho 以检测可合并的库。
Hex 2.5.1 在 mix.exs 的 :hex 块中以及作为环境变量添加了 ignore_advisories 和 ignore_retirements,因此已确认的 CVE 和弃用项可以只列出一次,而 mix hex.audit 会单独报告它们且不会失败。可以通过任何别名标识符来忽略安全公告。
mise 2026.7.4 将 mise bootstrap 和 mise dotfiles 从实验模式中毕业,因此系统包、仓库、用户服务和 shell 激活现在无需 MISE_EXPERIMENTAL 即可工作。随后发布的 2026.7.5 版本在 git worktree 之间共享配置信任,因此信任一次仓库即可覆盖所有的 git worktree add checkout,并修复了 npm 12 上基于 npm 的工具。
同样发布的还有:Homebrew 6.0.9, RubyGems 4.0.16, Bundler 4.0.16, Cargo 0.98.0, asdf 0.20.0, Hatch 1.17.1, Hatchling 1.31.0, pixi 0.72.2, Yarn 4.17.1, Deno 2.9.2, Helm 4.2.3, Helm 3.21.3, Podman 6.0.1, Nix 2.34.8, Gradle 9.7.0-M3, Maven 3.10.0-rc-1, Renovate 43.258.0, Dependabot Core 0.385.0, Go 1.27rc2。
安全
opam 2.5.2 修复了 CVE-2026-57825:一个包可以通过包含指向外部目录的符号链接在系统上的任何位置安装文件,从而绕过直接外部路径触发的用户提示。
pnpm 11.11.0 和 10.34.5 修复了两个路径穿越漏洞:精心构造的 pnpm-lock.yaml 依赖键可能会将包内容写入虚拟存储之外,而清单名称为作用域穿越(如 @x/../../../<path>)的依赖项在安装期间即使使用 --ignore-scripts 也可能被写入 node_modules 之外。
ORAS 1.3.3 引入了 oras-go 2.6.2 以修复 CVE-2026-50163:带有相对硬链接目标的精心构造的 OCI 制品可能会使 oras pull 链接到调用者工作目录中的文件,而不是解压目录。
文章
Packagist 上的不可变版本(Packagist 博客)是 Composer 供应链系列的下一篇文章:一旦发布了稳定版本,其 git 引用现在就会被固定,重新打标签的尝试将被阻止并向维护者发送电子邮件,而删除操作将变为软删除,并带有公开的透明度日志。
《你不应该信任 Trusted Publishing》(William Woodruff)一文认为,Trusted Publishing 是 CI 和注册表之间的身份验证机制,而不是包安全的信号,PyPI 正是出于这个原因才将其排除在徽章 UI 之外。
其他动态
Trail of Bits 发布了一份关于 PyPI 透明度日志的提案:一个仅追加的日志,记录索引提供的每个分发文件,并通过 Simple API 公开包含证明,这样如果被入侵的索引向不同用户提供不同的制品,就会变得可检测。目前有一份 PEP 草案、一个测试日志和源代码。
EuroPython 2026 打包峰会的日程已公布,将于 7 月 13 日在克拉科夫举行,公开笔记和后期主题提案征集仍然开放。
《开源安全:Rust 基金会维护者基金》(Josh Bressers)是一期播客对话,与 Lori Lorusso 和 Niko Matsakis 讨论了该基金的结构以及资金的去向。
Nix 基金会正通过 Open Collective 为文档团队筹集资金,为从事新手引导和参考材料工作的付费贡献者设定了逐项列出的月度和一次性筹款目标。
Git 2.55 新增了 git history fixup <commit>,用于修改较早的提交并一步重放其后代提交,还增加了增量多包索引重打包、Linux 上内置的 inotify 文件系统监视器,以及用于并发运行钩子的 hook.<name>.parallel 配置。
《超越合规性:关于 GitHub SBOM 完整性和一致性的一项大规模研究》(Bhuiyan 等人,arXiv)衡量了 GitHub 在各个生态系统中自动生成的 SBOM,发现版本和许可证的覆盖率因语言而异,以至于其可靠性取决于你处于哪个生态系统。
git-pkgs
本周我为六个仓库打了标签:
下周的链接请发送至 @[email protected]。
需要完整排版与评论请前往来源站点阅读。