redmine安装失败,ruby 3.0.4,mysql2(0.5.4)“未定义方法'split'”“rb_enc_interned_str未找到”

Gar*_*ken 1 ruby ubuntu redmine

构建新系统:

\n
  ubuntu 20.04\n  mysql 5.7.38\n  ruby-install and chruby\n    ruby 3.0.4\n  redmine 5.0.0\n
Run Code Online (Sandbox Code Playgroud)\n

在用户帐户中,尝试安装redmine 5.0.0:

\n
bundle install\nGem::Ext::BuildError: ERROR: Failed to build gem native extension.\n\ncurrent directory: /home/test_user/.gem/ruby/3.0.4/gems/mysql2-0.5.4/ext/mysql2\n/opt/rubies/ruby-3.0.4/bin/ruby -I /opt/rubies/ruby-3.0.4/lib/ruby/3.0.0 -r ./siteconf20220520-28025-uxnsbe.rb\nextconf.rb\n...\n*** extconf.rb failed ***\nCould not create Makefile due to some reason, probably lack of necessary libraries and/or headers.  Check the mkmf.log file for more details.  You may need configuration options.\nProvided configuration options:\n...\n/opt/rubies/ruby-3.0.4/lib/ruby/3.0.0/mkmf.rb:1050:in `block in find_library': undefined method `split' for\nnil:NilClass (NoMethodError)\n ...\n
Run Code Online (Sandbox Code Playgroud)\n

检查日志,我看到以下错误:

\n
conftest.c: In function \xe2\x80\x98t\xe2\x80\x99:\nconftest.c:14:57: error: \xe2\x80\x98rb_wait_for_single_fd\xe2\x80\x99 undeclared (first use in this function)\n   14 | int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_wait_for_single_fd; return !p; }\n\nconftest.c: In function \xe2\x80\x98t\xe2\x80\x99:\nconftest.c:16:57: error: \xe2\x80\x98rb_enc_interned_str\xe2\x80\x99 undeclared (first use in this function); did you mean \xe2\x80\x98rb_interned_str\xe2\x80\x99?\n   16 | int t(void) { void ((*volatile p)()); p = (void ((*)()))rb_enc_interned_str; return !p; }\n
Run Code Online (Sandbox Code Playgroud)\n

我安装了以下 mysql 东西:

\n
$ apt list --installed | grep mysql\nlibmysqlclient20/unknown,now 5.7.38-1ubuntu18.04 amd64 [installed]\nmysql-apt-config/unknown,now 0.8.22-1 all [installed]\nmysql-client/unknown,now 5.7.38-1ubuntu18.04 amd64 [installed,upgradable to: 8.0.29-0ubuntu0.20.04.3]\nmysql-common/focal,now 5.8+1.0.5ubuntu2 all [installed,automatic]\nmysql-community-client/unknown,now 5.7.38-1ubuntu18.04 amd64 [installed,automatic]\nmysql-community-server/unknown,now 5.7.38-1ubuntu18.04 amd64 [installed]\nmysql-server/unknown,now 5.7.38-1ubuntu18.04 amd64 [installed,upgradable to: 8.0.29-0ubuntu0.20.04.3]\n
Run Code Online (Sandbox Code Playgroud)\n

我有一点困惑; ruby 安装(mkmf.rb,没有方法“split”)和 redmine 代码(未声明的函数)报告了错误。

\n

我意识到这是一个新的 ruby​​ 和一个新的 redmine,以及一个旧的 mysql;不确定这是否是问题所在。我想坚持使用 mysql 5.7 以避免升级我现在需要迁移的数据。

\n

Cas*_*per 5

您缺少 MySQL 开发包之一。对于其他遇到这个问题的人来说,候选人是:

default-libmysqld-dev 
default-libmysqlclient-dev
Run Code Online (Sandbox Code Playgroud)

或者有时只是直接打包:

libmysqld-dev 
libmysqlclient-dev
Run Code Online (Sandbox Code Playgroud)

在这个特殊情况下,结果是default-libmysqlclient-dev