我尝试执行以下操作。首先,我安装可重定位的Perl,例如:
% perlbrew -Duserelocatableinc -j4 -n --as perl-5.28.1-fresh_src 5.28.1
然后,每当需要新的废弃Perl全新安装来进行测试时,我都会这样做:
% cp -la ~/perl5/perlbrew/perls/perl-5.28.1-fresh{_src,1}
% perlbrew switch 5.28.1-fresh1
(然后会根据需要创建fresh2
,fresh3
等;当我想扔掉这些东西时,我只是rm -rf ~/perl5/perlbrew/perls/*fresh1
,依此类推。)
但是,某些东西(公司或EUMM?)仍然令人困惑。从CPAN安装的脚本的shebang行中仍然具有原始的perl路径(在本例中为/home/USER/perl5/perlbrew/perls/perl-5.28.1-fresh_src/bin
)。
任何有关上述问题的提示,或快速创建全新的Perl一次性安装的另一种方法,都受到赞赏。另外,上述命令中的-l
的{{1}}(--link
)选项是否会引起问题(除了附加cp
并将包含perl安装的安装记录外,对我很好)?
答案 0 :(得分:2)
这不是完全一样,但是如果我需要针对某些测试场景进行全新安装,docker
可以工作-建立基本映像和全新Perl安装,启动容器并运行“无论'。
您将需要root用户访问权限并能够安装软件包(例如docker),因此它并不适合每种用例。
https://buildlogs.centos.org/centos/7/docker/有一个基本映像,可用于构建“干净”的CentOS(或坦率地说使用任何喜欢的OS-大多数都有容器版本)
FROM scratch
ADD CentOS-7-20140625-x86_64-docker_01.img.tar.xz
LABEL name="CentOS Base Image"
CMD ["/bin/bash"]
在工作目录中:
docker build -t mycentos .
这将为您提供非常基本的图像:
然后您的perl dockerfile:
FROM mycentos
COPY local.repo /etc/yum.repos.d/local.repo
RUN yum clean all
RUN yum install --nogpgcheck -y make gcc tar
ADD perl-5.28.1.tar.gz /build/
RUN cd /build/perl-5.28.1 && ./Configure -de
RUN cd /build/perl-5.28.1 && make && make test && make install
COPY MyConfig.pm /root/.cpan/CPAN/MyConfig.pm
RUN cpan install Bundle::CPAN
CMD ["/bin/bash"]
例如,您将能够将其旋转docker run
并使用/usr/local/bin/perl
调用脚本。
这不是您所需要的,但是您可以根据需要启动和丢弃基础映像-您也可以为一些不同的OS和perl组合维护映像。