ruby Github页面安装:“需要”Jekyll -v输出:无法加载这样的文件-- google/protobuf_c(加载错误)

weylhg0b  于 2023-01-08  发布在  Ruby
关注(0)|答案(1)|浏览(248)

我尝试跟随this guide on setting up a GitHub page website。我跟随this jekyllrb.com tutorial安装了Homebrew、chruby和Jekyll。
当我运行ruby -v时,我得到ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-darwin18]。当我运行chruby -V时,我得到chruby: 0.3.9。在安装了gem install jekyll的Jekyll之后,我得到Successfully installed jekyll-4.3.1 Parsing documentation for jekyll-4.3.1 Done installing documentation for Jekyll after 0 seconds 1 gem installed
但是当我运行jekyll -v(或任何Jekyll命令)时,我收到一条很长的消息,其中包含以下错误:

<internal:/Users/my_username/.rubies/ruby-3.1.2/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require': dlopen(/Users/my_username/.gem/ruby/3.1.2/gems/google-protobuf-3.21.12-x86_64-darwin/lib/google/3.1/protobuf_c.bundle, 9): no suitable image found.  Did find: (LoadError)
    /Users/my_username/.gem/ruby/3.1.2/gems/google-protobuf-3.21.12-x86_64-darwin/lib/google/3.1/protobuf_c.bundle: cannot load 'protobuf_c.bundle' (load command 0x80000034 is unknown)
    /Users/my_username/.gem/ruby/3.1.2/gems/google-protobuf-3.21.12-x86_64-darwin/lib/google/3.1/protobuf_c.bundle: cannot load 'protobuf_c.bundle' (load command 0x80000034 is unknown) - /Users/my_username/.gem/ruby/3.1.2/gems/google-protobuf-3.21.12-x86_64-darwin/lib/google/3.1/protobuf_c.bundle

我花了几个小时研究这个错误的含义,发现了一些非常具体的问题(对于Ruby的某个版本或其他库),如Ruby 2.7.2 google/protobuf_c problem (M1)Ruby: Gem version 3.11.2 doesn't load on Ruby 2.7和许多其他问题。
这是我第一次听说Ruby或Jekyll或其他东西,我不知道如何正确安装它们,只是在GitHub上做一个网站。我也尝试使用rvm而不是chruby安装Ruby,但也出现了同样的错误。我也尝试安装不同版本的Ruby,如3.1.33.2.0

y53ybaqx

y53ybaqx1#

当gem有需要编译的原生扩展时,gem作者可以提前构建扩展并将其包含在包中,这样gem的安装速度就比从头编译要快。不幸的是,Google一再破坏这种实现。
这是google protobuf的一个问题,已经有两年了。Google会定期修复它,然后再修复它。他们也会定期声称理解这个问题,但不理解它,声称已经修复了它,但没有修复它。而且他们的GitHub问题经常推卸责任,因为他们是唯一能修复它的人。
在macOS上处理google-protobuf时,最好确保从零开始编译它,这可以通过--platform参数来实现:

gem install --platform ruby google-protobuf

平台ruby意味着 * 不要使用任何预编译的二进制文件,并强制从源代码编译 *。
平台x86_64-darwin意味着 * 在英特尔处理器上使用macOS的预编译二进制文件 *。这是gem安装程序为您的系统识别并自动使用的版本,但错误no suitable image found是macOS错误,这意味着 * 此库不是以我可以理解的方式编译的 *。

相关问题