警告:在 /usr/local/lib 中发现未编译的 dylib

警告:在 /usr/local/lib 中发现未编译的 dylib

当我输入 brew doctor 命令时,出现以下错误。这有什么可担心的吗?

我对命令行的东西很陌生。我使用 homebrew 安装 Drush(用于 Drupal)。

Last login: Wed Oct  9 14:59:40 on ttys001
unknown:~ MY-USERNAME$ brew doctor
Warning: Unbrewed dylibs were found in /usr/local/lib.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected dylibs:
    /usr/local/lib/libTrAPI.dylib 

答案1

这些文件(在您的例子中只有一个)是旧安装的残留文件。无需担心。

您可以使用以下方法轻松将其删除:

rm /usr/local/lib/libTrAPI.dylib

答案2

libTrAPI.dylib 适用于您的 VPN 软件。如果您想继续使用 VPN,请不要删除它,只需将其添加到 doctor.rb 中的白名单中,然后 homebrew 就不会抱怨它了。

要找到您的 doctor.rb,只需运行

locate doctor.rb

查找 white_list,我的在第 105 行。它可能看起来像这样。

white_list = {
  "libfuse.2.dylib" => "MacFuse",
  "libfuse_ino64.2.dylib" => "MacFuse",
  "/usr/local/lib/libTrAPI.dylib" => "TrAPI"
}

答案3

我最近正在使用自定义 SQLite3 扩展(https://github.com/vlcn-io/cr-sqlite)将所需内容crsqlite.dylib放入/usr/local/lib仅有的SQLite 在发出命令时默认搜索的用户可写路径.load,我发现自己面临这个brew doctor喷出问题。

我找到了allow_list里面的硬编码数组diagnostic.rbhttps://github.com/Homebrew/brew/blob/master/Library/Homebrew/diagnostic.rb#L200),但找不到任何用户可定义的配置文件或支持的自定义此列表的方法(除了直接编辑文件,这可能会被更新覆盖)。

我想到的解决方案是在 sqlite3 周围创建一个 shell 包装函数,该函数导出变量DYLD_FALLBACK_LIBRARY_PATH。这样我就可以将 dylib 放在子文件夹中,从而防止 Homebrew 对此发出抱怨。

例如在你.bash_profile.zshrc

sqlite3() {
  export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/lib/sqlite3
  /opt/homebrew/opt/sqlite/bin/sqlite3 "$@"
}

然后可以将 dylib 放入/usr/local/lib/sqlite3/

dylib 位置

类似的解决方案可能适用于其他程序,尽管它可能并非在所有情况下都有效。DYLD_LIBRARY_PATH如果后备路径不被遵守,您也可以尝试导出。

相关内容