我尝试跟随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.3
和3.2.0
。
1条答案
按热度按时间y53ybaqx1#
当gem有需要编译的原生扩展时,gem作者可以提前构建扩展并将其包含在包中,这样gem的安装速度就比从头编译要快。不幸的是,Google一再破坏这种实现。
这是google protobuf的一个问题,已经有两年了。Google会定期修复它,然后再修复它。他们也会定期声称理解这个问题,但不理解它,声称已经修复了它,但没有修复它。而且他们的GitHub问题经常推卸责任,因为他们是唯一能修复它的人。
在macOS上处理google-protobuf时,最好确保从零开始编译它,这可以通过
--platform
参数来实现:平台
ruby
意味着 * 不要使用任何预编译的二进制文件,并强制从源代码编译 *。平台
x86_64-darwin
意味着 * 在英特尔处理器上使用macOS的预编译二进制文件 *。这是gem安装程序为您的系统识别并自动使用的版本,但错误no suitable image found
是macOS错误,这意味着 * 此库不是以我可以理解的方式编译的 *。