perl - 使用 homebrew 升级 Perl 版本时如何最好地处理以前安装的模块

标签 perl 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/ .
我已经/已经安装了大量与以前版本一起安装的模块,我宁愿不重新安装所有模块(至少手动安装)。让以前安装的模块与新的 Perl 版本一起工作的最佳方法是什么?
对于上面这么小的版本更改,我大概可以只复制 5.32.0 中的所有文件。目录 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更容易处理。而且,在这种情况下,您可以考虑使用 cpanfile锁定你想要的东西。

关于perl - 使用 homebrew 升级 Perl 版本时如何最好地处理以前安装的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66716801/

相关文章:

python - 无法使用 python 将参数传递给 perl 脚本

mysql - 使用 SHA-256 身份验证的 Perl DBD mysql 失败

java - Mac 上的 Neo4j : Prevent org. neo4j.server.Bootstrapper 出现在 dock 中

python - 如何链接 home brew python 版本并将其设置为默认值

postgresql - 无法使用brew 安装postgres。无论我尝试什么命令,都会得到 "FATAL: role "postgres“不存在”

perl - 如何在 DBIx::Class 中获取表的类名

perl - C 中 return 和 continue 关键字的 Perl 等价物是什么?

perl - Path::Class::File 或::Dir & Moose 初始化和强制

macos - 在Mac OS X上更新youtube-dl

git - brew 更新 : The following untracked working tree files would be overwritten by merge: