ruby-on-rails - 迪尔德 : lazy symbol binding failed: Symbol not found: _grpc_set_ssl_roots_override_callback

标签 ruby-on-rails ruby grpc apple-m1

Mac Book Air(M1)

操作系统:macOS BigSur(11.2)
Rails 版本:5.2.3
ruby 版本:2.5.3p105
bundle 列表:

  • google-protobuf (3.15.5)
  • googleapis-common-protos-types (1.0.6)
  • grpc (1.36.0)
$ rails c
dyld: lazy symbol binding failed: Symbol not found: _grpc_set_ssl_roots_override_callback
  Referenced from: /Users/[hostname]/.rvm/gems/ruby-2.5.3@square_rpc/gems/grpc-1.36.0/src/ruby/lib/grpc/grpc_c.bundle
  Expected in: flat namespace

dyld: Symbol not found: _grpc_set_ssl_roots_override_callback
  Referenced from: /Users/[hostname]/.rvm/gems/ruby-2.5.3@square_rpc/gems/grpc-1.36.0/src/ruby/lib/grpc/grpc_c.bundle
  Expected in: flat namespace

我已经运行了bundle pristine
所以我认为我应该使用支持 M1 的正确版本作为文档说明。

有人知道怎么解决这个问题吗?
谢谢。

最佳答案

我想我终于可以用简单的方式回答这个问题了。答案很简单,就是升级到 Ruby 2.7 并且在你的 Gemfile 中至少有 grpc 1.38.0

我的理解和解释是,Mac M1 的某个地方发生了变化,早期版本的 grpc 出现了问题。维护这个 gem 的人听取了人们的意见,最终他们能够修复错误来解决问题。对于某些人来说,这是在 grpc 1.38.0 中,但对于其他人来说,它最近被列为 1.42.0。

我相信这个问题几个月前就解决了,但问题还有第二部分。那是 Ruby 的版本。我使用的是 2.6.6,但仍然有问题,尽管我一直在关注其他人的解决方案并看到它解决了他们的问题的 react 。然而,我终于找到了一条评论,表明该缺陷存在于 Ruby 2.6 中。所以我升级到 2.7.5 和 viola,我再也看不到问题了。

所以我的建议是升级到 ruby​​ 2.7,但是 2.6.7 - 2.6.9 也可能解决了这个链接问题。因此,如果您不想或无法升级到 2.7,也可以尝试这些。

关于ruby-on-rails - 迪尔德 : lazy symbol binding failed: Symbol not found: _grpc_set_ssl_roots_override_callback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66527732/

相关文章:

java - grpc protobuf java 中的 NoSuchMethodException 和 NoClassDefFoundError

ruby-on-rails - Rails 3.1 在测试环境中设置主机

ruby-on-rails - heroku run rake db :migrate 错误

ruby-on-rails - 如何重构这个 Rails Action ?

ruby - RVM 安装的 mysql2 gem 可以很好地与 Rails 配合使用...但不能与独立的 Ruby 脚本配合使用

plugins - 如何创建一个 protobuf go plugin 插件

c++ - GRPC/C++ - 服务器只读取双向流中的第一条消息

ruby-on-rails - Rails Controller 命名空间

ruby-on-rails - ActiveRecord 可以调用 native 数据库函数吗?

ruby-on-rails - Where(Hash) 后跟 ActiveRecord 中的 Scoped Where(Hash)