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

All*_*Lee 8 rust

我不小心把我的私人箱子发给了crates.io.我该如何删除它?我检查了文档,但似乎没有办法删除已发布的包.

Mat*_* M. 15

预防

为避免将来出现这种情况,请确保包括:

[package]
# ...
publish = false
Run Code Online (Sandbox Code Playgroud)

在你的箱子的Cargo.toml.见文档.

减轻

立即用以下方式猛拉箱子:

cargo yank --vers <your-version>
Run Code Online (Sandbox Code Playgroud)

这将防止任何其他箱子意外启动,具体取决于它.

如果任何秘密被意外发布(密码,密钥......),请考虑它们不再保密,并采取适当的措施用新的秘密替换它们.

切除

请联系crates.io帮助并解释情况,要求删除.

如果您的解释是有充分根据的,并且箱子没有被下载并因此依赖,那么他们就没有理由拒绝提供帮助.

请耐心等待; 一旦箱子被拉扯,无论如何都没有人可以依靠它开始,所以应该没有时间压力.给团队几天时间来实际执行删除.

如果由于某种原因事情是时间敏感的,你可以跳过IRC或话语,并抓住有权执行删除的人的注意.问,你会被引导到这样的人.

  • 就我而言,这只是愚蠢的 rust- 前缀,我不想在我的板条箱名称中使用它。我以正确的名称重新发布,帮助联系人 crates.io 回复了我的删除请求,称他们不会删除板条箱“除非出于法律原因或当板条箱违反我们的政策时,以尽可能保持注册表不可变”,这听起来很国际海事组织合理。像这样的大型存储库背后有很多东西,所以,我绝对尊重他们的政策。 (2认同)

Flo*_*mer 6

Crates.io政策在“删除”下是这样规定的:

\n\n
\n

我们将按照法律要求行事,并解决公然违反 Rust 行为准则的行为。[\xe2\x80\xa6] Crates.io 将尊重 Mozilla Legal\xe2\x80\x99s 关于托管内容的决定。

\n
\n\n

我建议发送邮件至help@crates.io我建议首先仅作为最后手段,添加故意违反行为准则以触发删除。

\n\n

编辑我同意这不是一个理想的情况,所以我提交了一个拉取请求,其中包含拟议的政策更改

\n

  • 作为主持人,建议违反行为准则的想法并不适合我。 (11认同)
  • @mcarton 不,yank 不是为了这个,正如文档所说的“例如,此功能并不是为了删除意外上传的机密。” (7认同)
  • @FlorianWeimer:仅仅因为没有正式记录的程序并不意味着管理员不是理性的人;这就是我们在这里谈论的 Rust 社区。我发现立即推荐核选择作为后备方案(违反法律和行为准则)是完全没有必要的。 (6认同)
  • @马修M。我说“作为最后的手段”(在修正拼写错误之后),正是出于这个原因。不幸的是,Crates.io 没有记录任何其他删除过程。 (3认同)
  • @Boiethios:仅仅因为它不违法并不意味着它是受欢迎的。 (3认同)
  • 因为没有其他删除程序。这是设计使然:[避免破坏其他包](https://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/)。相反,“cargo”允许您[猛拉箱子](https://doc.rust-lang.org/cargo/reference/publishing.html#cargo-yank)。 (2认同)

Fre*_*ios 5

包一旦发布就无法删除。但是,您可以将其拉出以将您的箱子标记为不可用:基本上,没有人会使用它,并且没有人或很少人会想看到其中的内容。此策略允许禁止任意破坏使用您的包作为依赖项的其他包。

如果您不想公开此箱中的代码或信息,请参阅其他答案