相关疑难解决方法(0)

通过货物安装箱子时出错:指定的包没有二进制文件

我正在尝试使用Cargo在我的系统(Arch Linux)上安装Rust crate.我可以搜索板条箱并找到我需要的东西,例如:

 $ cargo search curl | head -n3
    Updating registry `https://github.com/rust-lang/crates.io-index`
curl (0.3.0)             Rust bindings to libcurl for making HTTP requests
curl-sys (0.2.0)         Native bindings to the libcurl library
Run Code Online (Sandbox Code Playgroud)

当我尝试安装它时,我收到以下错误:

 $ cargo install curl
    Updating registry `https://github.com/rust-lang/crates.io-index`
error: specified package has no binaries
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我是否必须先从源代码构建它?如果Cargo没有安装它,它有什么意义?

 $ uname -a
Linux 4.6.1-2-ARCH #1 SMP PREEMPT Thu Jun 2 15:46:17 CEST 2016 x86_64 GNU/Linux
 $ rustc --version
rustc 1.9.0
 $ cargo --version
cargo 0.10.0 (10ddd7d 2016-04-08)
Run Code Online (Sandbox Code Playgroud)

installation rust rust-crates rust-cargo

26
推荐指数
1
解决办法
7881
查看次数

Cargo可以在不构建应用程序的情况下下载和构建依赖项吗?

有没有办法告诉Cargo安装和构建我的所有依赖项,但是没有尝试构建我的应用程序?

我想cargo install会这样做,但它实际上也一直在构建我的应用程序.我想进入一个状态,在那里cargo build可以找到所有依赖项,但无需触及/src目录.


我真正想要实现的目标:

我正在尝试为Rust应用程序构建Docker镜像,我想在其中执行以下步骤:

建立时间(docker build .):

  1. 导入已安装防锈工具的docker镜像
  2. 添加我的Cargo.toml和Cargo.lock文件
  3. 下载并构建所有依赖项
  4. 将我的源目录添加到图像
  5. 构建我的源代码

运行时间(docker run ...):

  1. 运行应用程序

我已经尝试了以下内容Dockerfile,但是指示的步骤也构建了我的应用程序(由于源目录尚未存在,当然会失败):

FROM jimmycuadra/rust

ADD Cargo.toml /source
ADD Cargo.lock /source

RUN cargo install # <-- failure here

ADD src /source/src
RUN cargo build

ENTRYPOINT cargo run
Run Code Online (Sandbox Code Playgroud)

我想将安装依赖项步骤与实际构建我的应用程序分开的原因是,如果我不更改依赖项,我希望Docker能够使用已安装和构建所有依赖项的缓存映像.因此,我不能ADD /src /source/src,直到安装依赖条件,因为当我改变我自己的代码,将无效缓存图像.

rust rust-cargo

18
推荐指数
4
解决办法
2173
查看次数

是否可以使用单个共享目录作为所有项目的 Cargo 目标目录?

Cargo 具有--target-dir指定存储临时或缓存构建工件的目录的标志。您还可以在文件中在用户范围内设置它~/.cargo/config。我想将其设置为单个共享目录以使维护更容易。

我看到一些工件目录在目标目录中带有一些唯一的(?)哈希值,这看起来很安全,但最终产品没有带有哈希值后缀,这对于名称冲突来说似乎并不安全。我对此不确定,因为我不是货运专家。

我尝试设置~/.cargo/config

[build]
target-dir = "./.build"
Run Code Online (Sandbox Code Playgroud)

我的初衷是使用项目的本地./.build目录,但不知何故 Cargo 将所有构建文件放入~/.build目录中。我很好奇会发生什么,我将每个项目的所有构建文件放入一个共享构建目录中。

到目前为止,它已经在多个不同的项目中运行良好,但仅适用于几个示例并不意味着它的设计或保证适用于每种情况。

就我而言,我对用户的所有工作区的所有项目使用单个共享构建目录。不仅仅是工作区中的项目。从字面上看,是用户每个工作空间中的每个项目。据我所知,Cargo 被设计为与本地target目录一起使用。如果它被设计为仅使用本地目录,则共享构建目录可能会导致一些问题。

  • 铁锈/货物 1.38.0。

rust rust-cargo

7
推荐指数
1
解决办法
3314
查看次数

使用 Docker 时如何在本地缓存 Rust 包?

当使用 Cargo 构建我的 Rust 项目时,每次触发时它都会下载并编译所有 crate cargo build

有没有办法缓存这些库并加速我的构建过程?

我在 Ubuntu 16.04 机器上运行它,并使用 Docker 来运行我的构建。我想需要一些安装目录来跨构建共享,这可以解决我的问题。

rust docker rust-cargo

5
推荐指数
0
解决办法
1293
查看次数

标签 统计

rust ×4

rust-cargo ×4

docker ×1

installation ×1

rust-crates ×1