加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

在Alpine Linux上不能要求ruby gsl

发布时间:2020-12-14 01:44:40 所属栏目:Linux 来源:网络整理
导读:我在docker镜像中运行alpine并运行 ruby代码.这成功安装了所有软件包,但在我尝试使用gsl时失败了. 这是Dockerfile: FROM alpine:3.4RUN apk upgrade --update apk add libatomic readline readline-dev libxml2 libxml2-dev libxslt libxslt-dev zlib-d
我在docker镜像中运行alpine并运行 ruby代码.这成功安装了所有软件包,但在我尝试使用gsl时失败了.

这是Dockerfile:

FROM alpine:3.4

RUN apk upgrade --update 
    && apk add libatomic readline readline-dev libxml2 libxml2-dev 
        libxslt libxslt-dev zlib-dev zlib ruby yaml 
        yaml-dev libffi-dev build-base git nodejs 
        ruby-io-console ruby-irb ruby-json ruby-rake 
        make gsl gsl-dev 
        gcc g++ libffi-dev ruby-dev tzdata

RUN gsl-config --cflags
RUN gem install --no-document nmatrix gsl
ADD scripts/gsl-test.rb test.rb
RUN ruby test.rb

测试文件是:

require 'gsl'

运行docker build.产生以下输出:

Sending build context to Docker daemon    20 MB
Step 0 : FROM alpine:3.4
 ---> ad84c222f6a3
Step 1 : RUN apk upgrade --update     && apk add libatomic readline readline-dev libxml2 libxml2-dev         libxslt libxslt-dev zlib-dev zlib ruby yaml         yaml-dev libffi-dev build-base git nodejs         ruby-io-console ruby-irb ruby-json ruby-rake         make gsl gsl-dev         gcc g++ libffi-dev ruby-dev tzdata
 ---> Using cache
 ---> b7f66d6f2bd7
Step 2 : RUN gsl-config --cflags
 ---> Using cache
 ---> b5acc8868a74
Step 3 : RUN gem install --no-document nmatrix gsl
 ---> Using cache
 ---> 2623683a706e
Step 4 : ADD scripts/gsl-test.rb test.rb
 ---> e4388f952198
Removing intermediate container 743340a3be60
Step 5 : RUN ruby test.rb
 ---> Running in c53a34ece153
/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': Error relocating /usr/lib/ruby/gems/2.3.0/gems/gsl-2.1.0.1/lib/gsl_native.so: gsl_multifit_fdfsolver_jac: symbol not found - /usr/lib/ruby/gems/2.3.0/gems/gsl-2.1.0.1/lib/gsl_native.so (LoadError)
        from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/lib/ruby/gems/2.3.0/gems/backports-3.6.8/lib/backports/std_lib.rb:9:in `require_with_backports'
        from /usr/lib/ruby/gems/2.3.0/gems/gsl-2.1.0.1/lib/gsl.rb:11:in `<top (required)>'
        from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:127:in `require'
        from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:127:in `rescue in require'
        from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:40:in `require'
        from test.rb:1:in `<main>'
The command '/bin/sh -c ruby test.rb' returned a non-zero code: 1

任何帮助将不胜感激.

解决方法

我相信问题是你正在运行gsl版本1.16然后运行最新的gsl gem(2.1.0.1).如果强制gem安装与gsl版本匹配:

gem install --no-document gsl -v 1.16.0.6

它应该很出色.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读