Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

333
Visualizações
Instale módulos con perlbrew y cpm: el interruptor perlbrew no cambia @INC durante la compilación de la ventana acoplable

Me gustaría usar el instalador rápido del módulo cpm en lugar de cpanm en mis proyectos.

También instalo la versión perl de destino usando perlbrew .

De acuerdo con la documentación de la opción cpm -g , se instalarán módulos en el @INC actual

¿Cómo forzar el cambio de perlbrew @INC en Dockerfile?

A continuación se muestra parte de mi 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

Cuando construyo la salida Dockerfile de perl -le 'print for @INC' es la misma en ambas ocasiones:

 /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

Pero si hago lo mismo manualmente, el resultado está bien:

 $ 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
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Para empezar, " Se inicia una subcapa con... " indica que tiene un perlbrew configurado incorrectamente. Se le indicó que agregara lo siguiente a la secuencia de comandos de inicio de su shell:

 source "${PERLBREW_ROOT:-$HOME/perl5/perlbrew}"/etc/bashrc

Sin esto, se utiliza un mecanismo alternativo para intentar proporcionar la funcionalidad deseada, pero es completamente inútil fuera de los shells interactivos.


En segundo lugar, este es un uso bastante dudoso de perlbrew. Si su secuencia de comandos docker funcionó según lo previsto, tendría consecuencias de gran alcance. Eso no es bueno. Podría usar perlbrew use , pero en su lugar podría usar la compilación perl correcta directamente usando

 RUN "${PERLBREW_ROOT:-$HOME/perl5/perlbrew}"/perls/perl-5.31.0/bin/perl -S cpm install -gv CGI

En su caso, esto debería resolverse a

 RUN /usr/local/perlbrew/perls/perl-5.31.0/bin/perl -S cpm install -gv CGI

para usted.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda