当我输入 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.rb
(https://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/
:
类似的解决方案可能适用于其他程序,尽管它可能并非在所有情况下都有效。DYLD_LIBRARY_PATH
如果后备路径不被遵守,您也可以尝试导出。