我尝试执行以下操作。首先,我安装一个可重定位的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
等等。
但是,有些东西(cpanm?嗯?还是一头雾水。从 CPAN 安装的脚本在其 shebang 行中仍然具有原始的 perl 路径(在本例中为 /home/USER/perl5/perlbrew/perls/perl-5.28.1-fresh_src/bin
(。
上述问题的任何提示,或快速创建一个新的一次性perl安装的替代方法,都是值得赞赏的。另外,上述命令中cp
的-l
(--link
(选项是否会导致问题(除了附加perllocal.pod
并且将包含perl安装的安装记录,这对我来说很好(?
它并不完全相同,但是如果我需要为某些测试场景进行全新安装,我发现docker
有效 - 构建基础映像和干净的perl安装,启动容器并运行"任何"。
您需要root访问权限并能够安装软件包(例如docker(,因此它并不适合每个用例。
https://buildlogs.centos.org/centos/7/docker/有一个基础映像,你可以用它来构建一个"干净"的 CentOS(或者坦率地说,使用任何你喜欢的操作系统 - 大多数都有容器版本(
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"]
您将能够旋转它,例如 使用 /usr/local/bin/perl
docker run
并调用脚本。
这不是你所要求的,但你可以根据需要启动和丢弃你的基础映像 - 你也可以为几个不同的操作系统和perl组合维护镜像。