Mac OS X 中自制 brew doctor 的警告问题

Mac OS X 中自制 brew doctor 的警告问题

我刚刚安装了 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这样,如果您需要重新安装已删除的动态库,则可以在名为的文件中对其进行干净的备份。

相关内容