gpt4 book ai didi

解决 Rstudio 中的 openssl 安装错误

转载 作者:行者123 更新时间:2023-12-04 08:27:04 24 4
gpt4 key购买 nike

对不起,冗长的帖子;最后见 tl;博士。
我正在运行 macOS Catalina。我正在尝试在 Rstudio (1.3.1093) 中运行的 R (4.0.3) 中安装一些软件包,但我一直在两个不同的错误之间摇摆不定,这两个错误都与 openssl 有关。
我了解 R 想要安装的 openssl 是同名系统库的包装器。当我尝试在 Rstudio 中安装 openssl 时,我收到以下错误:

Found pkg-config cflags and libs!
Using PKG_CFLAGS=-I/usr/local/include
--------------------------- [ANTICONF] --------------------------------\
Configuration failed because openssl was not found. Try installing:\
\* deb: libssl-dev (Debian, Ubuntu, etc)\
\* rpm: openssl-devel (Fedora, CentOS, RHEL)\
\* csw: libssl_dev (Solaris)\
\* brew: openssl@1.1 (Mac OSX)\
If openssl is already installed, check that 'pkg-config' is in your\
PATH and PKG_CONFIG_PATH contains a openssl.pc file. If pkg-config\
is unavailable you can set INCLUDE_DIR and LIB_DIR manually via:\
R CMD INSTALL --configure-vars='INCLUDE_DIR=... LIB_DIR=...'\
-------------------------- [ERROR MESSAGE] ---------------------------\
tools/version.c:1:10: fatal error: 'openssl/opensslv.h' file not found\
#include <openssl/opensslv.h>\
1 error generated.
这很奇怪,因为当我去终端运行\
which openssl
我明白了

/usr/bin/openssl


当我运行时,也在终端中,
locate opensslv.h
退回的元素之一是

/usr/local/include/openssl/opensslv.h


虽然事实证明这是一个指向我删除的内容的软链接(soft link)。好的,所以我更改了软链接(soft link)并让它指向我系统上其他地方的另一个 openssl/opensslv.h 文件(我的系统上肯定有很多 openssl 包,主要与 rails 或 anaconda 有关)。之后我尝试运行
install.packages("openssl")
在 Rstudio 中,这次我收到一个新错误:
Error: package or namespace load failed for ‘openssl’ in dyn.load(file, DLLpath = DLLpath, ...):\
unable to load shared object '/usr/local/lib/R/4.0/site-library/00LOCK-openssl/00new/openssl/libs/openssl.so':\
dlopen(/usr/local/lib/R/4.0/site-library/00LOCK-openssl/00new/openssl/libs/openssl.so, 6): Symbol not found: _EVP_PKEY_get_raw_private_key\
Referenced from: /usr/local/lib/R/4.0/site-library/00LOCK-openssl/00new/openssl/libs/openssl.so\
Expected in: flat namespace\
in /usr/local/lib/R/4.0/site-library/00LOCK-openssl/00new/openssl/libs/openssl.so\
Error: loading failed\
Execution halted
如果我通过使用 brew 安装 openssl 并将 opensslv.h 软链接(soft link)更改为指向 brew 安装的 opensslv.h 来更明智地做事,那么在 R 中安装 openssl 时(在 Rstudio 中或通过在终端)
从我在线阅读的内容来看,最后一个 R 错误(包 r 命名空间加载失败)与我系统上的多个 openssl 版本有关。是的,我的系统有大量的 openssl 版本(使用 locate 和 grep 显示我的系统上有 212 个 openssl 副本)但其中绝大多数来自 anaconda、ruby 或 node,并且唯一一个看起来它在我的 PATH 中是/usr/bin/openssl,它在更高版本的 macOS 上是只读的,顺便说一句。
所以我的问题是 A)我的 PATH 中是否有太多版本的 openssl 和 B)我怎样才能找到它们?
请不要评判我的系统管理;我一直在做一些愚蠢的事情,试图安装这些 R 包,现在恐怕我挖了一个太深的洞而无法爬出来!
tl;dr:如果我在 macOS 的 PATH 中安装了多个版本的系统库(例如 openssl),我如何才能找到它们的位置?也许像linux的
ldconfig -p|grep openssl

最佳答案

要定位 brew openssl 使用 echo $(brew --prefix openssl)在您的终端中,然后将两行添加到带有输出的 ~/.R/Makevars 文件中,例如如果命令的输出是/usr/local/opt/openssl@1.1,添加

LDFLAGS=-L/usr/local/opt/openssl@1.1/lib
CPPFLAGS=-I/usr/local/opt/openssl@1.1/include
到您的 ~/.R/Makevars 文件。
要在 macOS Big Sur 中从源代码编译包,请参阅我的说明 here

关于解决 Rstudio 中的 openssl 安装错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65207249/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com