将libpq.5.dylib复制到/usr/lib/libpq.5.dylib
我无法在R中加载包,因为文件将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
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上)。