4

いくつかのPerlモジュールに依存するアプリケーションをセットアップしようとしていますが、インストール先のサーバーにインターネット接続がありません。ppdファイルを介したオフラインモジュールのインストールについて読みましたが、すべての依存関係を1つずつ解決する必要があります。直接インターネットに接続していないことを考えると、さらに面倒です。

私は解決策を見つけたいと思っています。そこでは、ActivePerlをPCにインストールし、必要なすべてのライブラリをインストールしてから、ディレクトリをコピーしてサーバーに貼り付けます。いくつかの環境変数を修正するだけの問題であれば、それで問題ありません。変更する変数の決定的なリストを知りたいだけです。それが実行されることを意図されているコンピュータにperlライブラリをインストールすることが必須であるかどうかわからない?(1つは32ビットプラットフォームでもう1つは64ビットですが、サーバーはすでにさまざまな32ビットアプリケーションを実行しているので、大きな問題ではないことを願っています)最高の互換性のために、両方のシステムにActivePerlをインストールし、ライブラリをマージする予定です。ディレクトリは同一である必要があります。

4

2 に答える 2

5

答えはPerl FAQにありましたが、私の悪いところはうまくいきませんでした。

I copied the perl binary from one machine to another, but scripts don't work.
That's probably because you forgot libraries, or library paths differ.
You really should build the whole distribution on the machine it will
eventually live on, and then type "make install". Most other approaches
are doomed to failure.

One simple way to check that things are in the right place is to print
out the hard-coded @INC that perl looks through for libraries:

    % perl -le 'print for @INC'

If this command lists any paths that don't exist on your system, then
you may need to move the appropriate libraries to these locations, or
create symbolic links, aliases, or shortcuts appropriately. @INC is also
printed as part of the output of

    % perl -V

You might also want to check out "How do I keep my own module/library
directory?" in perlfaq8.
于 2012-08-22T10:07:00.340 に答える
1

このリンクから

場合によっては、どの方法を使用してもモジュールをインストールできないことがあります。これは、あなたが特に権限のないユーザーである場合に当てはまります。おそらく、何もする権利が与えられていないサーバー上の Web スペースを借りているのでしょう。

一部のモジュールでは、何もコンパイルせずにモジュールをインストールできるため、ファイルを所定の場所にドロップするだけで動作させることができます。多くの詳細には触れませんが、一部の Perl モジュールには他の言語 (C や C++ など) で記述された部分が含まれており、一部は Perl だけで記述されています。この方法が有効なのは後者のタイプです。どのように知ることができますか?パッケージに something.c と something.h という名前のファイルがない場合、それは Perl コードのみを含むモジュールである可能性があります。

このような場合は、ファイルを解凍して、モジュールを実行するディレクトリに *.pm ファイルだけをコピーできます。これがどのように行われるかを説明するには、2 つの例で十分です。

IniConf.pm は、.ini スタイルの構成ファイルから構成情報を読み取ることができる素晴らしい小さなモジュールです。IniConf.pm は Perl のみで書かれており、C 部分はありません。CPAN から取得した .tar.gz ファイルを解凍すると、いくつかのファイルが含まれていることがわかります。そのうちの 1 つが IniConf.pm です。実際に関心のあるファイルはこれだけです。そのファイルを、このモジュールを使用する Perl プログラムがあるディレクトリにコピーします。その後、モジュールが「正しく」インストールされた場合と同じように、次の行だけでモジュールを使用できます。

    use IniConf;

Time::CTime も非常に便利なモジュールで、好きな形式で時刻を出力できます。Perl だけで書かれており、C コンポーネントはありません。CTime.pm というファイルを Time というサブディレクトリに配置する必要があることを除いて、IniConf で行ったのと同じ方法でインストールします。コロンは、モジュールの編成を示すだけでなく、ファイル システムのディレクトリ構造も示します。

于 2010-06-01T11:53:42.357 に答える