libmysqlclient.so.18:无法打开共享对象文件:没有这样的文件或目录

2024-03-03

我目前正在尝试将 AWS Lambda 用作 Ruby 应用程序。我安装时遇到问题mysql2,当我跑的时候bundle install我收到以下错误:

An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue. Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling

我发现了一个 Stackoverflow 帖子来创建 Docker 容器来加载依赖项,这是该帖子。无法在 AWS Lambda 上加载文件 mysql2 https://stackoverflow.com/questions/53854487/cannot-load-file-mysql2-on-aws-lambda

我按照帖子中的步骤操作:

move the mysql folder from /usr/lib64/mysql to /usr/mysql
mkdir -p /var/task/lib
cp -a /usr/mysql/.so. /var/task/lib/
bundle config --local build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
bundle install with and without deployment

我能够安装,正如帖子中提到的,文件不能是符号链接,因为一旦你它就会中断zip目录。我尝试使用mv但退出容器后,文件不会保留在目录中。有一次,我zip应用程序并部署到 AWS Lambda 我收到以下错误:

Response:
{
  "errorMessage": "libmysqlclient.so.18: cannot open shared object file: No such file or directory - /var/task/vendor/bundle/ruby/2.5.0/gems/mysql2-0.5.2/lib/mysql2/mysql2.so",
  "errorType": "Init<LoadError>",
  "stackTrace": [
    "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require'",
    "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require'",
    "/var/task/vendor/bundle/ruby/2.5.0/gems/mysql2-0.5.2/lib/mysql2.rb:33:in `<top (required)>'",
    "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require'",
    "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require'",
    "/var/task/my_sql.rb:1:in `<top (required)>'",
    "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require'",
    "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require'",
    "/var/task/lambda_function.rb:8:in `<top (required)>'",
    "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require'",
    "/var/lang/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:92:in `require'"
  ]
}

但我可以看到该文件mysql2.so在供应商目录中:

bash-4.2# cd /var/task/vendor/bundle/ruby/2.5.0/gems/mysql2-0.5.2/lib/mysql2/
bash-4.2# ls
client.rb  console.rb  em.rb  error.rb  field.rb  mysql2.so  result.rb  statement.rb  version.rb
bash-4.2# 

I'm also able to see the files libmysqlclient.so and /mysql2/mysql2.so. enter image description here enter image description here

为什么找不到该文件?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

libmysqlclient.so.18:无法打开共享对象文件:没有这样的文件或目录 的相关文章

随机推荐