perl - 使用 perlbrew 创建一个全新的、一次性安装的 perl 的最快、最便宜的方法?

标签 perl perlbrew

我尝试执行以下操作。首先,我安装一个可重定位的 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

(然后会根据需要创建 fresh2fresh3 等等;当我想扔掉它们时,我只是 rm -rf ~/perl5/perlbrew/perls/*fresh1 等等。)

然而,有些东西(cpanm?EUMM?)仍然很困惑。从 CPAN 安装的脚本在其 shebang 行中仍然具有原始的 perl 路径(在本例中为 /home/USER/perl5/perlbrew/perls/perl-5.28.1-fresh_src/bin)。

对上述问题的任何提示,或快速创建全新的一次性 perl 安装的替代方法,我们都表示赞赏。另外,-l 会吗? ( --link ) cp 的选项在上面的命令中导致问题(除了 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"]

您可以使用例如docker run 并使用 /usr/local/bin/perl 调用脚本。

这并不完全符合您的要求,但您可以根据需要启动和丢弃您的基本镜像 - 您也可以为几个不同的操作系统和 perl 组合维护镜像。

关于perl - 使用 perlbrew 创建一个全新的、一次性安装的 perl 的最快、最便宜的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55357004/

相关文章:

regex - 何时使用相等运算符而不是绑定(bind)运算符

Perlbrew 错误 : Can't Locate Pod/Usage. 下午

perl - 使用 perlbrew 和 cpanm 定位模块时出错

perl - 如何传递定义为常量的数组的引用?

调用带参数的 perl 例程

perl - "…/auto/List/Util/Util.so: undefined symbol: PL_stack_sp at …/XSLoader.pm"仅当在 Travis CI 上使用 CGI::Test _and_ 运行测试套件时

perl - vim 的正确 perl 路径

perl - 内联内置文档?

perl @array 数据到 R