将 libpq.5.dylib 复制到 /usr/lib/libpq.5.dylib
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
中获取文件而不引起问题?这 solution 表明我可能会遇到问题,所以我不知道该怎么做。
你真的不想要 /usr/lib
。 Apple 声明为 off-limits,在较新的 macOS 版本上,它位于 read-only 卷上。除非您愿意进入恢复模式并手动篡改音量(并可能在以后的 OS 更新中重复此操作),否则这不是正确的方法。
相反,让我们解决核心问题:
macOS 上的动态库在二进制文件中嵌入了自己的安装路径,linker 将其复制到二进制文件 linking 中。可以使用 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 本身(或符号 linked 到它的路径),请将此路径用作下面的 [new_path]
,并跳过第 2 步。
如果 dylib 的安装名称确实不指向自身,运行 this:
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
。
对于 link 针对 dylib 的二进制文件,运行:
sudo install_name_tool -change /usr/lib/libpq.5.dylib [new_path] [path_to_binary]
我无法在 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 表明我可能会遇到问题,所以我不知道该怎么做。
你真的不想要 /usr/lib
。 Apple 声明为 off-limits,在较新的 macOS 版本上,它位于 read-only 卷上。除非您愿意进入恢复模式并手动篡改音量(并可能在以后的 OS 更新中重复此操作),否则这不是正确的方法。
相反,让我们解决核心问题:
macOS 上的动态库在二进制文件中嵌入了自己的安装路径,linker 将其复制到二进制文件 linking 中。可以使用 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 本身(或符号 linked 到它的路径),请将此路径用作下面的
[new_path]
,并跳过第 2 步。如果 dylib 的安装名称确实不指向自身,运行 this:
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
。对于 link 针对 dylib 的二进制文件,运行:
sudo install_name_tool -change /usr/lib/libpq.5.dylib [new_path] [path_to_binary]