使用本地 Perl 模块而不是 CPAN 安装的模块
Using local Perl module instead of one installed by CPAN
我发现有必要扩展 CPAN 模块。 (Unicode::CharName 升级到 Unicode 4.1;我需要一些来自 Unicode 5.0 和 5.1 的字符)。
我已经进行了必要的更改并拥有了自己的 CharName.pm 模块。
我现在想在我的各种 Perls 中使用它。我目前使用:
- 用于 Windows
的草莓 Perl
- git 用于 Windows MINGW64;我的 .bashrc 集
草莓 perl 和 $PERL5LIB=/c/Strawberry/perl/vendor/lib:/c/Strawberry/perl/site/lib
的 $PATH
- WSL Ubuntu
我应该把我的 Unicode::CharName 版本放在哪里,以便它覆盖 CPAN 安装的版本?
我不想更改当前
的任何脚本
use Unicode::CharName;
使用 cpanm 你可以下载模块,打补丁,然后正常安装:
$ cpanm --look Unicode::CharName
# new shell opens
$ patch lib/Unicode/CharName.pm custom.patch # or whatever process
$ perl Makefile.PL
$ make install
$ exit
您也可以将它安装到 local::lib 以避免全局覆盖它,方法是将 -l local/
选项添加到 cpanm
命令。然后你可以将这个 local::lib 的绝对路径添加到你的 PERL5LIB 或通过 -I
或 use lib
。如果您为 -l
选项指定 /path/to/local
,它将是 /path/to/local/lib/perl5
。
手动复制文件而不是通过正常的安装过程可能会导致问题。许多发行版依赖于安装过程来正确构建模块。此外,您需要为每个要使用它的 Perl 单独安装该模块;安装的 Perl 模块在 Perl 版本或架构之间通常 cross-compatible。 (一个严格简单的 pure-Perl 模块可以是这些规则的例外,但我觉得以这种方式滥用的唯一模块是 App::cpanminus,因为它就是为此而设计的。)
我发现有必要扩展 CPAN 模块。 (Unicode::CharName 升级到 Unicode 4.1;我需要一些来自 Unicode 5.0 和 5.1 的字符)。
我已经进行了必要的更改并拥有了自己的 CharName.pm 模块。
我现在想在我的各种 Perls 中使用它。我目前使用:
- 用于 Windows 的草莓 Perl
- git 用于 Windows MINGW64;我的 .bashrc 集 草莓 perl 和 $PERL5LIB=/c/Strawberry/perl/vendor/lib:/c/Strawberry/perl/site/lib 的 $PATH
- WSL Ubuntu
我应该把我的 Unicode::CharName 版本放在哪里,以便它覆盖 CPAN 安装的版本?
我不想更改当前
的任何脚本use Unicode::CharName;
使用 cpanm 你可以下载模块,打补丁,然后正常安装:
$ cpanm --look Unicode::CharName
# new shell opens
$ patch lib/Unicode/CharName.pm custom.patch # or whatever process
$ perl Makefile.PL
$ make install
$ exit
您也可以将它安装到 local::lib 以避免全局覆盖它,方法是将 -l local/
选项添加到 cpanm
命令。然后你可以将这个 local::lib 的绝对路径添加到你的 PERL5LIB 或通过 -I
或 use lib
。如果您为 -l
选项指定 /path/to/local
,它将是 /path/to/local/lib/perl5
。
手动复制文件而不是通过正常的安装过程可能会导致问题。许多发行版依赖于安装过程来正确构建模块。此外,您需要为每个要使用它的 Perl 单独安装该模块;安装的 Perl 模块在 Perl 版本或架构之间通常 cross-compatible。 (一个严格简单的 pure-Perl 模块可以是这些规则的例外,但我觉得以这种方式滥用的唯一模块是 App::cpanminus,因为它就是为此而设计的。)