Perl 模块安装在错误的根目录
Perl Module getting installed at wrong root dir
我正在尝试更新 perl-DBD-Pg 模块,但是当我尝试安装它时,它会进入错误的根目录。
Tar 我从 CPAN 下载并使用此命令安装的文件
perl Makefile.PL INSTALL_BASE=/usr/lib64/perl5/vendor_perl
我尝试使用 INSTALL_BASE 命令,但它也无济于事 我已将所有模块安装在
/usr/lib/perl5/vendor_perl/
像这样:
drwxr-xr-x. 2 root root 23 May 13 2021 Sys
drwxr-xr-x. 2 root root 142 May 13 2021 HTML
drwxr-xr-x. 8 root root 260 May 13 2021 DBI
drwxr-xr-x. 2 root root 19 May 13 2021 Readonly
drwxr-xr-x. 2 root root 34 May 13 2021 Digest
drwxr-xr-x. 3 root root 31 May 13 2021 Bundle
drwxr-xr-x. 5 root root 186 May 13 2021 DBD
drwxr-xr-x. 4 root root 86 May 13 2021 XML
但不是安装在 /usr/lib/perl5/vendor_perl/
,而是安装在 /usr/lib64/perl5/vendor_perl/lib/perl5/x86_64-linux-thread-multi
基本上我正在尝试更新我的 DBD perl 模块,该模块目前是 2.19 版,我们已经更新了 3.15 版,所以我正在尝试更新它
您可能应该使用
PERL_MM_OPT= PERL_MB_OPT= sudo cpan DBD::Pg
首先,你不应该安装在 vendor_perl
.
Perl 有三层安装目录:一层用于 Perl 的模块部分(“核心”),一层用于提供 perl
的组织提供的模块(“供应商”),一层用于模块安装最终用户(“站点”)。站点模块覆盖供应商模块,供应商模块覆盖核心模块。
您应该安装到站点目录中。该目录可以通过以下方式获取:
perl -V:installsitelib
对于来自 Ubuntu 20.04.3 LTS 的 perl
,那是
installsitelib='/usr/local/share/perl/5.30.0';
关于问题。
安装发行版不仅仅安装模块。
以下所有安装到不同的目录:
- 没有 build-specific 组件的模块
- 具有 build-specific 个组件的模块
- 没有 build-specific 组件的可执行文件
- 具有 build-specific 个组件的可执行文件
- 模块文档
- 可执行文件的文档
INSTALL_BASE="$base"
是一次提供所有这些位置的便捷方式。相当于
eval "$( perl -V:archname )"
INSTALLPRIVLIB="$base/lib/perl5" \
INSTALLARCHLIB="$base/lib/perl5/$archname" \
INSTALLSCRIPT="$base/bin" \
INSTALLBIN="$base/bin" \
INSTALLMAN3DIR="$base/man/man3" \
INSTALLMAN1DIR="$base/man/man1"
如果您希望使用其他模式,则需要单独指定它们。
(如果未提供,INSTALLARCHLIB
可能是从 INSTALLPRIVLIB
构建的?)
也就是说,您似乎想安装 system-provided Perl 的模块。在这种情况下,您应该什么都不提供。
PERL_MM_OPT= PERL_MB_OPT= ( perl Makefile.PL && make test && sudo make install )
我会使用以下内容,它还会安装任何必需的依赖项:
PERL_MM_OPT= PERL_MB_OPT= sudo cpan DBD::Pg
以下显示文件将安装到哪些路径:
for n in \
installsitelib \
installsitearch \
installsitescript \
installsitebin \
installsiteman3dir \
installsiteman1dir
do
perl -V:"$n"
done
对于来自 Ubuntu 20.04.3 LTS 的 perl
,那是
installsitelib='/usr/local/share/perl/5.30.0';
installsitearch='/usr/local/lib/x86_64-linux-gnu/perl/5.30.0';
installsitescript='/usr/local/bin';
iinstallsitebin='/usr/local/bin';
installsiteman3dir='/usr/local/man/man3';
installsiteman1dir='/usr/local/man/man1';
我正在尝试更新 perl-DBD-Pg 模块,但是当我尝试安装它时,它会进入错误的根目录。
Tar 我从 CPAN 下载并使用此命令安装的文件
perl Makefile.PL INSTALL_BASE=/usr/lib64/perl5/vendor_perl
我尝试使用 INSTALL_BASE 命令,但它也无济于事 我已将所有模块安装在
/usr/lib/perl5/vendor_perl/
像这样:
drwxr-xr-x. 2 root root 23 May 13 2021 Sys
drwxr-xr-x. 2 root root 142 May 13 2021 HTML
drwxr-xr-x. 8 root root 260 May 13 2021 DBI
drwxr-xr-x. 2 root root 19 May 13 2021 Readonly
drwxr-xr-x. 2 root root 34 May 13 2021 Digest
drwxr-xr-x. 3 root root 31 May 13 2021 Bundle
drwxr-xr-x. 5 root root 186 May 13 2021 DBD
drwxr-xr-x. 4 root root 86 May 13 2021 XML
但不是安装在 /usr/lib/perl5/vendor_perl/
,而是安装在 /usr/lib64/perl5/vendor_perl/lib/perl5/x86_64-linux-thread-multi
基本上我正在尝试更新我的 DBD perl 模块,该模块目前是 2.19 版,我们已经更新了 3.15 版,所以我正在尝试更新它
您可能应该使用
PERL_MM_OPT= PERL_MB_OPT= sudo cpan DBD::Pg
首先,你不应该安装在 vendor_perl
.
Perl 有三层安装目录:一层用于 Perl 的模块部分(“核心”),一层用于提供 perl
的组织提供的模块(“供应商”),一层用于模块安装最终用户(“站点”)。站点模块覆盖供应商模块,供应商模块覆盖核心模块。
您应该安装到站点目录中。该目录可以通过以下方式获取:
perl -V:installsitelib
对于来自 Ubuntu 20.04.3 LTS 的 perl
,那是
installsitelib='/usr/local/share/perl/5.30.0';
关于问题。
安装发行版不仅仅安装模块。
以下所有安装到不同的目录:
- 没有 build-specific 组件的模块
- 具有 build-specific 个组件的模块
- 没有 build-specific 组件的可执行文件
- 具有 build-specific 个组件的可执行文件
- 模块文档
- 可执行文件的文档
INSTALL_BASE="$base"
是一次提供所有这些位置的便捷方式。相当于
eval "$( perl -V:archname )"
INSTALLPRIVLIB="$base/lib/perl5" \
INSTALLARCHLIB="$base/lib/perl5/$archname" \
INSTALLSCRIPT="$base/bin" \
INSTALLBIN="$base/bin" \
INSTALLMAN3DIR="$base/man/man3" \
INSTALLMAN1DIR="$base/man/man1"
如果您希望使用其他模式,则需要单独指定它们。
(如果未提供,INSTALLARCHLIB
可能是从 INSTALLPRIVLIB
构建的?)
也就是说,您似乎想安装 system-provided Perl 的模块。在这种情况下,您应该什么都不提供。
PERL_MM_OPT= PERL_MB_OPT= ( perl Makefile.PL && make test && sudo make install )
我会使用以下内容,它还会安装任何必需的依赖项:
PERL_MM_OPT= PERL_MB_OPT= sudo cpan DBD::Pg
以下显示文件将安装到哪些路径:
for n in \
installsitelib \
installsitearch \
installsitescript \
installsitebin \
installsiteman3dir \
installsiteman1dir
do
perl -V:"$n"
done
对于来自 Ubuntu 20.04.3 LTS 的 perl
,那是
installsitelib='/usr/local/share/perl/5.30.0';
installsitearch='/usr/local/lib/x86_64-linux-gnu/perl/5.30.0';
installsitescript='/usr/local/bin';
iinstallsitebin='/usr/local/bin';
installsiteman3dir='/usr/local/man/man3';
installsiteman1dir='/usr/local/man/man1';