使用 yum 安装 ruby-devel 时出错?

error in installing ruby-devel using yum?

您好,我尝试安装 ruby gem json 但出现以下错误

`构建本机扩展。这可能需要一段时间... 错误:安装 json 时出错: 错误:无法构建 gem 本机扩展。

mkmf.rb 在 /usr/share/include/ruby.h

找不到 ruby 的头文件

Gem 文件将保留安装在 /home/jenkins/.gem/ruby/gems/json-2.0.2 中以供检查。 结果记录到 /home/jenkins/.gem/ruby/gems/json-2.0.2/ext/json/ext/generator/gem_make.out`

我查找了类似的 post 并被指示安装 ruby-devel。但这也让我很为难。

yum install ruby-devel
Loaded plugins: addreleaserel, priorities, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package ruby-devel.x86_64 0:2.0.0.598-25.el7_1 will be installed
--> Processing Dependency: ruby(x86-64) = 2.0.0.598-25.el7_1 for package: ruby-devel-2.0.0.598-25.el7_1.x86_64
--> Finished Dependency Resolution
Error: Package: ruby-devel-2.0.0.598-25.el7_1.x86_64 (RHN-rhel-x86_64-server-optional-7-1-locked)
          Requires: ruby(x86-64) = 2.0.0.598-25.el7_1
          Installed: ruby-2.0.0.648-29.el7.x86_64 (@RHN-rhel-x86_64-server-7-latest)
              ruby(x86-64) = 2.0.0.648-29.el7
          Available: ruby-2.0.0.353-20.el7.x86_64 (RHN-rhel-x86_64-server-7)
              ruby(x86-64) = 2.0.0.353-20.el7
          Available: ruby-2.0.0.353-22.el7_0.x86_64 (RHN-rhel-x86_64-server-7)
              ruby(x86-64) = 2.0.0.353-22.el7_0
          Available: ruby-2.0.0.598-24.el7.x86_64 (RHN-rhel-x86_64-server-7)
              ruby(x86-64) = 2.0.0.598-24.el7
          Available: ruby-2.0.0.598-25.el7_1.x86_64 (RHN-rhel-x86_64-server-7-1-locked)
              ruby(x86-64) = 2.0.0.598-25.el7_1
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest

任何人都可以建议我使用 yum 安装 ruby-devel 的步骤吗?请

您配置的存储库似乎有问题。

根据您的错误消息,YUM 正在尝试从 "RHN-rhel-x86_64-server-optional-7-1-locked" 频道安装 ruby-devel.x86_64 0:2.0.0.598-25.el7_1,但您目前从“@RHN-rhel-x86_64-server-7-latest”频道安装了 ruby-2.0.0.648-29.el7.x86_64由于发布版本不匹配,这将不满足依赖关系。

为了让 YUM 完成您发布的交易,它必须安装旧版本的 RedHat ruby 软件包,我认为它不想在没有被明确告知的情况下这样做。

我可以想到几个选项,具体取决于您希望如何解决此问题。我的第一个建议是如果我管理这个服务器我会做什么,那就是整理存储库配置并发现为什么 yum install ruby-devel 试图安装一个旧包(它可能与那个锁定的频道有关) .

另一种选择是通过任何必要的方式安装 ruby-devel 软件包,这可能对您的 RedHat 订阅不利或可能会造成破坏。您将首先用匹配 ruby-devel 的旧版本替换已安装的 ruby 版本,然后尝试安装 ruby-devel:

yum downgrade ruby-2.0.0.598-25
yum install ruby-devel-2.0.0.598-25

我没有带订阅的 RedHat 机器,所以我无法测试第二个建议是否有效,使用风险自负。我还再次建议您尝试修复存​​储库的第一个建议,或者弄清楚为什么其中一个频道被锁定,因为这种方法会更安全,并且如果需要,您可以获得 RedHat 的支持。

希望对您有所帮助