0

I am installing ruby 2.7.2 on a docker container that uses ubuntu:18.04.c I first tried to install rbenv but it did not offer the version I need so I resorted to installing from source. However when installing from source the make install does not pass. This is the method I used to install from source https://coderwall.com/p/3u__pq/install-ruby-from-source-on-ubuntu and this is what I looked at to resolve my issues to no avail Unable to locate package openssl-dev. Also I cannot install rvm as it is not picked up by bash.

docker file

    #
# Ubuntu Dockerfile
#
# https://github.com/dockerfile/ubuntu
#

# Pull base image.
FROM ubuntu:18.04
ARG APP_NAME=<appname>
# Install.
RUN \
  apt-get update && \
  apt-get -y upgrade && \
  apt-get install -y build-essential openssl libssl-dev zlib1g-dev&& \
  apt-get install -y software-properties-common && \
  apt-get install -y byobu curl git htop man unzip vim wget openssl libffi-dev &&\
  rm -rf /var/lib/apt/lists/*
RUN \
  wget https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.2.tar.bz2 &&\
  tar -xf ruby-2.7.2.tar.bz2

RUN cd ruby-2.7.2
RUN pwd
RUN ./ruby-2.7.2/configure --prefix=/my/ruby/dir
RUN make
RUN make install
# Set environment variables.
EXPOSE 5000


ENV HOME /root
ENV PATH="${PATH}:/my/ruby/dir"


# Define working directory.
WORKDIR /root
COPY ${APP_NAME}/ ./${APP_NAME}/
# Define default command.
CMD ["bash"]

When I did make install it is complaining that openssl is not installed however I did do apt install openssl

*** Following extensions are not compiled:
openssl:
    Could not be configured. It will not be installed.
    /ruby-2.7.2/ext/openssl/extconf.rb:97: OpenSSL library could not be found. You might want to use --with-openssl-dir=<dir> option to specify the prefix where OpenSSL is installed.
    Check ext/openssl/mkmf.log for more details.
dbm:
    Could not be configured. It will not be installed.
    Check ext/dbm/mkmf.log for more details.
readline:
    Could not be configured. It will not be installed.
    /ruby-2.7.2/ext/readline/extconf.rb:62: Neither readline nor libedit was found
    Check ext/readline/mkmf.log for more details.
gdbm:
    Could not be configured. It will not be installed.
    Check ext/gdbm/mkmf.log for more details.
zlib:
    Could not be configured. It will not be installed.
    Check ext/zlib/mkmf.log for more details.
*** Fix the problems, then remove these directories and try again if you want.

Later on this is the error message

Traceback (most recent call last):
    11: from ./tool/rbinstall.rb:947:in `<main>'
    10: from ./tool/rbinstall.rb:947:in `each'
     9: from ./tool/rbinstall.rb:950:in `block in <main>'
     8: from ./tool/rbinstall.rb:799:in `block in <main>'
     7: from ./tool/rbinstall.rb:835:in `install_default_gem'
     6: from ./tool/rbinstall.rb:835:in `each'
     5: from ./tool/rbinstall.rb:845:in `block in install_default_gem'
     4: from ./tool/rbinstall.rb:279:in `open_for_install'
     3: from ./tool/rbinstall.rb:846:in `block (2 levels) in install_default_gem'
     2: from /ruby-2.7.2/lib/rubygems/specification.rb:2430:in `to_ruby'
     1: from /ruby-2.7.2/lib/rubygems/core_ext/kernel_require.rb:92:in `require'
/ruby-2.7.2/lib/rubygems/core_ext/kernel_require.rb:92:in `require': cannot load such file -- openssl (LoadError)
CodeJedi
  • 1
  • 1

1 Answers1

0

I think your problem is here

RUN cd ruby-2.7.2
RUN pwd
RUN ./ruby-2.7.2/configure --prefix=/my/ruby/dir

You cd into ruby-2.7.2 then attempt ./ruby-2.7.2/configure ... but you are already in the directory ruby-2.7.2 so this line

RUN ./ruby-2.7.2/configure --prefix=/my/ruby/dir

should fail.

Try replacing

RUN ./ruby-2.7.2/configure --prefix=/my/ruby/dir

with

RUN ./configure --prefix=/my/ruby/dir

You could clean up your Docerfile a bit as well by removing lines like

RUN pwd

neonwatty
  • 332
  • 1
  • 5