如何从 crates.io 中删除已发布的 crate?

18

我不小心将我的私有 crate 发布到了 crates.io。我该如何删除它?我查看了文档,但似乎没有办法删除已发布的 crate。


我认为一旦发布就无法删除创建的箱子。 - Anurag Awasthi
3
预防措施是可能的:publish = false - E net4
3个回答

24

预防措施

为了避免将来发生这种情况,请确保您包括:

[package]
# ...
publish = false

在你的crate的 Cargo.toml 文件中看到 文档

缓解措施

立即使用以下命令撤销发布 crate:

cargo yank --vers <your-version>

这样可以防止其他的 crate 不小心依赖它。

如果不小心公开了任何秘密(密码、密钥等),请考虑它们不再是秘密,并采取适当措施用新的替换它们。

移除

联系 crates.io 上的 help 并解释情况,请求删除。

如果您的解释是有根据的,并且 crate 没有被下载和依赖,他们没有拒绝帮助的理由。

请耐心等待;一旦 crate 被撤下,无人能够再依赖它,因此几乎没有时间压力。给团队几天的时间来执行删除操作。

如果某些原因使问题变得紧急,请跳到 IRC 或 Discourse 上并引起有权执行删除操作的人的注意。询问后您将被引导到相关人员处。


2
在我的情况下,只是我不想在我的板条箱名称中使用愚蠢的 rust- 前缀。我已经重新发布了正确的名称,并且帮助联系 crates.io 回应了我的删除请求,称他们不会删除板条箱,"除非出于法律原因或当板条箱违反我们的政策时,为了尽可能保持注册表的不可变性",在我看来这听起来非常合理。像这样的大型仓库背后有很多事情发生,所以我绝对尊重他们的政策。 - Jeremy Chone

6
在“Removal”部分下,Crates.io政策表示:
我们将遵守法律要求,并解决Rust行为准则的严重违规行为。[...] Crates.io将尊重Mozilla Legal对托管内容的决定。
我建议首先发送邮件至help@crates.io,如果他们证明不合作,则升级至Mozilla Legal。仅在最后一种情况下,添加故意的行为准则违规以触发移除。 编辑:我同意这不是一种理想的情况,因此我提交了提议的政策更改拉取请求

10
作为一名版主,建议违反行为准则的想法让我感到不舒服。 - Matthieu M.
3
@MatthieuM,我之前说过“作为最后的手段”(在纠正错别字之后),就是出于这个原因。不幸的是,Crates.io 没有文档记录其他的删除程序。 - Florian Weimer
7
@mcarton,不,yank并不是用来做那个的,正如文档所说,“这个功能并不是为了删除意外上传的秘密文件而设计的,例如。” - Stargateur
6
@FlorianWeimer:仅因为没有官方记录的程序,并不意味着管理员不是理性的人;我们在讨论 Rust 社区。我认为立即推荐核选项(违反法律和行为准则)作为备选方案是相当不必要的。 - Matthieu M.
3
@Boiethios:仅仅因为某件事不是非法的,并不意味着它是受欢迎的。 - Matthieu M.
显示剩余4条评论

4
发布后无法删除一个 crate。但是,你可以使用yank将其标记为不可用:基本上没有人会使用它,也没有或很少有人想要查看内容。这个策略允许禁止其他使用你的包作为依赖项的 crate 任意破坏的情况发生。
如果你在这个 crate 中有你不想公开的代码或信息,请参考另一个答案

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接