【发布时间】:2019-08-28 07:17:51
【问题描述】:
我尝试从 R 下载库的所有内容都得到“错误:无法从 URL 安装‘未知包’: 错误:1407742E:SSL 例程:SSL23_GET_SERVER_HELLO:tlsv1 警报协议版本"
例如,我试试
install_version("cowplot")
或
remotes::install_github("kassambara/factoextra")
如何解决?
【问题讨论】:
我尝试从 R 下载库的所有内容都得到“错误:无法从 URL 安装‘未知包’: 错误:1407742E:SSL 例程:SSL23_GET_SERVER_HELLO:tlsv1 警报协议版本"
例如,我试试
install_version("cowplot")
或
remotes::install_github("kassambara/factoextra")
如何解决?
【问题讨论】:
您必须检查 SSL 客户端和 SSL 服务器是否具有共同的协议/算法组合才能启动连接。否则连接失败。
请注意,越来越多的 TLS 1.0 和 1.1 被服务器禁止(不够安全):例如,GitHub 只有 TLS 1.2 和 1.3。
您可以使用此在线工具检查服务器:https://github.com/openssl/openssl/issues/5806。
要检查客户端,您必须找出您的 R 版本(或者可能由操作系统提供)使用的 OpenSSL 版本。 OpenSSL 只是一种猜测:R 也可能使用 libcurl,它可能是用 another SSL library 构建的,但它们都应该支持 TLS 1.2(至少是这些库的最新版本)。
将 R 和/或 OpenSSL 升级到最新版本应该可以解决问题,但还有另一种可能性。请注意,cowplot 在 CRAN here 上,并且它具有最新版本。
这里您使用的是来自devtools 的install_version。为什么不使用内置的 R 函数来安装包?使用例如options(repos="https://cran.r-project.org/") 在 R 中设置存储库并使用install.packages("cowplot") 安装包。主 CRAN 镜像 https://cran.r-project.org/ 支持旧版本的 TLS(1.0 和 1.1),所以它应该可以工作。
另见这些链接:
【讨论】:
最终通过自制软件升级了整个 R 发行版,包括它的所有依赖项。称之为依赖地狱:-)
花费时间最长并解决问题的部分是升级到最新的 GCC,这最终会破坏许多软件包。
【讨论】: