Самый быстрый и дешевый способ создания свежей, одноразовой установки perl с использованием perlbrew? - PullRequest
3 голосов
/ 26 марта 2019

Я пытался сделать следующее. Сначала я устанавливаю перемещаемый Perl, например ::1001

% 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? EUMM?) Все еще запутано. Скрипты, установленные из CPAN, все еще имеют исходный путь perl (в данном случае /home/USER/perl5/perlbrew/perls/perl-5.28.1-fresh_src/bin) в своей строке shebang.

Приветствуется любой намек на вышеуказанную проблему или альтернативный способ быстрого создания новой одноразовой установки perl. Кроме того, может ли -l (--link) параметр cp в приведенной выше команде вызвать проблему (кроме того, что perllocal.pod добавляется и будет содержать установочные записи установок perl, что мне подходит)?

1 Ответ

2 голосов
/ 26 марта 2019

Это не совсем то же самое, но я считаю, что docker работает, если мне нужна чистая установка для определенных сценариев тестирования - создайте базовый образ и чистую установку perl, запустите контейнер и запустите «что угодно».

Вам потребуется доступ с правами суперпользователя и возможность устанавливать пакеты (например, 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.

...