尝试下载文件时,R CMD 检查失败并显示 ubuntu,但功能在 R 中有效
R CMD check fails with ubuntu when trying to download file, but function works within R
我正在编写一个 R 包,它的一个功能是从 link 下载并解压缩一个文件(但它不会导出给用户):
download_f <- function(download_dir) {
utils::download.file(
url = "https://servicos.ibama.gov.br/ctf/publico/areasembargadas/downloadListaAreasEmbargadas.php",
destfile = file.path(download_dir, "fines.rar"),
mode = 'wb',
method = 'libcurl'
)
utils::unzip(
zipfile = file.path(download_dir, "fines.rar"),
exdir = file.path(download_dir)
)
}
当我 运行 在其他函数中编译小插图中的示例时,此函数对我来说工作正常。
然而,使用 R CMD 检查 github 操作,它在 ubuntu 16.04 上始终失败,发布和开发。它 [说][1]:
Error: Error: processing vignette 'IBAMA.Rmd' failed with diagnostics:
cannot open URL 'https://servicos.ibama.gov.br/ctf/publico/areasembargadas/downloadListaAreasEmbargadas.php'
--- failed re-building ‘IBAMA.Rmd’
SUMMARY: processing the following file failed:
‘IBAMA.Rmd’
Error: Error: Vignette re-building failed.
Execution halted
Error: Error in proc$get_built_file() : Build process failed
Calls: <Anonymous> ... build_package -> with_envvar -> force -> <Anonymous>
Execution halted
Error: Process completed with exit code 1.
当我 运行 devtools::check()
它永远不会完成 运行ning 它,永远停留在“创建小插曲”中。我不知道这些问题是否相关,因为包装上还有其他小插图。
我通过 mac os 和 windows 的 R CMD 检查。我试过在 utils::download.file
上切换“模式”和“方法”参数,但无济于事。
有什么建议吗?
[1]: https://github.com/datazoompuc/datazoom.amazonia/pull/16/checks?check_run_id=2026865974
下载失败,因为 libcurl 尝试验证网络服务器证书,但无法验证。
我可以在我的系统上重现这个:
trying URL 'https://servicos.ibama.gov.br/ctf/publico/areasembargadas/downloadListaAreasEmbargadas.php'
Error in utils::download.file(url = "https://servicos.ibama.gov.br/ctf/publico/areasembargadas/downloadListaAreasEmbargadas.php", :
cannot open URL 'https://servicos.ibama.gov.br/ctf/publico/areasembargadas/downloadListaAreasEmbargadas.php'
In addition: Warning message:
In utils::download.file(url = "https://servicos.ibama.gov.br/ctf/publico/areasembargadas/downloadListaAreasEmbargadas.php", :
URL 'https://servicos.ibama.gov.br/ctf/publico/areasembargadas/downloadListaAreasEmbargadas.php': status was 'SSL peer certificate or SSH remote key was not OK'
服务器不允许你从http下载,而是重定向到https,所以现在唯一要做的就是告诉libcurl不要检查证书并接受它得到的内容。
您可以将参数 -k
指定为 curl
download_f <- function(download_dir) {
utils::download.file(
url = "https://servicos.ibama.gov.br/ctf/publico/areasembargadas/downloadListaAreasEmbargadas.php",
destfile = file.path(download_dir, "fines.rar"),
mode = 'wb',
method = 'curl',
extra = '-k'
)
utils::unzip(
zipfile = file.path(download_dir, "fines.rar"),
exdir = file.path(download_dir)
)
}
这也会产生一些下载进度条,你可以通过设置 extra 来消除它 -k -s
现在您可以进行中间攻击中的机器攻击。 (你可能已经被这种方式攻击了,如果不与对方认识的人验证当前证书,就无法检查)
所以你可以实施额外的检查,例如检查下载文件的 sha256sum 并在继续之前查看它是否与您预期收到的内容相符。
myfile <- system.file("fines.rar")
hash <- sha256(file(myfile))
我正在编写一个 R 包,它的一个功能是从 link 下载并解压缩一个文件(但它不会导出给用户):
download_f <- function(download_dir) {
utils::download.file(
url = "https://servicos.ibama.gov.br/ctf/publico/areasembargadas/downloadListaAreasEmbargadas.php",
destfile = file.path(download_dir, "fines.rar"),
mode = 'wb',
method = 'libcurl'
)
utils::unzip(
zipfile = file.path(download_dir, "fines.rar"),
exdir = file.path(download_dir)
)
}
当我 运行 在其他函数中编译小插图中的示例时,此函数对我来说工作正常。
然而,使用 R CMD 检查 github 操作,它在 ubuntu 16.04 上始终失败,发布和开发。它 [说][1]:
Error: Error: processing vignette 'IBAMA.Rmd' failed with diagnostics:
cannot open URL 'https://servicos.ibama.gov.br/ctf/publico/areasembargadas/downloadListaAreasEmbargadas.php'
--- failed re-building ‘IBAMA.Rmd’
SUMMARY: processing the following file failed:
‘IBAMA.Rmd’
Error: Error: Vignette re-building failed.
Execution halted
Error: Error in proc$get_built_file() : Build process failed
Calls: <Anonymous> ... build_package -> with_envvar -> force -> <Anonymous>
Execution halted
Error: Process completed with exit code 1.
当我 运行 devtools::check()
它永远不会完成 运行ning 它,永远停留在“创建小插曲”中。我不知道这些问题是否相关,因为包装上还有其他小插图。
我通过 mac os 和 windows 的 R CMD 检查。我试过在 utils::download.file
上切换“模式”和“方法”参数,但无济于事。
有什么建议吗? [1]: https://github.com/datazoompuc/datazoom.amazonia/pull/16/checks?check_run_id=2026865974
下载失败,因为 libcurl 尝试验证网络服务器证书,但无法验证。
我可以在我的系统上重现这个:
trying URL 'https://servicos.ibama.gov.br/ctf/publico/areasembargadas/downloadListaAreasEmbargadas.php'
Error in utils::download.file(url = "https://servicos.ibama.gov.br/ctf/publico/areasembargadas/downloadListaAreasEmbargadas.php", :
cannot open URL 'https://servicos.ibama.gov.br/ctf/publico/areasembargadas/downloadListaAreasEmbargadas.php'
In addition: Warning message:
In utils::download.file(url = "https://servicos.ibama.gov.br/ctf/publico/areasembargadas/downloadListaAreasEmbargadas.php", :
URL 'https://servicos.ibama.gov.br/ctf/publico/areasembargadas/downloadListaAreasEmbargadas.php': status was 'SSL peer certificate or SSH remote key was not OK'
服务器不允许你从http下载,而是重定向到https,所以现在唯一要做的就是告诉libcurl不要检查证书并接受它得到的内容。
您可以将参数 -k
指定为 curl
download_f <- function(download_dir) {
utils::download.file(
url = "https://servicos.ibama.gov.br/ctf/publico/areasembargadas/downloadListaAreasEmbargadas.php",
destfile = file.path(download_dir, "fines.rar"),
mode = 'wb',
method = 'curl',
extra = '-k'
)
utils::unzip(
zipfile = file.path(download_dir, "fines.rar"),
exdir = file.path(download_dir)
)
}
这也会产生一些下载进度条,你可以通过设置 extra 来消除它 -k -s
现在您可以进行中间攻击中的机器攻击。 (你可能已经被这种方式攻击了,如果不与对方认识的人验证当前证书,就无法检查) 所以你可以实施额外的检查,例如检查下载文件的 sha256sum 并在继续之前查看它是否与您预期收到的内容相符。
myfile <- system.file("fines.rar")
hash <- sha256(file(myfile))