【问题标题】:wxmac elixir error when trying to run :observer.start in iex尝试在 iex 中运行:observer.start 时出现 wxmac elixir 错误
【发布时间】:2021-04-15 07:59:39
【问题描述】:

在 iex 中运行 :observer.start 后,我收到了以下消息。我尝试卸载并重新安装 Elixir 和 Homebrew 但无济于事。

objc[58977]: Class wxNSProgressIndicator is implemented in both /usr/local/Cellar/wxmac/3.0.5.1_1/lib/libwx_osx_cocoau_core-3.0.0.5.0.dylib (0x1f5e9fc0) and /usr/local/opt/wxmac/lib/libwx_osx_cocoau_core-3.0.dylib (0x1ef61fc0). One of the two will be used. Which one is undefined.

objc[58977]: Class wxNSTableDataSource is implemented in both /usr/local/Cellar/wxmac/3.0.5.1_1/lib/libwx_osx_cocoau_core-3.0.0.5.0.dylib (0x1f5ea038) and /usr/local/opt/wxmac/lib/libwx_osxzsh: segmentation fault

【问题讨论】:

    标签: elixir homebrew elixir-iex


    【解决方案1】:

    Observer 使用WXwidgets 在您的平台上呈现窗口和控件。由于错误表明您有 2 个安装,不确定如何在 mac 上处理此类错误,但我想删除其中一个版本将解决错误。

    为了让您的生活更轻松,现在有一个新选项可以在名为 Phoenix Live Dashboard 的浏览器中运行观察者,它不需要安装任何本地渲染器依赖项。

    【讨论】:

    • 啊,谢谢你的评论。我确实考虑过删除其中一个装置,但担心后果。重新安装 elixir 后,它看起来像是添加了两个安装,所以我会试一试。谢谢你的回答!
    • 我不久前在这里bugs.erlang.org/browse/ERL-1435 打开了一个问题,因为我认为这与我最近的 Big Sur 升级有关。甚至在像 Brew 和 ASDF 这样的安装程序之前,安装旧版本的 WXwidgets 会导致错误行为 - 在这里看到这个线程 - github.com/elixir-lang/elixir/issues/9997 我认为 Elixir、Erlang 和编写安装程序的人之间存在交叉。那个横截面让我非常困惑。 FWIW 我在 Linux 中没有问题,但 OSX 和 Observer 仍然存在问题。
    【解决方案2】:

    似乎所有 dylib 文件在 /usr/local/opt/wxmac/lib 中彼此完全相同。这可能是如何为 wxmac 安装 dylib 的问题,但我现在没有耐心跟进。也许有比我更了解如何修复 wxmac brew 公式的人?

    这有点小技巧,但我发现手动对目录中的所有 dylib 进行符号链接解决了我的问题。例如,

    cd /usr/local/opt/wxmac/lib
    rm libwx_osx_cocoau_core-3.0.dylib
    ln -s libwx_osx_cocoau_core-3.0.0.5.0.dylib libwx_osx_cocoau_core-3.0.dylib
    # repeat for any/all libs that are a problem (I did all of them)
    

    【讨论】:

      【解决方案3】:

      将额外的标志传递给brew install 以在本地构建 wxmac,而不是安装已经构建的二进制文件。(bigsur wxmac 瓶中似乎存在错误)。 Elixir 依赖于 Erlang,而 Erlang 又依赖于 wxmac 来显示观察者窗口。所以在安装 erlang 或 elixir 之前先执行这个。

      brew install --build-from-source wxmac
      

      【讨论】:

        【解决方案4】:

        我卸载了wxmac:

        brew uninstall wxmac

        并重新安装以在本地构建 wxmac,而不是使用额外标志安装已构建的二进制文件:

        brew install --build-from-source wxmac

        为 asdf 更新插件 erlang:

        asdf plugin-update erlang

        然后安装最新版本的 Erlang:

        asdf install erlang latest

        现在当我尝试运行 :observer.start() 时,它可以工作了!

        【讨论】:

        • 天哪!你比我检查的其他两个地方更好地解决了我的问题。为什么这不是更受欢迎?谢谢!!!
        • 为我工作而无需重新安装 erlang
        猜你喜欢
        • 2017-08-10
        • 1970-01-01
        • 2017-11-11
        • 2013-09-17
        • 2017-04-04
        • 2018-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多