ruby-on-rails - 由于出错,Ruby gem 'byebug 5.0.0' 安装失败
问题描述
我正在尝试在 ubuntu 环境中安装 byebug gem v5.0.0。v 5.0.0 是项目要求,我不能使用更新的版本。这些是我正在使用的当前版本
bundle -v
Bundler version 2.1.4
ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]
bundle -v
Bundler version 2.1.4
rvm -v
rvm 1.29.10 (manual) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]
rails -v
Rails 5.2.3
当我尝试安装时,gem install byebug -v 5.0.0
将以下内容写入 cli。执行 gem 的 make 文件时,安装似乎失败
即使我尝试make
在/var/lib/gems/2.7.0/gems/byebug-5.0.0/ext/byebug
目录中执行,我也会收到以 context.c 文件开头的相同错误消息。
这似乎是 5.0.0 版本的一些安装问题,我确实尝试安装最新版本的 byebug 进行测试,并且安装成功。
current directory: /var/lib/gems/2.7.0/gems/byebug-5.0.0/ext/byebug
/usr/bin/ruby2.7 -I /usr/lib/ruby/2.7.0 -r ./siteconf20201011-7796-1qpm603.rb extconf.rb
creating Makefile
current directory: /var/lib/gems/2.7.0/gems/byebug-5.0.0/ext/byebug
make "DESTDIR=" clean
current directory: /var/lib/gems/2.7.0/gems/byebug-5.0.0/ext/byebug
make "DESTDIR="
compiling breakpoint.c
compiling byebug.c
compiling context.c
context.c: In function ‘call_with_debug_inspector’:
context.c:191:20: error: passing argument 1 of ‘rb_ensure’ from incompatible pointer type [-Werror=incompatible-pointer-types]
191 | return rb_ensure(open_debug_inspector, (VALUE) data, close_debug_inspector,
| ^~~~~~~~~~~~~~~~~~~~
| |
| VALUE (*)(struct call_with_inspection_data *) {aka long unsigned int (*)(struct call_with_inspection_data *)}
In file included from /usr/include/ruby-2.7.0/ruby.h:33,
from ./byebug.h:4,
from context.c:1:
/usr/include/ruby-2.7.0/ruby/ruby.h:1990:17: note: expected ‘VALUE (*)(VALUE)’ {aka ‘long unsigned int (*)(long unsigned int)’} but argument is of type ‘VALUE (*)(struct call_with_inspection_data *)’ {aka ‘long unsigned int (*)(struct call_with_inspection_data *)’}
1990 | VALUE rb_ensure(VALUE(*)(VALUE),VALUE,VALUE(*)(VALUE),VALUE);
| ^~~~~~~~~~~~~~~
context.c:191:56: error: passing argument 3 of ‘rb_ensure’ from incompatible pointer type [-Werror=incompatible-pointer-types]
191 | return rb_ensure(open_debug_inspector, (VALUE) data, close_debug_inspector,
| ^~~~~~~~~~~~~~~~~~~~~
| |
| VALUE (*)(struct call_with_inspection_data *) {aka long unsigned int (*)(struct call_with_inspection_data *)}
In file included from /usr/include/ruby-2.7.0/ruby.h:33,
from ./byebug.h:4,
from context.c:1:
/usr/include/ruby-2.7.0/ruby/ruby.h:1990:39: note: expected ‘VALUE (*)(VALUE)’ {aka ‘long unsigned int (*)(long unsigned int)’} but argument is of type ‘VALUE (*)(struct call_with_inspection_data *)’ {aka ‘long unsigned int (*)(struct call_with_inspection_data *)’}
1990 | VALUE rb_ensure(VALUE(*)(VALUE),VALUE,VALUE(*)(VALUE),VALUE);
| ^~~~~~~~~~~~~~~
In file included from /usr/include/ruby-2.7.0/ruby/ruby.h:2148,
from /usr/include/ruby-2.7.0/ruby.h:33,
from ./byebug.h:4,
from context.c:1:
context.c: In function ‘Init_context’:
/usr/include/ruby-2.7.0/ruby/intern.h:1218:137: error: passing argument 3 of ‘rb_define_singleton_method1’ from incompatible pointer type [-Werror=incompatible-pointer-types]
1218 | #define rb_define_singleton_method(klass, mid, func, arity) rb_define_singleton_method_choose_prototypem3((arity),(func))((klass),(mid),(func),(arity));
| ^~~~~~
| |
| VALUE (*)(VALUE) {aka long unsigned int (*)(long unsigned int)}
context.c:673:3: note: in expansion of macro ‘rb_define_singleton_method’
673 | rb_define_singleton_method(cDebugThread, "inherited", dt_inherited, 1);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/ruby-2.7.0/ruby/intern.h:1195:27: note: expected ‘VALUE (*)(VALUE, VALUE)’ {aka ‘long unsigned int (*)(long unsigned int, long unsigned int)’} but argument is of type ‘VALUE (*)(VALUE)’ {aka ‘long unsigned int (*)(long unsigned int)’}
1195 | RB_METHOD_DEFINITION_DECL(rb_define_singleton_method, (2,3), (VALUE klass, const char *name), (klass, name))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/ruby-2.7.0/ruby/intern.h:1042:82: note: in definition of macro ‘RB_METHOD_DEFINITION_DECL_C’
1042 | __attribute__((__unused__,__weakref__(#def),__nonnull__ nonnull))static void defname(RB_UNWRAP_MACRO decl,VALUE(*func)funcargs,int arity);
| ^~~~~~~
/usr/include/ruby-2.7.0/ruby/intern.h:1075:1: note: in expansion of macro ‘RB_METHOD_DEFINITION_DECL_1’
1075 | RB_METHOD_DEFINITION_DECL_1(def,nonnull,def##1 ,1 ,decl,vars,(VALUE,VALUE)) \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/ruby-2.7.0/ruby/intern.h:1195:1: note: in expansion of macro ‘RB_METHOD_DEFINITION_DECL’
1195 | RB_METHOD_DEFINITION_DECL(rb_define_singleton_method, (2,3), (VALUE klass, const char *name), (klass, name))
| ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make: *** [Makefile:245: context.o] Error 1
make failed, exit code 2
解决方案
该版本的 byebug 来自 2015 年,当时 ruby 还在 v2.2.1 上
如果您不能使用更新的再见错误;使用较旧的红宝石。
旧版本的 ruby 可能会要求您使用项目所需的所有 gem 的旧版本。你有显示目标版本的 Gemfile.lock 吗?如果不是,您可能必须使用 ruby gems 来查找每个 gen 在 2015 年初的最新版本。
https://rubygems.org/gems/byebug/versions显示 byebug 的版本发布日期。
推荐阅读
- php - Wordpress 将 php 和 html 模板转换为简码
- powerpoint - 更改布局时如何防止对象/文本改变颜色?
- javascript - 关于 Toggle with same Class Javascript No jQuery
- html -
HTML/CSS - 即使有标签也能保持元素在同一行 - discord - Discord.js Bot -- 如何检查每一天是哪一天
- google-bigquery - BigQuery 标准 sql - 不匹配正则表达式
- c# - 如何使用 C# MsgPack 反序列化 [[doubles], [ints]] 数组?
- java - AsynTask 永远不会在 IntentService 中运行
- sql - 在同一个表上具有多个连接的 Oracle 复杂查询
- c# - 将 rgb 字符串转换为 Color32