perl – 模块(不是?)正在安装,因为它是最新的(是吗?)
我正在尝试部署到dotcloud.
我的Makefile.PL指出我需要URI 1.60. development.yml文件也说明了这一点.构建器声称已安装该模块. 18:38:39: [www] I am snapshotsworker_02/bob-3,and I will be your builder today. 18:38:55: [www] URI is up to date. (1.60) 如果我跑 dotcloud run www -- perl -MURI -e '1' 它失败了 Can't locate URI.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .). BEGIN failed--compilation aborted. 这可能是正确的,因为通常模块安装在?/ perl5下.所以,我尝试过: $dotcloud run www -- perl -I /home/dotcloud/perl5/lib/perl5 -MURI -e '1' ==> Executing "perl -I /home/dotcloud/perl5/lib/perl5 -MURI -e 1" on service (www) instance #0 (application XXXX) Can't locate URI.pm in @INC (@INC contains: /home/dotcloud/perl5/lib/perl5 /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .). BEGIN failed--compilation aborted. 同样奇怪的是cpanm不可用,虽然文档说我们可以使用它: $dotcloud run www -- cpanm URI ==> Executing "cpanm URI" on service (www) instance #0 (application XXXX) bash: cpanm: command not found 任何提示? 编辑:这个模块似乎没有问题.和LWP一样.然后,更奇怪的是,HTTP :: Date是对LWP的依赖.某些东西在模块依赖项上无法正常工作.我从来没有遇到旧版本的dotcloud客户端的这个问题. 谢谢, 解决方法
这种行为的原因很简单,但也很愚蠢.在这里,dotcloud的人可能会更专业,并且可以更好地配置Perl堆栈.
所以,在我的dotcloud.yaml文件中,我请求安装perl 5.14.x.这是通过在/ opt / perl5 / perls / current中添加指向我想要的版本的符号链接(在我的例子中为/opt/perl5/perls/perl5.14.x/)来完成的.对于Perl Web堆栈,环境的设置方式是首先搜索此perl. 当我通过cron作业或通过dotcloud客户端的运行选项运行perl时,回答的perl是系统中的perl(/usr/bin/perl),即perl版本5.10.x.因此,在perl 5.14.x版本中系统安装的模块不可用(当我强制它们安装到perl5 home目录时,它们可用于两个版本). 解决方案是使用正确的路径调用perl二进制文件,或者为标准shell环境正确配置PATH环境变量(这似乎与Web环境不同). 如果dotcloud的人们更加透明,那就太好了.一种选择是记录此问题,另一种选择是将shell环境设置为使用与Web环境相同的perl.这不应该那么难. 阿尔贝托 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |