使用自制软件升级 Perl 版本时如何最好地处理以前安装的模块
How best to handle previously installed modules when upgrading Perl version with homebrew
我 运行 经常进入这个:我 运行 一个 brew install foobar
结果,Perl 版本得到更新。每当发生这种情况时,我安装的 Perl 模块就再也找不到了,因为它们安装在 /usr/local/Cellar/perl/5.32.0/lib/perl5/site_perl/5.32.0/
中,而新版本现在正在 /usr/local/Cellar/perl/5.32.0/lib/perl5/site_perl/5.32.1_1/
.
中查找
我 have/had 以前版本安装了大量模块,我宁愿不重新安装所有模块(至少手动安装)。让以前安装的模块与新的 Perl 版本一起工作的最佳方法是什么?
对于上面这么小的版本更改,我大概可以将所有文件从 5.32.0
目录复制到 5.32.1_1
目录,但最好有一个更通用的 and/or 版本变化较大时的稳健解决方案。
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
更容易处理。而且,在这种情况下,您可以考虑使用 cpanfile
来准确锁定您想要的内容。
我 运行 经常进入这个:我 运行 一个 brew install foobar
结果,Perl 版本得到更新。每当发生这种情况时,我安装的 Perl 模块就再也找不到了,因为它们安装在 /usr/local/Cellar/perl/5.32.0/lib/perl5/site_perl/5.32.0/
中,而新版本现在正在 /usr/local/Cellar/perl/5.32.0/lib/perl5/site_perl/5.32.1_1/
.
我 have/had 以前版本安装了大量模块,我宁愿不重新安装所有模块(至少手动安装)。让以前安装的模块与新的 Perl 版本一起工作的最佳方法是什么?
对于上面这么小的版本更改,我大概可以将所有文件从 5.32.0
目录复制到 5.32.1_1
目录,但最好有一个更通用的 and/or 版本变化较大时的稳健解决方案。
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
更容易处理。而且,在这种情况下,您可以考虑使用 cpanfile
来准确锁定您想要的内容。