我正在尝试在 Google Colab(Ubuntu 环境)中安装和加载几个 Perl 模块。我正在使用 CPAN 安装它们,然后使用Environment Modules加载它们。我绝对需要使用环境模块来加载它们(例如,我的脚本运行的命令之一是module load Perl
),但如果有更好的选择,我不需要使用 CPAN 来安装它们。
首先我用 CPAN 安装了 Perl 模块:
PERL_MM_USE_DEFAULT=1 cpan GD ExtUtils::PkgConfig DBI DBD::mysql DBD::SQLite Capture::Tiny Exporter Log::Message::Simple Getopt::Long \
List::Util List::MoreUtils IO::File XML::Writer XML::LibXML XML::Parser XML::LibXML::Reader \
Data::Dumper File::Slurp JSON Storable Scalar::Util Array::Utils Config::IniFiles \
Statistics::Descriptive GD::Graph::boxplot
然后,跑步perldoc perllocal
给了我以下信息:
Tue Jul 28 01:16:13 2020: "Module" App::cpanminus
* "installed into: /usr/local/share/perl/5.26.1"
* "LINKTYPE: dynamic"
* "VERSION: 1.7044"
* "EXE_FILES: bin/cpanm"
Tue Jul 28 01:16:30 2020: "Module" Net::SSLeay
* "installed into: /usr/local/share/perl/5.26.1"
* "LINKTYPE: dynamic"
* "VERSION: 1.88"
* "EXE_FILES: "
Tue Jul 28 01:16:32 2020: "Module" Mozilla::CA
* "installed into: /usr/local/share/perl/5.26.1"
* "LINKTYPE: dynamic"
* "VERSION: 20200520"
* "EXE_FILES: "
...
但是,当我运行source /etc/profile.d/modules.sh && module avail
列出可用于加载的模块时,我刚刚安装的模块没有显示,我只得到以下信息(不知道为什么相同的东西打印两次):
------------------------ /usr/share/modules/modulefiles ------------------------
dot module-git module-info modules null use.own
------------------------ /usr/share/modules/modulefiles ------------------------
dot module-git module-info modules null use.own
所以我想我需要添加/usr/local/share/perl/5.26.1
到modulepath
它以找到已安装的模块。但是当我尝试这样做module use --append /usr/local/share/perl/5.26.1
然后module avail
再次运行时,我得到与上面相同的输出,表明该目录尚未添加。
环境模块与模块文件一起使用,这些文件是用 Tcl 编写的描述环境变化的脚本(例如向环境变量添加目录)。
您可以查看
/usr/share/modules/modulefiles/dot
您的设置以查看模块文件的示例。在您的情况下,您安装 Perl 模块,但是一旦安装,就没有模块文件可以在 Environment Modules 上下文中桥接它们。
它们可能是环境模块和 Perl 模块之间的混淆。环境模块可能有助于定义环境变量以访问您已安装的 perl 模块(例如,通过将
/usr/local/share/perl/5.26.1
目录添加到PERL5LIB
环境变量,请参见perllocal
下面的模块文件示例)但环境模块不会让您看到已安装的 Perl 模块./usr/share/modules/modulefiles/perllocal
: