摘要
- PyPI 将 yank 说明为删除之外的非破坏性选择;管理界面目前针对整个 release,而索引可在文件链接上呈现状态。
- PEP 592 的
data-yanked可被取消或再次设置;它不是某次解析、下载或安全结论的记录。 - 重要判断应把仓库状态、依赖约束、解析器选择、获得的文件及部署证据分开保存。
“已撤回”很容易被读成“已被完全收回”。PyPI 给出的语境更窄:版本损坏、不能安装、违反自身兼容性承诺或含有安全漏洞,都是维护者可以考虑 yank 的原因。原因是可能性清单,不是该标记自动携带的判定。即使维护者写下说明,那也是供下游理解的背景,不能代替漏洞确认、事故调查或对每个使用者的指令。
仓库层也有明确边界。PyPI 当前的管理动作按整个 release 进行;PEP 592 则在 Simple API 的链接上定义 data-yanked。同一动作可以在客户端看到文件层的信号,但这不产生删除凭据、发布者授权变更,或某台机器实际获得了文件的证明。JSON API 的 yanked 和 yanked_reason 同样只是索引观察。
真正的选择发生在另一层。PEP 592 要求安装器在存在满足约束的未 yank 版本时忽略 yanked 版本,也允许实现即使没有可用替代也拒绝它。PyPI 对精确版本的说明不能抹去客户端政策、锁文件、索引视图和时间的影响。要说某个环境选择了什么,至少需要当时的约束或锁、工具版本和设置、可见的索引、警告、最终文件哈希。当前的标记无法倒推过去的解析过程。
删除也不能与 yank 混为一谈。PyPI 明确说 yank 不释放存储;删除在无管理员干预下不可逆,并可能破坏固定版本的下游依赖。因此“文件仍在”不是认可,“标记为 yanked”也不是到处消失。它既不能证明某个包安全,也不能证明不安全。
Daniel Kade 建议保留五段收据:带时间的项目/版本和索引观察;精确的依赖约束或锁;解析器的版本、决定、警告和文件哈希;独立的删除、发布权限、漏洞或事故证据;以及独立的部署清单。敏感名称可以保护,但连接关系必须有证据。
来源
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
