我无法在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
中获取文件而不引起问题?solution表明我可能会遇到问题,所以我不知道该怎么做。
3条答案
按热度按时间taor4pac1#
你真的不希望它出现在
/usr/lib
中。苹果宣布这是一个禁区,在新的macOS版本中,它存在于一个只读卷上。除非你愿意进入恢复模式,手动篡改卷(并可能在未来的操作系统更新中重复),否则这不是一个好办法。相反,让我们来解决核心问题:
macOS上的动态库将自己的安装路径嵌入到二进制文件中,链接器将其复制到与之链接的二进制文件中。此信息可以使用
install_name_tool
进行更改(请参阅man install_name_tool
)。1.检查dylib的安装名称:
如果打印的路径已经指向dylib本身(或符号链接到它的路径),请将此路径用作下面的
[new_path]
,并跳过步骤2。1.如果dylib的安装名 * 没有 * 指向自身,运行以下命令:
并将
/usr/local/Cellar/libpq/13.0/lib/libpq.5.dylib
用于下面的[new_path]
。1.对于链接到dylib的二进制文件,请运行:
vkc1a9a22#
我在通过Docker构建用于API的容器时遇到了同样的问题用途:RPostgres已经安装,但是库不能加载,同样的错误信息。因为我已经在我的机器上安装了Postgres,我想这个问题已经解决了,所以我在本地没有这样的信息;但以下是我如何在我的dockerfile中解决这个问题的,在没有安装任何与R相关的机器上进行了100%验证:
所以在终端上执行
apt-get update && apt-get install libpq5 -y
应该可以达到目的,轻便而高效。sf6xfgos3#
它试图从符号链接
/opt/homebrew/opt/postgresql/lib/libpq.5.dylib
加载libpq.5.dylib
,但找不到文件,因此您需要更新它: