我想在项目中使用快速cpm模块安装程序而不是cpanm。
另外,我使用perlbrew安装目标perl版本。
根据cpm 选项的文档-g将模块安装到当前的@INC中
-g
如何在Dockerfile中强制Perlbrew更改@INC?
以下是我的Dockerfile的一部分
RUN perl -le 'print for @INC' && \ perlbrew switch perl-5.31.0 && \ perl -le 'print for @INC' && \ cpm install -gv CGI && \ perlbrew list-modules
当我构建Dockerfile时,两次的输出perl -le 'print for @INC'相同:
perl -le 'print for @INC'
/etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base
但是,如果我手动执行相同操作,结果也可以:
$ docker run -it pavelsr/xxxhub root@1a34ea34a3fb:/# perl -le 'print for @INC' /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base . root@1a34ea34a3fb:/# perlbrew switch perl-5.31.0 A sub-shell is launched with perl-5.31.0 as the activated perl. Run 'exit' to finish it. root@1a34ea34a3fb:/# perl -le 'print for @INC' /usr/local/perlbrew/perls/perl-5.31.0/lib/site_perl/5.31.0/x86_64-linux /usr/local/perlbrew/perls/perl-5.31.0/lib/site_perl/5.31.0 /usr/local/perlbrew/perls/perl-5.31.0/lib/5.31.0/x86_64-linux /usr/local/perlbrew/perls/perl-5.31.0/lib/5.31.0 root@1a34ea34a3fb:/# cpm install -g CGI DONE install HTML-Tagset-3.20 DONE install HTML-Parser-3.72 DONE install CGI-4.44 3 distributions installed. root@1a34ea34a3fb:/# perlbrew list-modules CGI HTML::Parser HTML::Tagset Perl
对于初学者,“ 使用…启动子外壳 ”表示您的安装不正确perlbrew。系统提示您将以下内容添加到Shell的启动脚本中:
perlbrew
source "${PERLBREW_ROOT:-$HOME/perl5/perlbrew}"/etc/bashrc
没有这个,就使用后备机制来尝试提供所需的功能,但是在交互式外壳程序之外,它是完全没有用的。
其次,这是对白葡萄酒的相当怀疑。如果您的docker脚本按预期工作,将产生深远的影响。那不是好事。您可以使用perlbrew use,但是您可以perl直接使用来使用正确的构建
perlbrew use
perl
RUN "${PERLBREW_ROOT:-$HOME/perl5/perlbrew}"/perls/perl-5.31.0/bin/perl -S cpm install -gv CGI
就您而言,这应该解决
RUN /usr/local/perlbrew/perls/perl-5.31.0/bin/perl -S cpm install -gv CGI
为了你。