我刚刚安装了 homebrew 并收到此警告:
$ brew doctor
请注意,如果您提交了问题,这些警告仅用于帮助 Homebrew 维护人员进行调试。如果您使用 Homebrew 的所有功能都运行正常:请不要担心,只需忽略它们即可。谢谢!
警告:在 /usr/local/lib 中发现未编译的 dylib。如果您不是故意将它们放在那里,它们可能会在构建 Homebrew 公式时造成问题,可能需要将其删除。
意外的 dylib:
/usr/local/lib/libMonoPosixHelper.dylib /usr/local/lib/libSFFileMonitor.32.dylib /usr/local/lib/libSFIPC.32.dylib /usr/local/lib/libSFIPC.I.dylib /usr/local/lib/libSFsqlite3.7.4.dylib /usr/local/lib/libSFSyncEngine.I.dylib
答案1
警告本身明确指出了这个问题:
请注意,如果您提交了问题,这些警告仅用于帮助 Homebrew 维护人员进行调试。如果您使用 Homebrew 的所有功能都运行正常:请不要担心,只需忽略它们即可。谢谢!
具体来说,重点是:
警告:在 /usr/local/lib 中发现未编译的 dylib。如果您不是故意将它们放在那里,它们可能会在构建 Homebrew 公式时造成问题,可能需要删除。
关键是自制只是通过并指出潜在的问题,而不是当前的问题。风险在于,本地安装的动态库可能会使用未根据自制配方进行检查的旧版本/新版本。因此,存在一种极端情况,即它们可能给您将来带来问题。
查看那里列出的动态库,这些似乎连接到 Citrix Receiver正如 Stack Overflow 答案中所述。因此,如果您正在使用 Citrix Receiver,则无法删除这些文件。但如果您不使用 Citrix Receiver,则删除它们对您来说很可能是安全的。
也就是说,这里有两种可能的解决方案:将文件列入白名单并将其彻底删除。
将动态库文件列入白名单。
如果您使用的是 Citrix Receiver 并且无法删除文件,那么将它们列入白名单很可能是最好的折衷方案。假设您的 Homebrew 安装在标准位置,您可以通过终端打开doctor.rb
连接到 Homebrew 的 Ruby 文件,如下所示:nano
/usr/local/Library/Homebrew/cmd/doctor.rb
您可以查看相同的内容在 GitHub 仓库中. 第 120 行左右是white_list
定义:
white_list = [
"libfuse.2.dylib", # MacFuse
"libfuse_ino64.2.dylib", # MacFuse
"libmacfuse_i32.2.dylib", # OSXFuse MacFuse compatibility layer
"libmacfuse_i64.2.dylib", # OSXFuse MacFuse compatibility layer
"libosxfuse_i32.2.dylib", # OSXFuse
"libosxfuse_i64.2.dylib", # OSXFuse
]
编辑该内容以添加 Citrix Receiver 相关的动态库,如下所示:
white_list = [
"libfuse.2.dylib", # MacFuse
"libfuse_ino64.2.dylib", # MacFuse
"libmacfuse_i32.2.dylib", # OSXFuse MacFuse compatibility layer
"libmacfuse_i64.2.dylib", # OSXFuse MacFuse compatibility layer
"libosxfuse_i32.2.dylib", # OSXFuse
"libosxfuse_i64.2.dylib", # OSXFuse
"libMonoPosixHelper.dylib", # Citrix Receiver
"libSFFileMonitor.32.dylib", # Citrix Receiver
"libSFIPC.32.dylib", # Citrix Receiver
"libSFIPC.I.dylib", # Citrix Receiver
"libSFsqlite3.7.4.dylib", # Citrix Receiver
"libSFSyncEngine.I.dylib", # Citrix Receiver
]
你应该将这些项目列入白名单,从而忽略它们,这样就不会再有警告了。但请记住:下次安装 Homebrew 甚至升级它时,这些白名单值可能会被覆盖。
删除动态库文件。
下一个选项是删除动态库文件。但是如果你不确定是否要删除,那么你可以采取更安全的方法,只需将这些特定文件移动到安全的地方,例如名为 的目录critix_dylibs
。首先创建实际目录,如下所示:
mkdir ~/critix_dylibs
然后将它们移动到该目录中,如下所示:
sudo mv /usr/local/lib/libMonoPosixHelper.dylib ~/critix_dylibs/
sudo mv /usr/local/lib/libSFFileMonitor.32.dylib ~/critix_dylibs/
sudo mv /usr/local/lib/libSFIPC.32.dylib ~/critix_dylibs/
sudo mv /usr/local/lib/libSFIPC.I.dylib ~/critix_dylibs/
sudo mv /usr/local/lib/libSFsqlite3.7.4.dylib ~/critix_dylibs/
sudo mv /usr/local/lib/libSFSyncEngine.I.dylib ~/critix_dylibs/
然后,只要像这样移动它们,它们就会被有效地“中和”。运行自制软件应该会显示干净的执行,没有任何警告。
您甚至可以通过创建如下存档来进一步进行存档.tar
。首先创建存档:.gz
.tar
tar -cf ~/critix_dylibs.tar ~/critix_dylibs
接下来像这样对其进行 Gzip 压缩:
gzip ~/critix_dylibs.tar
然后像这样折腾目录:
rm -rf ~/critix_dylibs
critix_dylibs.tar.gz
这样,如果您需要重新安装已删除的动态库,则可以在名为的文件中对其进行干净的备份。