【问题标题】:Is it possible to install Cargo dependencies in the same directory as my project?是否可以将 Cargo 依赖项安装在与我的项目相同的目录中?
【发布时间】:2017-12-26 15:04:02
【问题描述】:

我正在使用 Docker 运行我的 Rust 项目。它很快,但是当我添加外部依赖项时出现问题。由于 Docker 每次运行“cargo run”命令时都会启动一个新的,因此它会再次从 Internet 获取外部依赖项。

虽然这与我遇到的 Docker 问题有关,但我不认为这仅限于 Docker,因为它可能是各种设置的问题。无论 Docker 或其他任何东西,我正在寻找的东西都很简单:将依赖项安装在 Rust 项目文件夹中,而不是像在 Node 包管理器中那样全局安装。

【问题讨论】:

  • 我绝不是 Docker 专家,但是在容器外部维护缓存并挂载它不是更容易、更惯用吗? cargo 下载的 crates 最终位于 ~/.cargo/registry 的某个位置。您可以将外部缓存挂载到 ~/.cargo 或类似的东西来缓存下载。
  • @Shepmaster 我说的是 Docker 构建。我在 Docker 构建之后运行货物构建。
  • 需要知道同样的事情,将 cargo fetch 所有依赖项放入 repo,以便开始对代码库进行审查/审核,因此很高兴发现这个问题已经被问到

标签: dependencies rust rust-cargo


【解决方案1】:

依赖项已经在每个项目中构建;在target 目录中。依赖源代码缓存在您的用户目录$HOME/.cargo

如果您希望不使用用户范围的下载缓存,您可以指定CARGO_HOME 环境变量并拥有一个单独的缓存:

CARGO_HOME=$PWD/cargo cargo build

当您将类比为 npm 时,请注意 Cargo 的解决方案基本上就是 yarn 所做的——下载的全局缓存和项目的特定依赖项构建/链接到 node_modules 目录。

【讨论】:

  • 我收到一个奇怪的错误“警告:虚假网络错误(剩余 2 次尝试):[2/-1] 无法映射。无法写入数据:无效参数”我不确定是否与Docker有关?
  • @OmarAbid 是的。如果您将错误消息输入 Google,我的第一个结果是 a comment 关于这在 macOS 上的 Docker 上是如何不起作用的。好消息是,正如您所要求的,问题和答案与 Docker 无关。 ^_^
  • 是的,我只是在读它。我将此标记为答案。抱歉给您添麻烦了:/
  • @OmarAbid 哈哈,别介意我,我只是脾气暴躁!如果我站在你的立场上,我会跟随 stackoverflow.com/questions/39661138,构建包含所有依赖项的容器,然后在我的本地代码上分层并构建。
  • 这意味着每次添加依赖项时我都必须“重新构建”。好在 docker 保存了前面的步骤,所以不会花那么长时间。但我想我现在对这个错误没有太多选择。
猜你喜欢
  • 2020-02-12
  • 2016-08-21
  • 1970-01-01
  • 2015-10-27
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
相关资源
最近更新 更多