1

現在のプロジェクトの既存の「レガシー」Perl コードと統合しています。CPAN 経由でいくつかのライブラリをダウンロードして Perl スクリプトで使用していますが、他のすべての開発者/ユーザーがこれらのライブラリを手動でインストールすることは避けたいと考えています。私の Ruby/Rails バックグラウンドからページを取得すると、依存関係をバージョン管理下にあるローカル ディレクトリに "アンパック" し、そこからライブラリをロードできるのではないかと考えました。利点は、(1) 誰も特定のパッケージを手動でインストールする必要がないこと、(2) 全員が同じバージョンを持っていることがわかり、そのバージョンを簡単に更新できることです。

簡単な方法を試し、インストール ファイルを./vendor/Perl/Pod/./vendor/Perl/DBD/./vendor/Perl/Win32/などに移動し、それに応じて調整し@INCました。これは一部のライブラリではうまくいきましたが、他のライブラリではうまくいきませんでした。コンパイルされたライブラリが問題と依存関係を引き起こしていると思います。

この問題を解決する解決策は既にありますか? その核心は、開発者間またはユーザー間の依存関係を手動で管理したくないということです (これは今やらなければなりません)。

私はPerlにあまり詳しくないので、無知であることをあらかじめお詫びします。

4

2 に答える 2

4

これにはlocal::libを使用します。環境変数をセットアップしてから、通常どおり CPAN モジュールをインストールし、ローカル ディレクトリにインストールすることができます。

次に、環境変数を他の開発者と共有するだけです。

編集

さまざまなユーザーがさまざまなオペレーティング システムを使用しているとコメントしました。コンパイルされたモジュールは、システムごとに再コンパイルする必要があります。

local::lib を使用することをお勧めします。必要な依存関係をインストールするプロジェクトのメイクファイルと組み合わせます。(Windows ユーザーが Strawberry Perl を使用していると仮定)

于 2010-02-17T16:19:06.827 に答える
2

現在のディレクトリは、モジュールの検索パスの一部です。したがって、モジュールをプロジェクトのツリーに直接配置できます。問題は、.検索するディレクトリのリストの最後に来ることです。そのため、あるモジュールの別のバージョンがシステムにインストールされている場合、予期しないアップグレード/ダウングレードが発生します。これは明らかに望ましくありません。

幸いなことに、この問題を回避する方法はたくさんあります。あなたは出来る:

  • PARを使用してモジュールのバンドルを管理します。
  • lib プラグマを使用して、検索するディレクトリのリストにディレクトリを追加します。
  • PERL5LIB 環境変数を設定して、ディレクトリ検索の動作を変更します。
  • -I オプションを指定してperl を起動し、ディレクトリをモジュール検索パスに追加します。
于 2010-02-17T16:20:18.900 に答える