1

我正在尝试将 perl 5.12.3 安装到我的 dockerfile 中的 Fedora 33 Docker 映像上,但是当我尝试构建映像时,我遇到了这个错误:

/bin/sh: line 1: /dev/tty: No such device or address
make[1]: Leaving directory '/'
make[1]: [makefile:964: minitest] Error 1 (ignored)
./miniperl -Ilib autodoc.pl
make: *** [makefile:513: pod/perlintern.pod] Segmentation fault (core dumped)

这就是我尝试安装它的方式:

RUN wget https://www.cpan.org/authors/id/R/RJ/RJBS/perl-5.12.3.tar.gz
RUN tar -xzf perl-5.12.3.tar.gz
RUN perl-5.12.3/Configure -Dmksymlinks -des -Dprefix=/usr/local/ -d y &&\
    make && \
    make test && \
    make install
RUN perl -v

我想问题在于 docker 正在运行没有标准输入或 tty 的构建上下文。有谁知道解决这个问题?我尝试安装 perlbrew 来完成此任务,但事实证明这本身就有很多问题。感谢您提供任何帮助或建议。我对在映像中安装 perl 5.12.3 的任何其他方法持开放态度。

4

1 回答 1

0

我能够像这样安装 Perl 版本 5.12.4 (从我的 Ubuntu 21.04 笔记本电脑perlbrew构建 docker 映像):fedora:33

Dockerfile

FROM fedora:33
SHELL ["/bin/bash", "-c"]
RUN yum -y update \
        && yum -y install gcc gcc-c++ make curl \
        vim wget zlib-devel openssl-devel bzip2 patch \
        perl-CPAN perl-App-cpanminus

ARG user=root
ARG home=/$user
WORKDIR $home
USER $user
COPY entrypoint.sh .
RUN chmod +x entrypoint.sh
ENTRYPOINT ["./entrypoint.sh"]

入口点.sh

curl -L https://install.perlbrew.pl | SHELL=/bin/bash bash
echo 'export PERLBREW_ROOT=$HOME/perl5/perlbrew' >> .bashrc
echo 'source $PERLBREW_ROOT/etc/bashrc' >> .bashrc
export PERLBREW_ROOT=$HOME/perl5/perlbrew
source $PERLBREW_ROOT/etc/bashrc
perlbrew install --notest --noman perl-5.12.4
perlbrew install-cpanm
perlbrew switch perl-5.12.4
perl --version
exec bash
于 2021-07-12T19:03:15.393 回答