如何解决mysql2 Ruby Gem无法安装ubuntu 20.04
有人知道这是什么原因吗,我该如何解决?我正在尝试为我的项目安装一个ruby gem,这是一个在Rails 3上运行的旧项目,但是我在ubuntu 20.04上运行。我所做的基本上是在运行bundle install,然后除了该ruby gem以外,其他所有功能都可以运行。请指教!
current directory: /home/decil/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/mysql2-0.3.21/ext/mysql2
make "DESTDIR=" clean
current directory: /home/decil/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/mysql2-0.3.21/ext/mysql2
make "DESTDIR="
compiling client.c
client.c: In function ‘nogvl_read_query_result’:
client.c:439:3: error: unknown type name ‘my_bool’; did you mean ‘bool’?
439 | my_bool res = mysql_read_query_result(client);
| ^~~~~~~
| bool
client.c: In function ‘rb_query’:
client.c:687:14: warning: passing argument 1 of ‘rb_rescue2’ from incompatible pointer type [-Wincompatible-pointer-types]
687 | rb_rescue2(do_send_query,(VALUE)&args,disconnect_and_raise,self,rb_eException,(VALUE)0);
| ^~~~~~~~~~~~~
| |
| VALUE (*)(void *) {aka long unsigned int (*)(void *)}
In file included from /home/decil/.rbenv/versions/2.7.1/include/ruby-2.7.0/ruby.h:33,from ./mysql2_ext.h:8,from client.c:1:
/home/decil/.rbenv/versions/2.7.1/include/ruby-2.7.0/ruby/ruby.h:1988:18: note: expected ‘VALUE (*)(VALUE)’ {aka ‘long unsigned int (*)(long unsigned int)’} but argument is of type ‘VALUE (*)(void *)’ {aka ‘long unsigned int (*)(void *)’}
1988 | VALUE rb_rescue2(VALUE(*)(VALUE),VALUE,VALUE(*)(VALUE,VALUE),...);
| ^~~~~~~~~~~~~~~
client.c:695:16: warning: passing argument 1 of ‘rb_rescue2’ from incompatible pointer type [-Wincompatible-pointer-types]
695 | rb_rescue2(do_query,(VALUE)&async_args,(VALUE)0);
| ^~~~~~~~
| |
| VALUE (*)(void *) {aka long unsigned int (*)(void *)}
In file included from /home/decil/.rbenv/versions/2.7.1/include/ruby-2.7.0/ruby.h:33,...);
| ^~~~~~~~~~~~~~~
client.c: In function ‘_mysql_client_options’:
client.c:762:3: error: unknown type name ‘my_bool’; did you mean ‘bool’?
762 | my_bool boolval;
| ^~~~~~~
| bool
client.c:797:10: error: ‘MYSQL_SECURE_AUTH’ undeclared (first use in this function); did you mean ‘MYSQL_DEFAULT_AUTH’?
797 | case MYSQL_SECURE_AUTH:
| ^~~~~~~~~~~~~~~~~
| MYSQL_DEFAULT_AUTH
client.c:797:10: note: each undeclared identifier is reported only once for each function it appears in
client.c: In function ‘set_secure_auth’:
client.c:1185:38: error: ‘MYSQL_SECURE_AUTH’ undeclared (first use in this function); did you mean ‘MYSQL_DEFAULT_AUTH’?
1185 | return _mysql_client_options(self,MYSQL_SECURE_AUTH,value);
| ^~~~~~~~~~~~~~~~~
| MYSQL_DEFAULT_AUTH
client.c:1186:1: warning: control reaches end of non-void function [-Wreturn-type]
1186 | }
| ^
client.c: At top level:
cc1: warning: unrecognized command line option ‘-Wno-self-assign’
cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’
cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’
make: *** [Makefile:245: client.o] Error 1
解决方法
我在0.4.5版中遇到了类似的问题,在0.4.10版中对我来说效果很好
在Gemfile上尝试以下操作:
gem 'mysql2','0.4.10'
,
与Rails 3兼容的mysql2 gem的最新版本是v0.3.21(source)。
mysql2 gem v0.3.21取决于MySQL本身的Insert(st,2)
Step 1: Let p be a pointer to the root of st,which is node 1
1 <- p
/ \
NULL NULL
Step 2: Because (*p)->data == 1 < 2,we move to the right (p = &((*p)->right)) and have *p == NULL
1
/ \
NULL NULL <- p
Now we have p point to to the new node n: *p = n
1
/ \
NULL n
And have now added n into our tree successfully.
数据类型。
MySQL 5.7具有my_bool
数据类型,但已在MySQL 8.0(source)中删除。
Ubuntu 20.04没有MySQL 5.7,只有8.0+(source)。
因此,您需要install MySQL 5.7 from MySQL's own apt repositories和stop your server from installing any MySQL stuff from Ubuntu's apt repositories。
我刚刚完成了所有这些工作,并成功在Ubuntu 20.04 LTS上运行了Rails 3.2应用。
(此外,Rails 3.2.x仅与Ruby
,我的 env:ruby2.3,rails3,ubuntu20 服务器
首先卸载mysql5.8,然后安装mysql5.7
你可以看到这个 enter link description here
但最重要的是在安装 gem mysql2'0.3.11' 之前确保 libmysqlclient-dev 的版本。
默认的 libmysqlclient-dev 版本是 8.0
我下载了
libmysqlclient20_5.7.35-1ubuntu18.04_amd64.deb
libmysqlclient-dev_5.7.35-1ubuntu18.04_amd64.deb
并安装它们sudo dpkg -i
它们
没关系
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。