将libpq.5.dylib复制到/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中获取文件而不会引起问题? solution提示我可能会遇到很多问题,因此我不知道该怎么办。

ysw9232 回答:将libpq.5.dylib复制到/usr/lib/libpq.5.dylib

您真的不希望在/usr/lib中使用它。苹果公司宣布将其作为禁区,并且在较新的macOS版本上,它位于只读卷上。除非您愿意进入恢复模式并手动篡改该卷(并且可能在以后的操作系统更新中重复进行此操作),否则这不是要走的路。

让我们解决核心问题:
macOS上的动态库在二进制文件中嵌入了自己的安装路径,链接程序将其复制到与它们链接的二进制文件中。可以使用install_name_tool更改此信息(请参见man install_name_tool)。

  1. 检查dylib的安装名称:

    otool -l /usr/local/Cellar/libpq/13.0/lib/libpq.5.dylib | fgrep -A2 LC_ID_DYLIB
    

    如果打印路径已经指向dylib本身(或指向它的符号链接的路径),请将该路径用作下面的[new_path],然后跳过步骤2。

  2. 如果dylib的安装名称​​ not 不指向自身,请运行以下命令:

    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
    

    然后将/usr/local/Cellar/libpq/13.0/lib/libpq.5.dylib用于下面的[new_path]

  3. 对于链接到dylib的二进制文件,运行:

    sudo install_name_tool -change /usr/lib/libpq.5.dylib [new_path] [path_to_binary]
    
本文链接:https://www.f2er.com/1433379.html

大家都在问