gpt4 book ai didi

perl - 如何使用多个版本的 Perl 在 Perl 模块中安装脚本?

转载 作者:行者123 更新时间:2023-12-04 08:26:05 27 4
gpt4 key购买 nike

我不认为这是一个重复的问题。这专门针对 Perl 模块附带的脚本。
通常,在安装多个 Perl 版本时,您可以将 perl 可执行文件标记为版本号 (perl5.32),这样它们就可以在 /whatever/bin 中并排放置。 .我需要对模块附带的脚本做同样的事情。示例:perltidy .所以:
当我构建 perl 时,我可以在配置中添加一个设置,它会自动 [原文如此] 创建“版本化”脚本名称吗?
或者,当我调用 perl Makefile.PL 时,我可以设置什么吗?或 perl Build.PL当我构建脚本以制作“版本化”脚本名称时?
是的,有plenvperlbrew ,但我不想在生产端使用它们,但是在我的生产机器上会有一段时间同时存在两个版本。我将随着时间的推移迁移程序;一天晚上,我不会“大刀阔斧”地切换到新版本。

最佳答案

我在 Make links to per-version tools 中写了更多关于此的内容.
我安装了大约 30 个 perls,我手动安装了每个:

$ ./Configure -des -Dprefix=/usr/bin/perls/perl-5.x.y
$ make test install
现在有像 /usr/bin/perls/perl-5.x.y/bin/perl 这样的东西等等。如果我想为此安装模块或脚本,我会使用 cpan :
$ /usr/bin/perls/perl-5.x.y/bin/cpan ...
当您通过普通 Perl 工具链安装时,shebang 行指向 perl安装它(有关更多信息,请参阅 Perl.com 最近的文章 Bang Bang):
#!/usr/local/perls/perl-5.32.0/bin/perl
eval 'exec /usr/local/perls/perl-5.32.0/bin/perl -S $0 ${1+"$@"}'
if $running_under_some_shell;
#!/usr/local/bin/perl
这充分分隔了不同的程序,每个程序都知道哪个 perl它应该运行。
当然,那些长路径输入太多了,所以我有一个程序可以在 ~/bin 中创建符号链接(symbolic link)。这样 ~/bin/cpan-5.x.y指出这一点。相同的程序采用它在 /usr/bin/perls/perl-5.x.y/bin 中找到的任何程序并制作类似的符号链接(symbolic link)。
rhich是我自己的 which - 采用正则表达式的程序:
$ rhich 5.32.0 | head -4
/Users/brian/bin/perls/pod_cover5.32.0 → /usr/local/perls/perl-5.32.0/bin/pod_cover
/Users/brian/bin/perls/ppodchecker5.32.0 → /usr/local/perls/perl-5.32.0/bin/ppodchecker
/Users/brian/bin/perls/prove5.32.0 → /usr/local/perls/perl-5.32.0/bin/prove
/Users/brian/bin/perls/plackup5.32.0 → /usr/local/perls/perl-5.32.0/bin/plackup
除此之外,它还会创建使用 -latest 的链接。而不是版本,所以我不必记住我所拥有的:
$ rhich latest | head -5
/Users/brian/bin/latest_sha1.pl
/Users/brian/bin/perls/perl-latest → /usr/local/perls/perl-5.32.0/bin/perl
/Users/brian/bin/perls/ptar-latest → /usr/local/perls/perl-5.32.0/bin/ptar
/Users/brian/bin/perls/ttree-latest → /usr/local/perls/perl-5.30.1/bin/ttree
/Users/brian/bin/perls/dprofpp-latest → /usr/local/perls/perl-5.14.4/bin/dprofpp
在那里的某个地方,我也只是让裸命令名指向最新的,这是我大部分时间想要的:
/Users/brian/bin/perls/perl → /Users/brian/bin/perls/perl-latest
错误的
而且,这是我所有的 perltidy安装:
$ rhich perltidy
/Users/brian/bin/perls/perltidy5.30.1 → /usr/local/perls/perl-5.30.1/bin/perltidy
/Users/brian/bin/perls/perltidy5.30.0 → /usr/local/perls/perl-5.30.0/bin/perltidy
/Users/brian/bin/perls/perltidy-latest → /usr/local/perls/perl-5.32.0/bin/perltidy
/Users/brian/bin/perls/perltidy5.28.0 → /usr/local/perls/perl-5.28.0/bin/perltidy
/Users/brian/bin/perls/perltidy5.26.1 → /usr/local/perls/perl-5.26.1/bin/perltidy
/Users/brian/bin/perls/perltidy5.30.2 → /usr/local/perls/perl-5.30.2/bin/perltidy
/Users/brian/bin/perls/perltidy5.32.0 → /usr/local/perls/perl-5.32.0/bin/perltidy
/Users/brian/bin/perls/perltidy → /Users/brian/bin/perls/perltidy-latest

关于perl - 如何使用多个版本的 Perl 在 Perl 模块中安装脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65253804/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com