如何在离线状态下使用 Cargo 构建项目?
How do I use Cargo to build a project while offline?
我正在通过使用 rand
crate 创建小程序来练习 Rust (1.36)。但问题是每当我使用 cargo new
创建新项目然后在 cargo.toml
中添加 rand
依赖项时。它连接到互联网并再次下载相同的 rand
包。
与 Python 相比,已安装的软件包进入 site_package 文件夹并可供 import/use 任何程序使用。不需要重新下载。
我的问题是,如何让 cargo 查找已安装的本地 crate 而不是重新下载?
即使在现代 Python 中,人们也不会只使用全球可用的 site_packages
目录和 "pollute" 全球可用的软件包,而是会使用 virtual environments为每个项目维护适当的版本控制——类似于 cargo
所做的。
使用cargo
,一旦所有的包都被下载并在项目中明确指定了它们的版本,就可以通过新的
--offline
flag while one compiles one's project, in which case cargo
runs without accessing the network:
$ cargo build --offline
也就是说,按照您描述的方式做某事当然是完全可能的:
- 创建一个目录,您的依赖项所在的目录:
$ mkdir offline_resources
$ cd offline_resources
- 下载你需要的版本库并构建它(这是最后一点你需要使用网络的地方):
$ git clone https://github.com/rust-random/rand.git
$ cd rand
$ cargo build
- 创建一个新项目:
$ cd ../..
$ cargo new use_offline
$ cd use_offline
- 编辑
Cargo.toml
:
[dependencies]
rand = { path="../offline_resources/rand", version="0.7.0" }
- 建立你的项目:
$ cargo build --offline
- 按照步骤 3 到 5 创建另一个将使用相同
rand
依赖项的项目。
我正在通过使用 rand
crate 创建小程序来练习 Rust (1.36)。但问题是每当我使用 cargo new
创建新项目然后在 cargo.toml
中添加 rand
依赖项时。它连接到互联网并再次下载相同的 rand
包。
与 Python 相比,已安装的软件包进入 site_package 文件夹并可供 import/use 任何程序使用。不需要重新下载。
我的问题是,如何让 cargo 查找已安装的本地 crate 而不是重新下载?
即使在现代 Python 中,人们也不会只使用全球可用的 site_packages
目录和 "pollute" 全球可用的软件包,而是会使用 virtual environments为每个项目维护适当的版本控制——类似于 cargo
所做的。
使用cargo
,一旦所有的包都被下载并在项目中明确指定了它们的版本,就可以通过新的
--offline
flag while one compiles one's project, in which case cargo
runs without accessing the network:
$ cargo build --offline
也就是说,按照您描述的方式做某事当然是完全可能的:
- 创建一个目录,您的依赖项所在的目录:
$ mkdir offline_resources $ cd offline_resources
- 下载你需要的版本库并构建它(这是最后一点你需要使用网络的地方):
$ git clone https://github.com/rust-random/rand.git $ cd rand $ cargo build
- 创建一个新项目:
$ cd ../.. $ cargo new use_offline $ cd use_offline
- 编辑
Cargo.toml
:[dependencies] rand = { path="../offline_resources/rand", version="0.7.0" }
- 建立你的项目:
$ cargo build --offline
- 按照步骤 3 到 5 创建另一个将使用相同
rand
依赖项的项目。