首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将libpq.5.dylib复制到/usr/lib/libpq.5.dylib

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

Stack Overflow用户
提问于 2020-10-08 06:06:00
回答 2查看 4K关注 0票数 2

我无法在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建议我可能会面临问题,所以我不知道该怎么做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-08 23:30:56

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

相反,让我们讨论一下核心问题:

macOS上的动态库将自己的安装路径嵌入到二进制文件中,链接器将其复制到针对二进制文件的二进制文件中。可以用install_name_tool更改此信息(请参阅man install_name_tool)。

  1. 检查dylib的安装名称:

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

如果打印的路径已经指向dylib本身(或与其有符号链接的路径),请使用下面的[new_path]路径,并跳过步骤2.。

如果dylib的安装名称没有指向自身,则运行

数独/usr/local/Cellar/libpq/13.0/lib/libpq.5.dylib /usr/local/Cellar/libpq/13.0/lib/libpq.5.dylib install_name_tool -id

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

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

sudo install_name_tool -change /usr/lib/libpq.5.-change new_path

票数 4
EN

Stack Overflow用户

发布于 2022-06-28 14:16:03

我也遇到了同样的问题:安装了RPostgres,但是库无法加载,同样的错误消息。由于我已经在我的机器上安装了Postgres,所以我认为这个问题已经解决了,因此我在本地没有这样的消息;但是下面是我如何在我的dockerfile中解决这个问题的方法,在一个与安装R无关的机器上100%地验证了这个问题:

代码语言:javascript
复制
RUN apt-get update && apt-get install libpq5 -y

因此,在您的终端上执行apt-get update && apt-get install libpq5 -y应该可以做到这一点。轻巧高效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64256675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档