4

dotcloudにデプロイしようとしています。私のMakefile.PLは、URI1.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クライアントでこの問題が発生したことはありません。

ありがとう、アルベルト

4

1 に答える 1

2

この動作の理由は非常に単純ですが、非常に愚かでもあります。ここで、dotcloudの人々はより専門家になり、Perlスタックをより適切に構成することができます。

そのため、dotcloud.yamlファイルでperl5.14.xのインストールをリクエストします。これは、必要なバージョン(私の場合は/opt/perl5/perls/perl5.14.x/)を指すシンボリックリンクを/ opt / perl5 / perls/currentに追加することによって行われます。Perl Webスタックの場合、このperlが最初に検索されるように環境が設定されます。

cronジョブまたはdotcloudクライアントの実行オプションを介してperlを実行すると、応答するperlはシステム内のperl(/ usr / bin / perl)、つまりperlバージョン5.10.xになります。したがって、perl 5.14.xバージョンでシステム全体にインストールされたモジュールは使用できません(perl5ホームディレクトリにインストールするように強制すると、両方のバージョンで使用できるようになります)。

解決策は、正しいパスでperlバイナリを呼び出すか、標準のシェル環境(Web環境とは異なるようです)のPATH環境変数を正しく構成することです。

dotcloudの人々がこれをより透明にすることができれば素晴らしいでしょう。1つのオプションは、この問題を文書化することです。別のオプションは、Web環境と同じperlを使用するようにシェル環境を設定することです。それはそれほど難しいことではないはずです。

アルベルト

于 2012-11-24T20:20:32.297 に答える