错误:执行gem ...(TypeError)不兼容的封送文件格式时(无法读取)

时间:2019-02-20 12:38:20

标签: ruby-on-rails ruby rubygems nokogiri macos-mojave

当我在Ruby版本2.4.4和macOS Mojave中运行bundle install时遇到了这个问题:

Fetching nokogiri 1.8.5
Installing nokogiri 1.8.5 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
ERROR: cannot discover where libxml2 is located on your system. please
make sure `pkg-config` is installed.

所以我跑了

xcode-select --install

但是当我运行gem install nokogiri时,得到以下输出:

ERROR:  While executing gem ... (TypeError)
    incompatible marshal file format (can't be read)
    format version 4.8 required; 60.33 given

我尝试将cookies_serializer设置为:hybrid

Rails.application.config.action_dispatch.cookies_serializer = :hybrid

但没有任何效果。

是否可以解决此问题?我什至不能立即运行我的Rails服务器。

3 个答案:

答案 0 :(得分:33)

感谢Morgan Jarry的回答,这对我有用:

我检查了我当前的消息来源,实际上它们已经过时了:

gem sources

已打印

*** CURRENT SOURCES ***
http://gems.rubyforge.org/
http://gems.github.com

所以我运行了该脚本以将其删除,并用https://rubygems.org/

替换了它们
gem sources -r  http://gems.rubyforge.org/
gem sources -r http://gems.github.com
gem sources -a https://rubygems.org/

答案 1 :(得分:20)

尝试删除您的~/.gemrc。我在Mojave上遇到了同样的问题,这解决了我的问题。

答案 2 :(得分:6)

您必须删除拥有的所有宝石资源,并添加https://rubygems.org/。请注意,http://gems.rubyforge.org/http://gems.github.com已永久死亡,应将其删除。您可以运行以下命令列出来源:

gem sources 

您应该得到这样的东西:

*** CURRENT SOURCES ***

//gems.rubyforge.org/
//gems.github.com

1)删除所有来源:

gem sources -r http://gems.rubyforge.org/
gem sources -r http://gems.github.com

2)添加正确的来源:

gem sources -a https://rubygems.org/

希望这会有所帮助!