ruby - 从源代码安装 ruby 后无法安装 bundler
问题描述
我正在使用 aDockerfile
来构建自定义ruby
图像,如下所示:
FROM debian:9
RUN apt-get update \
&& apt-get install -y \
build-essential \
gcc \
openssl \
procps \
wget \
zlib1g-dev \
&& cd /tmp \
&& wget http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz \
&& tar -xvzf ruby-2.0.0-p0.tar.gz \
&& ls -al \
&& cd ruby-2.0.0-p0 \
&& ./configure \
&& make \
&& make install
USER someuser
WORKDIR /home/someuser
构建完成。
事实上,从图像中:
$ ruby -v
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]
但是当我启动图像并尝试安装时bundler
$ gem install bundler
ERROR: Loading command: install (LoadError)
cannot load such file -- openssl
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass
为什么会这样,因为我已经安装了openssl
?
编辑:它不是这个的副本,因为(虽然我使用的是 OSX)我在图像中编译ruby
并安装debian:9
在openssl
图像中(Dockerfile
)
编辑:在潜在的重复问题中也指出安装libssl-dev
也不能解决问题:
(custom-ruby)*➣ $ docker run -it --user=root pkaramol/test-ruby-new bash
root@bde5e149ced7:/home/someuser# dpkg -l | grep -i ssl
ii libssl-dev:amd64 1.1.0j-1~deb9u1 amd64 Secure Sockets Layer toolkit - development files
ii libssl-doc 1.1.0j-1~deb9u1 all Secure Sockets Layer toolkit - development documentation
ii libssl1.1:amd64 1.1.0j-1~deb9u1 amd64 Secure Sockets Layer toolkit - shared libraries
ii openssl 1.1.0j-1~deb9u1 amd64 Secure Sockets Layer toolkit - cryptographic utility
root@bde5e149ced7:/home/someuser# gem install bundler
ERROR: Loading command: install (LoadError)
cannot load such file -- openssl
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass
解决方案
推荐阅读
- github - 阻止文件被检入存储库?
- .htaccess - 使用 .htaccess 自动更正文件扩展名
- php - CakePHP 如何在 hasMany 查询中限制两个表的字段?
- kotlin - 为什么将不同类型的可变列表放在可变列表中时表现为不可变
- python - 为什么我在尝试引用 cv2、inutils 等时得到一个名为:___ 错误的无模块
- r - 如何在 tidyverse 中滚动计算?
- python - 如何设置 tkinter 'textvariable',在单独的线程中运行,来自主线程的队列中的值?
- java - 为 Swagger DTO 对象提供默认值
- javascript - 用户输入和 toFixed 方法不起作用
- rust - 一次不能多次借用 `reader` 作为 mutable