使用自制软件升级Perl版本时如何最好地处理以前安装的模块

使用自制软件升级Perl版本时如何最好地处理以前安装的模块,perl,homebrew,Perl,Homebrew,我经常遇到这种情况:我运行brew安装foobar,结果,Perl版本得到更新。每当发生这种情况时,我安装的Perl模块就再也找不到了,因为它们安装在/usr/local/ceral/Perl/5.32.0/lib/perl5/site\u Perl/5.32.0/中,新版本现在正在/usr/local/ceral/Perl/5.32.0/lib/perl5/site\u Perl/5.32.1/中查找 我已经安装了很多以前版本的模块,我不想全部重新安装(至少手动安装)。让以前安装的模块与新的P

我经常遇到这种情况:我运行
brew安装foobar
,结果,Perl版本得到更新。每当发生这种情况时,我安装的Perl模块就再也找不到了,因为它们安装在
/usr/local/ceral/Perl/5.32.0/lib/perl5/site\u Perl/5.32.0/
中,新版本现在正在
/usr/local/ceral/Perl/5.32.0/lib/perl5/site\u Perl/5.32.1/
中查找

我已经安装了很多以前版本的模块,我不想全部重新安装(至少手动安装)。让以前安装的模块与新的Perl版本一起工作的最佳方式是什么


对于上面这样一个小的版本更改,我大概可以将所有文件从
5.32.0
dir复制到
5.32.1_1
dir,但最好有一个更通用和/或更健壮的解决方案,用于更大的版本更改。

cpan
命令可以生成一个“自动绑定”文件。您可以使用先前安装中的
cpan
来执行此操作:

$ cpan -a
Creating autobundle in /Users/brian/.cpan/Bundle
Reading '/Users/brian/.cpan/Metadata'
  Database was generated on Fri, 19 Mar 2021 05:41:03 GMT

Package namespace         installed    latest  in CPAN file
Algorithm::C3                  0.11      0.11  HAARG/Algorithm-C3-0.11.tar.gz
Algorithm::Cron                0.10      0.10  PEVANS/Algorithm-Cron-0.10.tar.gz
Algorithm::Diff              1.1903     1.201  RJBS/Algorithm-Diff-1.201.tar.gz
...
version::regex               0.9924    0.9928  LEONT/version-0.9928.tar.gz
vmsish                         1.04      1.04  SHAY/perl-5.32.1.tar.gz
warnings                       1.47      1.47  SHAY/perl-5.32.1.tar.gz
warnings::register             1.04      1.04  SHAY/perl-5.32.1.tar.gz

Wrote bundle file
    /Users/brian/.cpan/Bundle/Snapshot_2021_03_20_00.pm
在该文件的顶部,有关于安装它的说明。使用新安装的
cpan
处理此部件:

package Bundle::Snapshot_2021_03_20_00;

$VERSION = '0.01';

1;

__END__

=head1 NAME

Bundle::Snapshot_2021_03_20_00 - Snapshot of installation on otter on Sat Mar 20 00:19:35 2021

=head1 SYNOPSIS

perl -MCPAN -e 'install Bundle::Snapshot_2021_03_20_00'
但我很少这样做。当我安装一个新的perl并希望在其上使用一个新项目时,我会安装这个项目。那个项目安装它需要的任何东西。我喜欢新的开始,而不是带着我可能不再使用的东西


另外,请注意,
cpan
会安装您所需的最新版本。如果您需要特定版本,
cpanm
更易于处理。在这种情况下,您可以考虑使用<代码> cPerfFrase/Cuffer>来锁定您想要的内容。

Perl维护次要版本之间的二进制向后兼容性。因此,如果这两个
perl
是使用相同的设置(例如线程)构建的,那么您可以在上面复制文件。(事实上,在构建5.32.1_1时,您可以告诉它将5.32.0的文件夹添加到搜索列表中。)谢谢,这与我正在寻找的类似。对于子孙后代,请注意autobundle需要使用先前版本的Perl运行—例如,
/usr/local/ceral/Perl/5.32.0/bin/Perl-MCPAN-e“autobundle”
。另外,新版本Perl的捆绑包的安装花费了一段时间,部分原因是它不断地停止输入。看起来有一些cpan选项可以帮助实现这一点,例如
o conf inactive\u timeout 1
o conf allow\u installing\u module\u降级0
o conf allow\u installing\u过时的\u dists 0
,和/或env vars
PERL\u MM\u USE\u DEFAULT=1
PERL\u CANARY\u STABILITY\u NOPROMPT=1