Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将libpq.5.dylib复制到/usr/lib/libpq.5.dylib_R_Macos_Sf_Dylib_Libpq - Fatal编程技术网

将libpq.5.dylib复制到/usr/lib/libpq.5.dylib

将libpq.5.dylib复制到/usr/lib/libpq.5.dylib,r,macos,sf,dylib,libpq,R,Macos,Sf,Dylib,Libpq,我无法在R中加载包,因为文件libpq.5.dylib不在/usr/lib/libpq.5.dylib中。它位于/usr/local/ceral/libpq/13.0/lib/libpq.5.dylib中 我试过这句话:sudo ln-s/usr/local/cillar/libpq/13.0/lib/libpq.5.dylib/usr/lib/libpq.5.dylib但是我得到了这样的回答:ln:/usr/lib/libpq.5.dylib:不允许操作 如何在不引起问题的情况下将文件放入/u

我无法在R中加载包,因为文件
libpq.5.dylib
不在
/usr/lib/libpq.5.dylib
中。它位于
/usr/local/ceral/libpq/13.0/lib/libpq.5.dylib中

我试过这句话:
sudo ln-s/usr/local/cillar/libpq/13.0/lib/libpq.5.dylib/usr/lib/libpq.5.dylib
但是我得到了这样的回答:
ln:/usr/lib/libpq.5.dylib:不允许操作


如何在不引起问题的情况下将文件放入
/usr/lib/libpq.5.dylib
?这意味着我可能会面临一些问题,因此我不知道该怎么办。

你真的不希望它出现在
/usr/lib
中。苹果公司宣布这是禁区,在更新的macOS版本上,它是只读的。除非您愿意进入恢复模式并手动篡改卷(并可能在将来的操作系统更新中重复),否则这是不可能的

相反,让我们来解决核心问题:
macOS上的动态库将它们自己的安装路径嵌入到二进制文件中,链接器将其复制到针对它们进行链接的二进制文件中。此信息可以使用
install\u name\u tool
更改(请参阅
man install\u name\u tool

  • 检查动态库的安装名称:

    otool -l /usr/local/Cellar/libpq/13.0/lib/libpq.5.dylib | fgrep -A2 LC_ID_DYLIB
    
    如果打印的路径已经指向动态库本身(或符号链接到它的路径),请将此路径用作下面的
    [new\u path]
    ,然后跳过步骤2

  • 如果动态库的安装名称没有指向自身,请运行以下命令:

    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/ceral/libpq/13.0/lib/libpq.5.dylib
    作为
    [新路径]

  • 对于链接到动态库的二进制文件,请运行:

    sudo install_name_tool -change /usr/lib/libpq.5.dylib [new_path] [path_to_binary]
    

  • 我不确定二进制路径。3号我不清楚。这是我在R中看到的错误:错误:dyn.load(文件,DLLpath=DLLpath,…)中的'tidyensus'的包或命名空间加载失败:无法加载共享对象'/Library/Frameworks/R.framework/R.framework/Versions/4.0/libs/4.0/Resources/Resources/Library/sf.so':dlopen(/Library/Frameworks/R.framework/Versions/4.0/Resources/libs/sf.so,6):Library not loaded:/usr/lib/libpq.5.dylib引用自:/Library/Frameworks/R.framework/Versions/4.0/Resources/Library/sf/libs/sf.so原因:未找到图像然后要编辑的二进制文件是
    /Library/framework/R.framework/Versions/4.0/Resources/Library/sf/libs/sf.so
    。因此步骤3是:sudo安装\u name\u工具-更改/usr/lib/libpq.5.dylib/usr/local/cillar/libpq/13.0/lib/libpq.5.dylib/Library/Frameworks/R.framework/Versions/4.0/Resources/Library/sf/libs/sf.soMany谢谢!工作完美无瑕。每次我更新到新的主R版本并且必须重新安装所有软件包时都会发生这种情况,例如
    sf
    (在macOS上)。