7

マシンへの特定のPerlインストールで最初に提供されたモジュールをどのように知ることができますか?

(これは重複で はありません:Perlモジュールがコアであるか標準インストールの一部であるかを確認するにはどうすればよいですか? (「Perlモジュールがコアであるか標準インストールの一部であるかを確認するにはどうすればよいですか?」)-事実それからのスピンオフの質問)

もともとインストールに付属していたもの、そのインストールの一部として提供されたモジュール、組み込みのものを探しています。それ以来インストールされているものではありません。

これをどのPerlバージョンでも動作させたいです。

私はこれができるようになりたいです:

  • インストールされているマシン上のPerlプログラム自体/コマンド内でスクリプトを使用する。したがって、このために、私はインストールに依存して、元々何があったかについて何らかの形で記録を残します。
  • インストールする前に、ダウンロードしたパッケージで。どんなモジュールがあるのか​​聞いてください。

私がこれをしたい理由は次のとおりです。

  • Perlがインストールされているマシンで実行するソフトウェアを作成するときにデフォルトとして期待できるモジュールと、デフォルトではないモジュールを追加する必要があるかどうかを知りたい
  • 元のインストーラーイメージ/パッケージを保持するか、正確なものをオンラインで再度取得する方法を知っている場合、どのモジュールが存在し、どのモジュールが存在しないかを知っている複数のマシンに対して、繰り返し可能な一貫したPerlインストールがあります。
  • 私のPerlソフトウェアは、ソフトウェアに必要なものを正確に定義するのが簡単なので、明確に定義された展開手順を持ちます
  • 組織内にポリシーが設定されているため、Perlバージョンを簡単に更新/アップグレードできない場合があります(これはそのままです。これについては副次的な議論はしたくありません)。このようなポリシーは、メリットを上回る可能性のある新しいソフトウェアにアップグレードするリスクが常に存在するため、正当化できます。したがって、開発者は、何が利用可能になると期待できるかを知る必要があります。

私がこの質問をする理由は、どのPerlバージョンでも、マシンのデフォルトインストールに存在すると予想されるモジュールを定義する全体的な標準インストールを見つける自動化された方法がないように見えるためです-質問を参照してください: Perlモジュールがコアなのか標準インストールの一部なのかをどうやって見分けることができますか? (「Perlモジュールがコアであるか標準インストールの一部であるかをどのように判断できますか?」)

Perlのバージョンは、どのモジュールが存在するかどうかを通知するために信頼することはできません。確かに、あなたに教えてくれるドキュメントがオンラインにあるかもしれません。しかし、ダウンロード/インストールしたリリースでこれを行う自動化された方法が必要です。異なるLinux/Unixディストリビューション上の同じPerlバージョンでさえ、異なる可能性があります。

4

3 に答える 3

6

DebianまたはUbuntuの場合、次を使用できます

$ dpkg --listfiles perl | grep '\.pm$'

Redhatの場合:

$ rpm -ql perl | grep '\.pm$'
于 2010-01-18T16:27:55.393 に答える
6

一般的にはできません。それを受け入れて別の角度から問題に取り組むと、フラストレーションが大幅に減ります。Module :: CoreListは、最低限、すべてのインストールに含まれるべきもののリストを提供しますが、ベンダーはそれに準拠する必要はなく、ほとんどのディストリビューションには、コアの一部ではない多くのモジュールが含まれています。各ディストリビューションのどのバージョンに何が含まれているかについて独自のデータベースを構築することを除けば(困難な作業)、あまり希望はありません。ディストリビューションに付属しているモジュールであっても、インストールされているバージョンが異なる場合があることに注意してください。

私はこれにアプローチするいくつかの異なる方法を見ることができます:

  1. 開発時にターゲットがわかっている場合(たとえば、ActivePerlの特定のバージョン)、それに基づいて決定を下すことができます。
  2. 一般的なケースでは、モジュールのようにアプリケーションをデプロイし、依存関係を指定します。たとえば、Module :: Buildrequiresを使用して、Build.plスクリプトのセクションに前提条件をリストし ます。cpanシェルは、依存関係を自動的に追跡して解決できます。
  3. この問題を完全に回避したい場合は、PARPar::Packerを使用して自己完結型のデプロイメントバンドルを作成してください。
于 2010-01-18T16:49:37.343 に答える
0

インストールに元々付属していたもの、そのインストールの一部として提供されたモジュール、組み込みのものを探しています。それ以来インストールされているものではありません。

非コアモジュールの場合は、perllocal.podを解析して、Perlインストール自体と一緒にインストールされたモジュールの最初のバッチを日付に基づいて後のバッチから分離することができます。次のような行を探しています。

=head2 Wed Apr 30 15:40:38 2008: C<Module> L<URI|URI>

したがって、最初のいくつかは、おそらくPerl自体とともにインストールされ、同じ日付である必要があります(もちろん同じ時間ではありませんが)。24時間以上の差で設置されたものがあなたが探しているものでしょう。

私の意見では、あなたがリンクした前の質問で得た答えは満足のいくものですが、明らかにあなたはそうは思わなかったので、コアモジュールについてはよくわかりません。おそらく私は何かが欠けています:)

乾杯、申し出

于 2010-01-18T14:12:16.720 に答える