0

我有一个使用 perl:5.22 作为基础映像的 dockerfile 当我这样做时:

#Dockerfile:

From perl:5.22
RUN apt-get update && apt-get install libssl1.0.0 libssl-dev

我收到此错误:当我这样做时:sudo apt-cache policy libssl1.0.0在 dockerfile 中,如下所示:

#Dockerfile:

From perl:5.22
RUN apt-cache policy libssl1.0.0 && \
    apt-cache policy libssl-dev
RUN apt-get update && apt-get install libssl1.0.0

我得到:

第 2/3 步:运行 apt-cache policy libssl1.0.0 && apt-cache policy libssl-dev ---> 在 a60f0185ef5a libssl1.0.0 中运行:
已安装:(无)候选:(无)
版本表:libssl-dev:
已安装:1.1.0f-3+deb9u2
候选:1.1.0f-3+deb9u2
版本表:
*** 1.1.0f-3+deb9u2 500 500 http://security.debian.org/debian-security stretch/updates/main amd64 包 100 /var/lib/dpkg/status 1.1.0f-3+deb9u1 500 500 http://deb.debian.org/debian stretch/main amd64 包

没有可用的候选安装libssl1.0.0;我得到:

E: 包 'libssl1.0.0' 没有安装候选

但是有一个安装libssl-dev包的候选人,但没有一个libssl1.0.0

我是 docker 新手;perl 5.22 基础镜像是否已经预装了 libssl1.0.0?我在他们的基本图像中看不到它,其次,*我如何安装这个包(libssl1.0.0)在我的 dockerfile 中,如果没有可安装的候选人*

最后,由于基本映像已经预装了 libssl-dev,我可以使用这个包,libssl-dev而不是 libssl1.0.0,之间有区别libssl-devlibssl1.0.0吗?

4

1 回答 1

2

实际上,它已经默认安装了。

$ docker run -it perl:5.22 /bin/bash
root@e5315bc25223:~# apt search libssl
Sorting... Done
Full Text Search... Done
libssl-dev/now 1.1.0f-3+deb9u2 amd64 [installed,local]
  Secure Sockets Layer toolkit - development files

libssl1.0.0/now 1.0.1t-1+deb8u8 amd64 [installed,local]
  Secure Sockets Layer toolkit - shared libraries

perl 映像基于 debian:stretch,不再支持 libssl1.0.0。您可以从 jessie ( https://packages.debian.org/jessie/libssl1.0.0 )中提取软件包并使用dpkg.

示例 Dockerfile 添加:

RUN wget "http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u8_amd64.deb" \
    && dpkg -i libssl1.0.0_1.0.1t-1+deb8u8_amd64.deb

关于版本,apt show libssl-dev给出:

包:libssl-dev

版本:1.1.0f-3+deb9u2

至于是否可以使用 1.1.0 而不是 1.0.0,这实际上取决于您的软件要求。

于 2018-06-15T11:30:43.780 回答