ln:/usr/lib/libssl.dylib:操作不允许OSX

时间:2015-10-02 15:27:01

标签: macos

我正在尝试创建一个指向/ usr / lib的符号链接,但我似乎没有权限,包含在root中。系统返回不允许操作。

Yosemite我工作得很好,但随着El Capitan的破产:/

任何人都知道我能做什么?

4 个答案:

答案 0 :(得分:8)

我在Sublime文本3中使用链接的subl命令时遇到了一些问题。我相信这是你遇到的同一个问题。

显然,usr / local对它没有相同的控件。而不是

ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" ~/bin/subl

按照Sublime docs的建议,

更像是:

ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" usr/local/bin/subl

答案 1 :(得分:0)

好的,我在恢复模式下使用此命令解决了它:

csrutil disable

Apple创造了一个名为"限制"的新旗帜。这限制了对在此模式下执行的文件和文件夹的访问。然后,我复制文件并再次创建符号链接,它可以工作。

sudo cp /Library/PostgreSQL/9.2/lib/libssl.1.0.0.dylib /usr/lib
sudo cp /Library/PostgreSQL/9.2/lib/libcrypto.1.0.0.dylib /usr/lib

sudo ln -fs /usr/lib/libssl.1.0.0.dylib /usr/lib/libssl.dylib
sudo ln -fs /usr/lib/libcrypto.1.0.0.dylib /usr/lib/libcrypto.dylib

答案 2 :(得分:0)

我建议不要因安全原因以及安全禁用过程(rootless mode and csrutil disable)的复杂性和敏感性而混淆系统目录。

如果你对终端/ shell程序使用的开发库有问题(rails,django,python,ruby,php,......) - 我建议你选择以下方法:

  • 在某处安装新版本的库/以某种方式(例如brew install ...)
  • 将.bash_profile中的DYLD_LIBRARY_PATH设置为新的lib * .dylib所在的位置
  • 重新启动shell
  • 重新安装/重新编译需要不同版本系统库的库 - 应找到并链接新版本库

例如在https://stackoverflow.com/a/33034764/565525上检查python-> postgres-driver-> openssl / libssl.dylib) - 问题是Incompatible library version: _psycopg.so requires version 1.0.0 or later ...

答案 3 :(得分:0)

您实际需要做的是重定向到原始二进制文件,而不更改/usr/lib/的内容。运行csrutil disable非常不良和危险的行为,出于某种原因被称为“无根”。

如果出现类似以下错误:

dlopen(/Users/{your_username}/Library/R/4.0/library/sf/libs/sf.so, 6):
Library not loaded: /usr/lib/libpq.5.dylib

然后解决方案是:

  1. 在您的系统上查找libpq.5.dylib,因为它肯定在某处:

    ~ % sudo find / -name libpq.5.dylib
    # /usr/local/opt/libpq/lib/libpq.5.dylib 
    
  2. 使用该文件通过install_name_tool进行重定向:

     sudo install_name_tool -change /usr/lib/libpq.5.dylib /usr/local/opt/libpq/lib/libpq.5.dylib /Users/{your_username}/Library/R/4.0/library/sf/libs/sf.so