首页 > 解决方案 > 如何在 3 中安装 Rust crate?

问题描述

当我运行一个使用这个 in3-rs 板条箱的程序时,我得到一个错误。我希望安装它,因为我按照这里的说明进行操作:https ://crates.io/crates/in3

我安装了此处描述的要求:https : //crates.io/crates/in3 我使用的是 Ubuntu 18、cargo 1.49.0 和 rustc 1.49.0。我尝试分别安装 in3、in3-rs、in3-sys 和 async-std(使用 sudo cargo install )。每次我收到一条消息说“错误:指定的包......没有二进制文件”

我运行了这个命令:cargo install --list

我看到了这个:

ripgrep v12.1.1:

rg

我尝试使用各种不同的 Cargo.toml 文件。但是要安装 ripgrep crate,我不需要 Cargo.toml 文件。

我运行了这个命令:sudo cargo install in3

但我看到了这个:

[sudo] jdoe 的密码:更新 crates.io 索引错误:指定的包in3 v0.1.7没有二进制文件

输出中返回相关版本。我的 Ubuntu 服务器可以访问互联网。我用谷歌搜索了这个问题,我认为应该问关于 Rust 的问题。

我尝试了此链接具有的 Cargo.toml 文件内容的三个建议。

当我的 Cargo.toml 文件有这个节in3 = "0.1.7"时,错误是可重现的。

当我的 Cargo.toml 文件有这两行时,我遇到了同样的错误:

[dependencies]
in3 = "0.0.2"

当我的 Cargo.toml 文件包含以下三行时,该错误第三次重现:

[dependencies]
async-std = "1.5.0"
in3 = "0.2.0"

为了重现问题,我运行了“sudo cargo install in3”

我还尝试sudo cargo install将两个带有 [dependencies] 节的 Cargo.toml 版本一起使用(没有安装参数)。但是我在这些尝试中遇到了这个错误:

错误:无法解析清单/opt/in3-3.1.2/rust/Cargo.toml

原因:此虚拟清单指定了一个 [dependencies] 部分,这是不允许的

我尝试将其用作 Cargo.toml (以及没有 [dependencies] 部分的另一个版本):

[package]
name = "in3"
version = "0.2.0"
edition = '2018'

[dependencies]
async-std = "1.5.0"
in3 = "0.2.0"

我看到了这个:

Updating crates.io index error: specified package `in3 v0.1.7` has no binaries

更新:我使用“sudo cargo build”作为我的 Cargo.toml 文件:

[package]
name = "in3"
version = "0.1.7"
edition = "2018"

[[bin]]
name = "in3"
path = "/home/jdoe/rust/contint.rs"

[dependencies]
async-std = "1.5.0"
in3 = "0.1.7"

有效。然后我跑了sudo cargo run,它奏效了。但是当我跑的时候sudo cargo install in3,我得到了一个错误。

我跑了这个: cargo install --list

但是 in3 仍然没有安装。我运行了一个 rust 程序,它确认没有安装 in3。

更新(更新):我跑了rustc foobar.rs 但我看到了这个:

错误[E0433]:无法解决:可能是缺少板条箱in3?--> foobar.rs:4:5 | 4 | 使用 in3::eth1::*; | ^^^ 也许是丢失的板条箱in3

如何安装 in3 板条箱?

标签: rustblockchainethereumrust-cargo

解决方案


我想你可能误解了货物的包裹管理。由于in3它是一个库而不是二进制包,因此您无法安装它。

cargo install不安装依赖npm installpip installcargo install会将二进制文件安装到您的本地文件系统(通常是 $HOME/.cargo/bin)中供您运行。

Cargo 会在你cargo run/check/build. 您不需要安装依赖项。

您可能想要开始一个新的文件夹结构并尝试以下操作:

  1. 运行cargo init。这将创建一个新的二进制包
  2. 编辑Cargo.toml并添加in3依赖项和版本。
  3. 修改main.rs文件以使用in3库。
  4. 使用 运行程序cargo run。您会注意到 cargo 在编译程序时正在解决各种依赖关系。

有关 Cargo 的更多信息,这里是入门指南


推荐阅读