2017-03-19 13 views
2

촉매 서버 스크립트 실행시 다음과 같은 문제가 있습니다.Perl 5.8.8 Catalyst 지원

Couldn't load class (Catalyst::Script::Server) because: "ensure_class_loaded" is not exported by the Catalyst::Utils module 
Can't continue after import errors at /opt/madhan/lib/perl5/Catalyst/ScriptRole.pm line 7. 
BEGIN failed--compilation aborted at /opt/madhan/lib/perl5/Catalyst/ScriptRole.pm line 7. 
Compilation failed in require at /usr/lib/perl5/site_perl/5.8.8/Module/Runtime.pm line 313. 
Compilation failed in require at /opt/madhan/lib/perl5/Catalyst/ScriptRunner.pm line 13. 
     Catalyst::ScriptRunner::find_script_class("Catalyst::ScriptRunner", "testsite", "Server") called at /opt/madhan/lib/perl5/Catalyst/ScriptRunner.pm line 42 
     Catalyst::ScriptRunner::run("Catalyst::ScriptRunner", "testsite", "Server") called at /opt/madhan/testsite/script/testsite_server.pl line 8 

perl 5.8.8은 Catalyst MVC를 지원합니까?

+3

* * 작동해야 함 - 버그라고 생각하며 관리자에게 이야기하고 있습니다. 그러나 5.8.8이 10 년 이상 된 것을 알고 있습니까? – hobbs

+0

사용중인 Catalyst 버전은 무엇입니까? ('perl -MCatalyst -le'print $ Catalyst :: VERSION'') – ikegami

+2

Perl은 두 버전 뒤로 지원됩니다. 오늘 마지막으로 공개 된 것은 5.24.1이므로 지원되는 버전은 5.20+입니다. :). 일부 긴 지원되는 배포판의 일부 공급 업체 (특히 RedHat)가 5.8.8을 사용하고 있음을 이해합니다. 그러나 요즘에는 손쉬운 유니 코드 처리가 필수 인 web-env의 업그레이드가 필요합니다. [plenv ] (https://github.com/tokuhirom/plenv) 또는 [anyenv] (https://github.com/riywo/anyenv)는 정말 쉽습니다. (단지 IMHO). – jm666

답변

6

이것은 Catalyst의 버그입니다. Catalyst :: ScriptRole에는 (2012 년 이후!) 일부 유형 검사 코드가 있습니다. 완전히 깨졌지만, 깨진 점은 특정 상황에서만 볼 수 있습니다. 즉, 스크립트가 아직 Catalyst® ScriptRole에 loader_class을 제공 한 경우 시스템에 매우 오래된 버전 인 UNIVERSAL.pm (예 : perl 5.8)이있는 경우로드 된 클래스 (가능성이있는 사용자가 아닐 것입니다)는 또는입니다. 이 두 번째 사건이 당신에게 달려 들었습니다.

이 문제를 해결하기 위해 Catalyst-Runtime에 패치를 적용했습니다. 잘하면 곧Catalyst-Runtime 5.90115에 포함되어 출시 될 예정이다.