2016-10-09 5 views
4

나는 알파인을 도커 이미지와 루비 코드로 실행 중이다. 이렇게하면 모든 패키지가 성공적으로 설치되지만 gsl을 요구할 때 실패합니다. 여기 알파인 리눅스에서 루비 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' 

실행 고정 표시기 빌드. 다음 출력을 생성합니다 :

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 

어떤 도움을 주시면 감사하겠습니다.

답변

1

나는 당신이 gsl 버전 1.16을 실행하고 있고 최신 gsl gem (2.1.0.1)을 실행하고 있다고 믿습니다. gsl 버전과 일치하도록 gem을 강제 설치할 경우 :

gem install --no-document gsl -v 1.16.0.6 

훌륭하게 작동합니다.