你知道site_perl和vendor_perl的区别吗
其实,鄙人写这段文字前也不知道。site_perl和vendor_perl是Perl模块部署一套官方的机制。它使得适用于整个OS范围的非官方Perl程序模块的部署更加有序。site_perl用于存放内部开发(in-house development)的模块,vendor_perl则是供应商开发的模块。这里的供应商未必一定是商业公司,也可以是一些开源组织。这些模块不是用户自己开发的,也没有包含在标准的Perl模块或CPAN中。
不同系统上,site_perl和vendor_perl的具体路径千差万别,但是site_perl一定比vendor_perl更加优先,而vendor_perl则比标准库更优先。vendor_perl在某些系统上并不设置。要查看site_perl和vendor_perl可以用perl -V:vendorlib 或 perl -V:sitelib命令。例如,在MacOS X中vendor_perl和site_perl分别如下:
$ /usr/bin/perl -V:vendorlib
vendorlib='/Network/Library/Perl/5.16';
$ /usr/bin/perl -V:sitelib
sitelib='/Library/Perl/5.16';
而在Fedora 20上则是:
$ /usr/bin/perl -V:sitelib
sitelib='/usr/local/share/perl5';
$ /usr/bin/perl -V:vendorlib
vendorlib='/usr/share/perl5/vendor_perl';
可见Fedora系统把site_perl设置到/usr/local下,这是遵循/usr/local安装用户自定义的软件同行惯例。
最后,如果要在脚本中获知site_perl或vendor_perl的位置,可以用
site_perl=$(eval `perl -V:sitelib`; echo $sitelib)
vendor_perl=$(eval `perl -V:vendorlib`; echo $vendorlib)
页:
[1]