我正在尝试在隔离的网络上编译我的Rust代码 . 完全相同的代码在连接互联网的计算机上编译良好,但在隔离网络中构建 env_logger 时会中断:

cargo new project_name; 
cd project_name; 
echo 'env_logger = "0.3.5"' >> Cargo.toml; 
cargo build

哪些输出(原谅错别字,我不得不手动复制):

Created library 'project_name' project
Updating registry 'http://registry-url/'
Compiling winapi v0.2.8
Compiling regex-syntax v0.3.9
Compiling utf8-ranges v0.1.3
Compiling cfg-if v0.1.2
Compiling libc v0.2.36
Compiling winapi-build v0.1.1
Compiling log v0.4.1
Compiling kernel32-sys v0.2.2
Compiling log v0.3.9
Compiling memchr v0.1.11
Compiling aho-corasick v0.5.3
Compiling thread-id v2.0.0
Compiling thread_local v0.2.7
Compiling regex v0.1.80
Compiling env_logger v0.3.5
error[E0425]: cannot find function 'set_logger' in module 'log'
--> /home/username/.cargo/registry/src/registry-url-hash/env_logger-0.3.5/src/lib.rs:255:14
    |
255 | log::set_logger(|max_level| {
    |      ^^^^^^^^^^ not found in 'log'

error: aborting due to previous error

error: Could not compile 'env_logger'

我已经验证日志已成功下载到我当地的.cargo注册表中,如果我打开 log-0.4.1/src/lib.rs ,我可以在1045行找到 pub fn set_logger... . 如果我打开 log-0.3.9/src/lib.rs ,我会在第701行找到 pub fn set_logger<M> .

如果我查看 /home/username/.cargo/registry/src/registry-url-hash/env_logger-0.3.5/Cargo.toml ,它会在依赖项中说明这一点:

log = { version = "0.3", path = ".." }.

我已经尝试删除 path 参数而没有改变行为,并尝试将版本设置为"0.4"也没有任何更改 . 我还尝试清除缓存目录并从重新下载重建,以确保我没有弄乱任何东西 .

这是我的版本信息:

env_logger:0 . 5日志:0.4.1 rustc:1.24.0(4d90ac38c 2018-02-12)货物:0.25.0(8c93e0895 2018-02-01)

如果我将 set_logger 添加到 env_logger/src/lib.rs 文件中的 use log::{...} 行,则会出现与上述编译器错误一致的"not found"错误 .

我不知道如何重现这个问题,除了尝试在你的Cargo.toml中使用 env_logger = "0.3.5" 编译一个项目(它还没有_1447085?

有关背景信息,我们在隔离网络上镜像了Cargo注册表 . 通过对 .cargo/config 的一些调整,我可以让我的电脑到达我们的镜子,而不是试图联系到互联网(它不能) . 这台电脑完全没空了 .