[英]/usr/lib/rstudio-server/bin/rserver: /usr/pgsql-12/lib/libpq.so.5: no version information available (required by /usr/lib/rstudio-server/bin/rserver)
[英]copy libpq.5.dylib to /usr/lib/libpq.5.dylib
我无法在 R 中加载包,因为文件libpq.5.dylib
不在/usr/lib/libpq.5.dylib
中。 它在/usr/local/Cellar/libpq/13.0/lib/libpq.5.dylib
我试过这条线: sudo ln -s /usr/local/Cellar/libpq/13.0/lib/libpq.5.dylib /usr/lib/libpq.5.dylib
但我得到了这个响应: ln: /usr/lib/libpq.5.dylib: Operation not permitted
我该怎么做才能在/usr/lib/libpq.5.dylib
中获取文件而不引起问题? 这个解决方案表明我可能会面临问题,所以我不知道该怎么做。
你真的不希望它在/usr/lib
中。 Apple 宣布这是禁区,并且在较新的 macOS 版本上,它存在于只读卷上。 除非您愿意进入恢复模式并手动篡改卷(并可能在未来的操作系统更新中重复),否则这不是要走的路。
相反,让我们解决核心问题:
macOS 上的动态库在二进制文件中嵌入了自己的安装路径,链接器将其复制到链接到它们的二进制文件中。 可以使用install_name_tool
更改此信息(请参阅man install_name_tool
)。
检查 dylib 的安装名称:
otool -l /usr/local/Cellar/libpq/13.0/lib/libpq.5.dylib | fgrep -A2 LC_ID_DYLIB
如果打印的路径已经指向 dylib 本身(或符号链接到它的路径),请将此路径用作下面的[new_path]
,并跳过步骤 2。
如果 dylib 的安装名称不指向自身,请运行以下命令:
sudo install_name_tool -id /usr/local/Cellar/libpq/13.0/lib/libpq.5.dylib /usr/local/Cellar/libpq/13.0/lib/libpq.5.dylib
并在下面的[new_path]
中使用/usr/local/Cellar/libpq/13.0/lib/libpq.5.dylib
。
对于链接到 dylib 的二进制文件,运行:
sudo install_name_tool -change /usr/lib/libpq.5.dylib [new_path] [path_to_binary]
我在通过 docker 构建容器以供 API 使用时遇到了同样的问题:RPostgres 已安装,但库无法加载,同样的错误消息。 由于我在我的机器上安装了 Postgres,我认为问题已经解决,因此我在 local 上没有这样的消息; 但这是我在 dockerfile 中解决这个问题的方法,在没有安装 R 的机器上 100% 验证:
RUN apt-get update && apt-get install libpq5 -y
因此,在您的终端上执行apt-get update && apt-get install libpq5 -y
应该可以解决问题。 轻便高效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.